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
  #3  
Antiguo 09-02-2011
delphijm delphijm is offline
Miembro
 
Registrado: abr 2008
Posts: 47
Poder: 0
delphijm Va por buen camino
Hola,

No son exactamente tablas de facturas - lineas pero parecido... Te comento lo que hago como si fueran facturas - lineas...

Para cada registro de una factura tengo en el dataset de detalle sus lineas...
Cada registro de lineas tiene como datos el codigo del articulo y la cantidad...
El dataset maestro lo tengo vinculado a un TDBGrid...
En este TDBGrid quiero mostrar, ademas de la informacion de la cabecera, el total de cantidad de cada codigo de articulo, de esta forma:

Factura + Cliente + FechaFact + cantidArticulo_A + cantidArticulo_B

Los campos cantidArticulo_A y cantidArticulo_B no estan en la tabla maestra, pero los añado en tiempo de ejecucion como campos fkCalculated porque si los añado como campos fkData, al hacer un post intentaria actualizar la BBDD y no son campos de ella.

Hasta aqui aparentemente bien...

El tema esta en que en el evento AfterOpen de la tabla maestra programo lo necesario para llenar estos nuevos campos en funcion de los registros de la tabla detalle de lineas de factura.

Lo que hago es un bucle while de la tabla maestra y para cada registro hago un bucle anidado while de los registros de la tabla de detalle...
De la tabla de detalle voy acumulando las cantidades por codigo de articulo y cuando acabo este bucle detalle asigno los valores a los nuevos campos de totales de la tabla maestra...

En el entorno de desarrollo tengo dos registros de factura cada uno de ellos con 2 o 3 lineas de detalle...

El tema esta en que me acumula los campos de totales bien para cada factura pero cuando se visualiza el dataset maestro en el TDBGrid en lugar de ver los dos registros de las 2 facturas lo que veo son 20 o 30 facturas que son las dos que deberia haber pero repetidas constantemente.

He observado que el problema esta en el bucle anidado que uso para recorrer el dataset de las lineas...

Se trata de un bucle asi:
cdsLin.first
while not cdsLin.eof do
begin
.... sentencias....
next;
end;

Si elimino las sentencias continua el problema...
Pero si elimino la linea de cdsLin.first me funciona bien para la primera factura pero no para la/las siguentes porque supongo que el puntero de la tabla de detalle se ha posicionado al final en la primera pasada...

No se si el problema puede estar en que los campos que he añadido son de tipo fkCalculated i estos solo estan pensados para asignarles valor en el evento OnCalcFields o deberia replantearme otro evento diferente de AfterOpen de la tabla maestra para hacer estos calculos?

La base de datos que uso es MySQL pero en principio no me interesa que estos totales me vengan ya desde la base de datos porque las cantidades de las lineas van a poder modificarlas el usuario y entonces debere de recalcularlos en local.

No se si esto da alguna pista adicional???

Un saludo y gracias
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
Saber si el DBGrid (Detalle) esta Vacio en Relacion Maestro/Detalle Adrian Murua Conexión con bases de datos 2 03-01-2009 13:48:46
Problema tabla Maestro-detalle en la q la pk de t.detalle formad por 2cods de la maes akinom38 Varios 1 09-11-2007 19:27:44
Respecto a la relacion maestro detalle detalle ilichhernandez Conexión con bases de datos 0 15-05-2007 18:13:54
Reporte Maestro/Detalle/Detalle de 4 Tablas jovehe Impresión 2 23-03-2005 01:25:02
Maestro-Detalle ;Actualizar detalle a partir de un DBgrid norberto_larios Conexión con bases de datos 1 11-09-2004 18:17:34


La franja horaria es GMT +2. Ahora son las 05:07:28.


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