Cita:
|
En lineas generales nose como puedo hacer que el dbgrid saque solo los nombres de clientes que estan dentro del mes, asi no tengo que leer toda la tabla.de clientes, pero no se me ocurre.
|
A mi se me ocurre un query similar a el siguiente:
Código SQL
[-]
select con.fecha,
con.numero_de_compra, cue.nombrecuenta, cli.nombrecliente
concepto as con
inner join cuentas as cue on cue.clavecuenta = con.clavecuenta
inner join cliente as cli on cli.clavecliente = con.clavecliente
where con.fecha between :f1 and :f2
En delphi debería hacer algo como:
Código Delphi
[-]
QClientesXCuentaEntreFechas.Close;
QClientesXCuentaEntreFechas.parambyname('f1').asdate := dtpFechaInicial.Date;
QClientesXCuentaEntreFechas.parambyname('f2').asdate := dtpFechaFinal.Date;
QClientesXCuentaEntreFechas.Open;
Particularmente no me gusta usar dblookupcombobox, prefiero usar combobox y agregar en un procedimiento de delphi el id (clave principal de la tabla) como un objeto del combobox (consulta sobre ComboBox.Items.AddObjec)
Cita:
|
Tambien tengo un filtro en sql con un like, que, a medida que vamos poniendo letras que conforman el nombre del cliente, (pongo una letra y busca, añado otra y busca, etc) va reduciendo la cantidad de registros, pero tambien se necesita leer toda la tabla principalmente. Esto esta muyh bien cuando es dentro de una red local y con pocos registros, pero imagino que a medida que va engordando la tabla, acabara tambien tardando mas.
|
Si tardará más, pero no tanto por hacer la consulta, más bien por regresar los resultados por medio de la red, lo que puedes hacer es solo hacer la consulta cuando tengas en el Edit (me imagino que es donde van escribiendo el nombre que luego mandaran como parámetro al like) por lo menos un0s 4 o 5 caracteres, si el tamaño es menor que solo regrese resultados por medio de hacer click en un boton buscar o algo así, de esta forma te aseguras no estar haciendo una consulta que traiga muchos resultados como lo es hacer un like a una sola letra