FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Datos de un query remoto cargados en un dblookupcombobox lento
Hola.
Se que debo de estar haciendo algo muy mal, y tambien se que hacer un select * from table es un suicidio. Vereis tengo un query de compras y un query de clientes. Los dos relacionados en un dbgrid de compras donde va el codigo de cliente y visualiza el nombre del query clientes. Algo que creo normal. Esto esta filtrado por mes. Por el otro lado, cuando se genera una nueva compra, el usuario puede elegir de entre todos los clientes almacenados en el dblookupcombobox, de ahi que se carguen todos al principio. Ya habiais comentado en otro post que a vosotros no os va lenta las aplicaciones aunque las conexiones de los usuarios no sean muy buenas. La pregunta, porque no se me ocurre nada, es si hay otra forma de no tener q cargar toda la tabla de clientes y si hay otra forma de que el dbgrid solo pida los clientes que salen en el filtro. La verdad ya me perdi Gracias y mis disculpas sino se entendio bien. |
#2
|
||||
|
||||
prueba con mandar los nombres de las tablas y sus campos, además enviar el query que usas, y decir de ese query que campos usas para algo... también di con que componente haces los querys... ibx, dbx?
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H" |
#3
|
||||
|
||||
Hola,
Estoy usando zeos para los componentes en lazarus. La tabla principal es compras compras -------- idautoincremental integer fecha numero de compra consecutivo clavecuenta integer clavecliente integer concepto blob cuentas -------- clavecuenta integer autoincremental nombrecuenta varchar cliente ------ clavecliente integer autoincremental nombrecliente blob fechaalta a grosso modo es lo basico (el autoincremental en firebird no lo hay pero esta con generadores) en el dbgrid uso el query clientes y relaciono la clavecuenta con el query cuentas, y clavecliente con clientes para convertir el numero a nombre en un campo calculado. Tambien hay un filtro que puedo consultar los clientes eligiendo desde un dblookupcombobox y sale toda la lista. 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. se que con filtros nos podemos ahorrar mucho trabajo innecesario porque no vamos a usar todo. Y la otra parte, que seria elegir de un dblookupcombobox todos los clientes, seria mas facil saber la clave e introducirla, seria lo mas logico, mas practico y mas rapido. 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. las tablas que os he puesto son reducidas a ver si me entero un poco con menos campos. No se si estos ejemplos sirven de algo para sacar algo en limpio. y gracias por contestar. |
#4
|
||||
|
||||
Cita:
A mi se me ocurre un query similar a el siguiente:
En delphi debería hacer algo como:
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:
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H" |
#5
|
||||
|
||||
hola,
si, tienes razon, con un join si podria ser, el problema es que para utilizar el query de clientes, tengo que tener activo el query de compras y clientes, si activo el primero, me dice que que el query esta vacio (por el de clientes), o que hago mal Asi lo he estado usando pero con una tabla teniendo las otra abiertas, en este caso, solo tengo cerrada la de clientes. Alguna idea cual fue primero el huevo o la gallina? |
#6
|
||||
|
||||
Pues lo primero que haría es ver el query en una herramienta como el ibexpert o el databBaseWrockBech, en uno de estos ir haciendo la consulta en la misma base de datos que se conecta desde delphi, agregando uno por uno los diversos filtros (primero hacer una consulta sola con el inner join, despues poner una sola condición despues del where e ir aumentando de a uno)
Ya luego cuando estés seguro que el query si regresa información pasar a hacer pruebas en Delphi, teniendo como premisa que siempre que cambies el query antes de probarlo en delphi primero se debe probar directamente sobre la base de datos como el punto anterior.
__________________
"Como pasa el tiempo..... ayer se escribe sin H y hoy con H" |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Insert masivo de datos, cada vez mas lento | papote654 | MS SQL Server | 14 | 16-05-2012 18:02:17 |
Truncar campo de Tabla con Datos cargados??? | ungrande87 | Firebird e Interbase | 16 | 28-02-2012 15:02:44 |
como pasar datos de un DBLookupComboBox a otro DBLookupComboBox | francodelphi | Conexión con bases de datos | 3 | 30-11-2011 21:02:34 |
Procedure en Firebird lento o IbQuery lento | capo979 | Firebird e Interbase | 14 | 17-07-2007 21:35:36 |
Barridos de Base de Datos Lento | jmedina | Conexión con bases de datos | 3 | 16-08-2004 01:40:38 |
|