![]() |
Búsquedas y TIBDataSet
hola a todos, como siempre aqui les traigo una duda o mejor dicho varias.
Para programar una buena aplicación en cliente/servidor se tiene que tomar en cuenta el tráfico de la red, pensando en eso yo relice dos tipos de busquedas y no se cual es la mas eficiente, me podrian dar alguna mano por favor. Las busquedas consisten en buscar y seleccionar los datos un cliente de la tabla personas, pero esta búsqueda se debe llevar a cabo en el evento OnChange de un Edit para que el usuario pueda ver en un DBGrid las apróximaciones del nombre del cliente, es decir que si a pulsado una 'P' aparescan en el DBGrid todos los usuarios que enpiecen con la letra 'P' y si presiona seguido a la 'P' la letra 'E' aparescan todos los usuario que enpiecen con la letras 'PE' y asi sucesivamente, como si fuera un filtro o algo asi. Bueno para eso me hice de dos Procedimientos descritos a continuación: 1º.- Este procedimiento consiste en trabajar con un IBDataSet para la búsqueda exacta y un IBQuery para la búsqueda parcial, se los describo a continuación, lo bueno de esta búsqueda es que mustra todos los datos en el DBGrid y el puntero va seleccionando las apróximaciones. procedure TForm1.Edit1Change(Sender: TObject); begin if Edit1.Text = '' then Clientes.First //Clientes es el nombre del IBDataSet else begin ibquery1.ParamByName('Xno').AsString := Edit1.Text; //Xno es la variable de envio para el select del IBQuery1 //la consulta en el query Select Ci from personas where (NOMBRE starting with :Xno) ibquery1.Open; try //realizando la búsqueda exácta if ibquery1.Eof or not Clientes.Locate('CI', ibquery1.FieldValues['CI'],[]) then beep //Dentro del IBDataSet he asignado la siguiente consulta Select * from PERSONAS finally ibquery1.Close; end; end; end; 2º.- Y este otro procedimiento que funciona casi igual pero solo muestra los datos de las aproximaciones hasta que lo ubica descartando a los otros del DBGrid. Procedure TForm1.Edit1Change(Sender: TObject); begin if Edit1.Text = '' then Mconexion.Clientes.First //Clientes el IBDataSet else begin Clientes.Close; Clientes.ParamByName('Xno').AsString := Edit1.Text; Clientes.Open; end; end; //La consulta en el IBDataSet es la siguiente //Select * from PERSONAS where (Nombre starting with :Xno) Bueno estos son mis dos procedimientos, espero que alguien me pueda indicar cual de los dos es el mas aconsejable para cliente/servidor. Gracias....:) |
La franja horaria es GMT +2. Ahora son las 22:28:38. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi