Foros del Web » Programando para Internet » ASP Clásico »

Sugerencia sobre proceso

Estas en el tema de Sugerencia sobre proceso en el foro de ASP Clásico en Foros del Web. Tengo una tabla con "documentos" (los documentos, zip, doc, xls, etc se guardan en el sistema de archivos y su referencia en la tabla). Esta ...
  #1 (permalink)  
Antiguo 16/11/2005, 11:35
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Sugerencia sobre proceso

Tengo una tabla con "documentos" (los documentos, zip, doc, xls, etc se guardan en el sistema de archivos y su referencia en la tabla). Esta tabla tiene un campo "keywords" donde están las palabras clave (o temas) de cada documento separadas por comas (ej: "Ingeniería financiera, Infraestructura, Financiamiento, Fideicomiso").

Me piden que liste en un <select multiple> la totalidad de keywords de la tabla pero cada uno de los elementos de "éste array separado por comas" de manera individual.

Para ello, se me ocurrió hacer lo siguiente:

1- Borro el contenido de una tabla temporal (la primera vez no estará vacía, pero las siguientes tendrá contenido. llamémosla "tbl_keywords_TMP")
2- Recorro la lista de palabras claves de todos los registros de la tabla de documentos y los concateno en una variable separándolos por comas. Luego le hago un split por la coma y genero un array de keywords.
3- Inserto cada elemento del array en la tabla temporal que borré en el paso 1 (tbl_keywords_TMP)
4- Le hago un drop a la tabla que almacena definitivamente los keywords (llamémosla "tbl_keywords")
5- Una vez borrada ésta tabla, hago un SELECT INTO tbl_keywords form tbl_keywords_TMP group by campo_Keywords
El "group by" sería necesario porque pueden existir keywords duplicados (que los hay, a patadas)

Luego, cuando necesite consultar los keywords lo hago sobre la tabla "tbl_keywords"

Les parece correcto el palnteo o se les ocurre soluciones que requieran menos passos?

Gracias

PD: El proceso se hará manualmente cuando el "operador" lo considere oportuno o se acuerde de hacerlo :p
__________________
...___...
  #2 (permalink)  
Antiguo 16/11/2005, 13:02
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 2 meses
Puntos: 535
Bueno, finalmente así lo hice y funciona:

Código:
ConnOn()

SQLDelTMP = "DELETE FROM srv_doc_pclavesTMP"
Conn.Execute SQLDelTMP

Set Rs = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT Keywords FROM srv_doc"
rs.Open SQL, Conn

Keywords = ""
While NOT Rs.EOF
	Keywords = Keywords & Rs("Keywords") & ","
Rs.MoveNext
Wend

Cierra(Rs)

Keywords = Replace(Keywords, ", ", ",")
Keywords = Left(Keywords, Len(Keywords) - 1)

arr_Keywords = Split(Keywords, ",")

For i = 0 to UBound(arr_Keywords)
	SQLInsertTMP = "INSERT INTO srv_doc_pclavesTMP (Keywords) VALUES ('"& arr_Keywords(i) &"')"
	Conn.Execute SQLInsertTMP
Next

SQLDrop = "DROP TABLE srv_doc_pclaves"
Conn.Execute SQLDrop

SQLInsertFinal = "SELECT Keywords INTO srv_doc_pclaves FROM srv_doc_pclavesTMP GROUP BY Keywords"
Conn.Execute SQLInsertFinal

ConnOff()

Pero de lo que me estoy dando cuenta es que no necesito 2 tablas, sino sólo una. O sea, no necesito eliminar los keywords duplicados si cuando consulto esa tabla le hago el GROUP BY (y de paso, puedo informar la cantidad de documentos asociados a cada keyword... aunque eso no me lo pidieron )
__________________
...___...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:46.