Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-03-2024
Christian24 Christian24 is offline
Registrado
 
Registrado: mar 2024
Posts: 2
Poder: 0
Christian24 Va por buen camino
TADODataset "salta" la primera tupla del resultado.

Buenas, foro. Es mi primer mensaje aquí, aunque os llevo leyendo bastante tiempo.

Tengo un problema en una aplicación en la que estoy trabajando en Delphi6. Estoy pasando una serie de módulos de dbf a SQL Server.

Estoy con un módulo de reporting que por una serie de necesidades ya existentes en la aplicación, me fuerza a generar una query con bastantes left join (>15) y bastantes cláusulas en el where según los filtros indicados por el usuario. Hablamos de una tabla que potencialmente (según la instalación), puede tener más de 30 millones de tuplas.

Actualmente, estoy generando dinámicamente un ADODataset, con los siguientes parámetros:
Código Delphi [-]
dataset.CommandTimeout := 900;
dataset.CommandText := [query];
dataset.CursorLocation := clUseServer;
dataset.CursorType := ctOpenForwardOnly;
dataset.EnableBCD := False;
dataset.LockType := ltReadOnly;

Y, posteriormente, hago un loadFromDataset para cargarlo en una tKbmMemTable:
Código Delphi [-]
memTable.LoadFromDataSet(dataset, [mtcpoProperties]);


Con esto la query ejecuta con ligera rapidez (dentro de las circunstancias). Sin embargo, me encuentro que *siempre* se salta el primer registro. Si copio el commandtext que también genero dinámicamente, y lo ejecuto directamente en el mssms, veo que la primera tupla que me arroja directamente la consulta, nunca me la trae el ADODataset, sólo los registros posteriores.

Si pruebo otras configuraciones, como clUseClient, la query me trae los resultados esperados pero es significativamente más lenta, o incluso me arroja un fuera de memoria sin llegar a traer nada.

Como apunte, es el dataset directamente el que "salta" la primera tupla. Es decir, ocurre antes del loadFromDataSet.

Además, he probado a abrir el dataset antes de cargar en la tabla de memoria, hacer first / next, pero tampoco solventa el problema.

¿Alguien sabría echarme un cable para entender la naturaleza del problema?

Gracias de antemano.

Última edición por Neftali [Germán.Estévez] fecha: 27-03-2024 a las 10:37:56. Razón: Añadir TAGs al código.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Extraño resultado de la función "DateUtils.MinutesBetween" dec Varios 6 23-05-2022 20:00:26
Usar TServerSocket y TClientSocket para enviar "streams" más o menos "grandes" dec Internet 9 04-08-2015 17:11:50
El programa se queda "colgado" mientras copia y luego "despierta" NeWsP OOP 5 10-03-2010 23:05:40
Necesito llamar a métodos de clases "hija" desde su clase "padre" Flecha OOP 17 20-04-2007 01:03:53
Mi primera "aplicación" turminator Varios 4 25-08-2006 18:50:18


La franja horaria es GMT +2. Ahora son las 01:21:26.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi