Cuadro combinado filtra con lentitud |
Responder |
Autor | |
jorros
Habitual Unido: 20/Octubre/2008 Localización: España Estado: Sin conexión Puntos: 154 |
Tema: Cuadro combinado filtra con lentitud Enviado: 10/Enero/2020 a las 14:33 |
Tengo una tabla, TbHisCabFac, con la cabecera de facturas y otra tabla
TbHisLinFac con las líneas de factura. Desde un formulario veo las facturas
emitidas, en origen de registro tengo: SELECT TbHisCabFac.HisCabEmpCod, TbHisCabFac.HisCabFecFac,
TbHisCabFac.HisCabNumFac, TbHisCabFac.HisCabNumFacPro, TbHisCabFac.HisCabTip, Round((DSum("[TotalImp]","ConTotalLineasFacturasFinal_FacFin","[HisLinFacNum]='"
& [HisCabNumFac] & "'")-[HisCabIrpf]),2) AS TotFac,
TbHisCabFac.HisCabCodCli, TbHisCabFac.HisCabMaeRazSoc,
TbHisCabFac.HisCabFecRec, TbHisCabFac.HisCabGes, TbHisCabFac.HisCabSit,
TbHisCabFac.HisCabObs, [HisCabEmpiva]/100 AS Iva, [HisCabMaeDes]/100 AS Des,
TbHisCabFac.HisCabObra FROM TbHisCabFac WHERE
(((TbHisCabFac.HisCabObra)=[Formularios]![FrmConFacturas]![ObraNombre])) OR
((([Formularios]![FrmConFacturas]![ObraNombre]) Is Null)); Hasta aquí todo funciona perfecto, cuando abre el formulario
muestra los registros con el importe de la factura, que obtengo con un Dsum. He añadido un cuadro combinado en la cabecera del
formulario, con origen de fila SELECT TbHisCabFac.HisCabMaeRazSoc FROM
TbHisCabFac; Que va filtrando el formulario por el nombre del cliente,
según se va escribiendo. Funciona todo correctamente cuando se lanza la aplicación
desde el servidor, pero cuando se lanza en los clientes, y se escribe en ese
cuadro combinado cada letra demora el resultado en dos segundos, lo que hace
muy difícil el utilizarlo. Sé que es un problema de red, pero no puedo optimizar
la red más de lo que está. Mi pregunta es si ¿existe alguna manera de hacer esto mismo
de otra forma más rápida, que no "ejecute (Dsum) tantas consultas"?. Tengo un formulario similar en la tabla vencimientos, que ya
tiene los importes, no necesita ningún Dsum y no existen retrasos al usar el
cuadro combinado. Gracias anticipadas. |
|
raipon
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Moderador Unido: 10/Diciembre/2004 Localización: Desconocida Estado: Sin conexión Puntos: 4044 |
Enviado: 10/Enero/2020 a las 17:47 |
Hola, parece que sospechas que el cuello de botella és el campo con DSum. Puedes moverlo de la consulta a la propiedad ControlSource de un control del formulario. De esta forma sufrirás una cierta latencia en ver TotFac, pero el resto de datos no se verán penalizados.
Si por algún motivo esto no fuera posible, al abrir el formulario puedes consolidar TotFac en una tabla temporal y modificas el orígen del registro del formulario para que utilice la tabla temporal, en vez de sumar cada vez las lineas de factura. Saludos.
|
|
jorros
Habitual Unido: 20/Octubre/2008 Localización: España Estado: Sin conexión Puntos: 154 |
Enviado: 10/Enero/2020 a las 20:27 |
Gracias Raipon, voy a probar con la tabla temporal
Después te cuento.
|
|
jorros
Habitual Unido: 20/Octubre/2008 Localización: España Estado: Sin conexión Puntos: 154 |
Enviado: 11/Enero/2020 a las 19:51 |
Con la tabla temporal se soluciona. GRACIAS
Se puede cerrar el hilo Un saludo
|
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |