FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
busqueda incremental
Hola, estoy realizando una búsqueda en forma incremental en Delphi 7 y MySQL.
Estoy usando 1Edit, 1DBGrid, 1DataSource, 1ADOQuery. En el ADOQuery coloco la siquiente sentencia sql: select * from empleados order by apellido asc Para que en el DBGrid aparesca la información de la tabla de empleados ordenada por apellido en forma ascendente. Para realizar la búsqueda en forma incremental pongo el siguiente código en el evento OnChange del Edit. With ADOQuery 1 do begin Close; SQL.Clear; SQL.Add('select * from empleados where apellido like'+Char(39)+Edit1.Text+'%'+Char(39)); Open; end; Cuando realizo la búsqueda la primera vez no hay problema, pero cuando quiero realizar una nueva busqueda y borro el apellido que habia puesto en el Edit, la información que estaba en el DBGrid ordenada en forma ascendente aparece desordenada (recuerden que en ADOQuery le habia puesto una sentecia sql para ordenarla en forma ascendete). Como debo hacer para que la infomación que muestro en el DBGrid se mantenga siempre ordenada en forma ascendente por apellido, a un cuando realice una busqueda incremental? Espero haber sido claro y muchas gracias por su atención. |
#3
|
|||
|
|||
Has eliminado el order by...
Piensa que has modificado el query del objeto sin un order by.
Al modificar el edit tiene la sentencia sql : SELECT * FROM EMPLEADOS WHERE APELLIDO LIKE '+QuotedStr(Edit1.Text + '%'); Que no tiene ningún "order by" Cámbiala por esto : SELECT * FROM EMPLEADOS WHERE APELLIDO LIKE '+QuotedStr(Edit1.Text + '% ORDER BY APELLIDO ASC'); |
#4
|
||||
|
||||
Cita:
|
#5
|
|||
|
|||
Ok, gracias voy a intentarlo.
Saludos. |
#7
|
|||
|
|||
Hola, intente poniendo el nuevo código, y al compilarlo noy problema.
Pero cuando escribo algún apellido en el Edit para realizar la búsqueda, se borra toda la información que habia en el DBGrid y no muestra nada. Cual puede ser el problema? Nuevamente gracias y saludos. |
#8
|
||||
|
||||
Cita:
¿ Podrías poner el código del evento OnChange tál como lo escribiste ? Saludos. |
#9
|
|||
|
|||
Hola, este es el codigo que pongo en el evento OnChange:
With ADOQuery1 do begin Close; SQL.Clear; SQL.Text:='select * from empleados where apellido like '+QuotedStr(Edit1.Text+'% order by apellido asc'); Open; end; Gracias y saludos. |
#10
|
||||
|
||||
Hola
Sabes lo que es concatenar?. Saludos
__________________
Siempre Novato |
#11
|
||||
|
||||
Cita:
Copia y pegá esta línea tal cuál está.
A mí me funciona perfectamente. Saludos. Última edición por ecfisa fecha: 23-08-2010 a las 01:32:34. |
#12
|
|||
|
|||
Hola ecfisa, muchas gracias, volví a escribir el código tal cual me dijiste y ahora funciona muy bien.
Nuevamente gracias y saludos. |
#13
|
||||
|
||||
De nada lucas.
Aprovecho para aclararte que cometí una omisión intencional: No especifiqué el sentido del orden ASC por que lo asume por defecto, aunque el acentuarlo, hace más legible el sentido del ordenamiento al leer el código. Si lo querés en sentido descendente tenés que utilizar indefectiblemente: DESC Saludos. Última edición por ecfisa fecha: 23-08-2010 a las 05:05:48. |
#14
|
||||
|
||||
iba a comentar algo sobre este tipo de búsquedas y el costo en velocidad y tráfico hacía el servidor que tiene, pero me encontré que los chicos de google parece que ya lo resolvieron:
aquí
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
#15
|
||||
|
||||
Cita:
¿ Se te ocurre alguna idea de como lo han implementado ? Por que hasta donde he probado las busquedas incrementales son bastante ineficientes... Saludos. |
#16
|
||||
|
||||
ASi es eficsa...solo son útiles con unos cuantos cientos de registros pero conforme la cosa crece se va poniendo muy canija. Es por eso muy "novedoso" como lo habrán implementado los de Google, aunque claro con la potencia de cómputo que tienen ayuda bastante.
Antes eran famosas estas búsquedas, cuando solo incluía tablas locales de unos cuantos cientos de registros (en Clipper llegué a hacer algo igual, hace mil años, claro) pero cuando ya hablamos de miles y hasta millones de registros resulta ocioso esto. Prefiero más el enfoque de escribir una frase y hasta tenerla lista aplicar un "like % %" para obtener todos los que contengan lo buscado. En aplicaciones administrativas (facturación, clientes, etc.) es mucho más común que el usuario solo recuerde alguna parte de todo el nombre que como empieza..."Me acuerdo que era un tal 'Fernandez'", "creo que era algo de 'aceros'" y así...Al final el usuario se siente más como si usara un buscador de internet, además de que a lo largo del uso se irán dando de alta nombres muy similares por lo que por ejemplo: Sean los nombres: Código:
COMERCIOS ORGANIZADOS COMERCIALIZADORA DE GANADO COMERCIAL DE SEGUROS COMERCIANTES UNIDOS COMERCIALES S.A. COMERCIALIZADORA LA BOMBITA COMERCIAL DE NEUMATICOS COMERCIANTES S.A. Código:
"COMERSIALISADORA LA BOMBITA" Solo un apunte.
__________________
AKA "El animalito" ||Cordobés a mucha honra|| |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Busqueda incremental con ComboBox | Lenny | Varios | 2 | 18-05-2010 01:02:34 |
busqueda incremental con mysql | schaka | SQL | 2 | 09-02-2008 04:56:06 |
Incremental en red | jgmarduel | Conexión con bases de datos | 3 | 19-12-2005 15:52:36 |
Consulta Busqueda Incremental | Gustavo Gowdak | SQL | 1 | 13-12-2004 09:27:08 |
busqueda incremental con ado | slat | Conexión con bases de datos | 1 | 11-07-2004 18:32:52 |
|