Delphi - Porque lee la tabla completa al hacer append?

 
Vista:

Porque lee la tabla completa al hacer append?

Publicado por Judit (45 intervenciones) el 29/05/2006 23:47:10
Buenas Noches!!

Estoy trabajando con un formulario de facturacion el cual dura mucho para abrirse; en el evento onActivate del formulario tengo BBAgregar.click para que autómaticamente me muestre el formulario para registrar una factura, el problema está en que me está leyendo la tabla detalle completa antes de abrir el formulario.

Al presionar este boton (BBAgregar) le cambio al datasource de la tabla encabezado y detalle a un ClientDataSet a cada uno.

El código que empleo es el siguiente:

procedure TFfacturacion.BBAgregarClick(Sender: TObject);
begin
If BBAgregar.Caption = '&Agregar' then
begin
.
.
.
DS2.DataSet := CDS2; donde DS2 es el datasource del detalle y CDS2 es el ClientDataSet
DS1.DataSet := CDS1;
CDS1.Append;
CDS2.Append;
.
.
.
end
Else
begin
.
.
.
end;
end;

Hay alguna manera de que no me lea la tabla completa al darle Append a la tabla?

Gracias anticipadas.

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Porque lee la tabla completa al hacer append?

Publicado por Sebastian Corradi (25 intervenciones) el 30/05/2006 14:03:27
me parece que ese proceso está tardando tiempo cuando asignas los datasets, y no cuando haces el append.
verificalo haciendo u showmessage... o debugeando.. como quieras

de todas formas si el poblema es el append.. fijate con estas dos alterativas:

1: antes del append hace un cds1.last
2: antes del append hace u cds1.disablecontrols // cuando quieras reflejar los cambios e el datasource tendras que hacer cds1.enablecontrols

espero que te sirva
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Porque lee la tabla completa al hacer append?

Publicado por Judit (45 intervenciones) el 30/05/2006 14:19:31
Gracias por responder

Efectivamente es a la hora de asignarle a los DataSource los CLientDataSet respectivamente, es ahi donde el lee la tabla completa.

Hay alguna manera de evitar esto?

Gracias anticipadas

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Porque lee la tabla completa al hacer append?

Publicado por Sebastian Corradi (25 intervenciones) el 30/05/2006 18:09:29
Por lo que tengo entendido ese tiempo es el que tarda en llenar todas las filas del datasource. Si no necesitas que el usuario vea los datos... entonces no lo asocies, pero si no podes evitar que el usuario lo vea... no te queda otra, quizas puedas paginar los registros.
paginar es mostrar los registros agupados, es decir, los primeros diez, luego los segundos diez... etc. vas a tener que usar algunos bookmarks, algunos seeks, etc.
solo hay que evaluar la relacion Costo-Beneficio porque ese es un laburo trabajoso
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Porque lee la tabla completa al hacer append?

Publicado por Judit (45 intervenciones) el 30/05/2006 18:59:30
Muchas Gracias por tu ayuda

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Porque lee la tabla completa al hacer append?

Publicado por BigLuis (713 intervenciones) el 31/05/2006 08:47:15
¿Has pensado en la posibilidad de utilizar SQL? Es mucho mas rapido, mas fiable y tienes un control absoluto sobre la operacion: INSERT INTO tabla............ya sabes.No se que base de datos utilizas pero piensa en ello.
Suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Porque lee la tabla completa al hacer append?

Publicado por Judit (45 intervenciones) el 31/05/2006 15:20:17
No, no habia pensado en esa posibilidad.

Actualmente estoy trabajando con access y tenia un problema que lo resolvi con los ClientDataSet, que era que no me insertara en la tabla detalle hasta que no se le de un post (ApplyUpdate), porque estaba trabajando directamente en un Dbgrid para la parte del detalle.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Resuelto

Publicado por Judit (45 intervenciones) el 31/05/2006 15:48:00
Buenos días!!

Como solo necesitaba cada ClientDataSet para controlar lo de que no me insertara en el detalle datos hasta que le diera al botón aceptar, he puesto en la propiedad PacketRecords de cada ClientDataSet 0 y así no me carga los datos y mi formulario se muestra de una vez.

Gracias a todos

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar