
15/02/2005, 10:58
|
 | | | Fecha de Ingreso: septiembre-2000 Ubicación: Frente a la compu
Mensajes: 660
Antigüedad: 24 años, 8 meses Puntos: 2 | |
No yo creo que es mas fàcil mamon, que crear tablas temporales ya que armando un buen SQL todos los resultados quedan en tu RecordSet.
a lo que yo me refiero es que es complicado porque para mi lo fue, te cuento... Historia de un buscador:
Hace poco me topé con la necesidad de hacer un buscador y yo pensé que con un simple LIKE de SQL lo iba a solucionar, entonces escribí mi sentencia " SELECT * FROM T_documentos WHERE contenido LIKE '%"&palabra&"%' "
Y funcinò a medias porque la primera busqueda funcionó perfecto, pero luego quiese buscar una palabra con Acento (tilde) por ejemplo: "información" y mi super buscador no regreso nada, pero yo sabía que la palabra estaba ahí.
y luego un sudor frio recorrio mi frente y pensé (¿y si la palabra empieza con mayuscula?) ý ahí me dí cuenta de que nesecitaba hacer algo mas. buscando en el foro me encontrè con varias respuestas, que si quita el keysensitive de la base de datos que si haz una función para agregar los acentos, en fin....
terminè haciendo una funciòn que quitara la vocal acentuada y me la cambiara por un comodín de Informix para un solo caracter (en este caso el guión bajo "_" ) quedando la palabra así: "Informaci_n" (creo que el comodín para un sólo caracter en otros SQL's es el ?)
y mi SQL así: " SELECT * FROM T_documentos WHERE contenido LIKE '%"&Ucase(palabra)&"%' OR contenido LIKE '%"&Lcase(palabra)&"%' "
asi me busca en mayusculas, minusculas y con acentos y sin acentos
con respecto a lo que dice masser de buscar en todas las tablas pues tendría que hacer asi una funciòn que recupere el nombre de las tablas de la base de datos:
[extraido de la biblioteca de funciones, y modificada]
<!-- #INCLUDE File="adovbs.inc" -->
<script runat=server LANGUAGE="VBSCRIPT">
Dim oConn,rstSchema
Set oConn = Server.CreateObject("ADODB.Connection")
Set rstSchema = Server.createobject("ADODB.Recordset")
oConn.Open ("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("TU BASE DE DATOS.mdb"))
Set rstSchema = oConn.OpenSchema(adSchemaTables)
no_tabla=1
Do Until rstSchema.EOF
nombre_tablas(no_tabla)= rstSchema("TABLE_NAME")
no_tabla=no_tabla+1
rstSchema.MoveNext
Loop
rstSchema.Close
oConn.Close
</script>
y ya teneindo el arreglo con los nombres haría algo asi:
SQL=" SELECT * FROM "
For i=1 to no_tabla
SQL=SQL&nombre_tabla(i)&","
Next
SQL=SQL&" WHERE contenido LIKE '%"&Ucase(palabra)&"%' OR contenido LIKE '%"&Lcase(palabra)&"%' "
Ups, lleguè un poco tarde
__________________ Si quieres que las cosas sucédan
provocalas!
Última edición por akela; 15/02/2005 a las 11:24 |