Delphi - Problemas con ADODataSet (master/detail)

 
Vista:

Problemas con ADODataSet (master/detail)

Publicado por vladimir (4 intervenciones) el 24/10/2002 01:50:37
Estoy utilizando Delphi 5, Componentes ADO con Update Batch y SQL Server como manejador de Base de Datos.

Tengo 2 Componentes ADODataSet, uno master y otro detail.

Cuando inserto un nuevo registro en master, asigno un IDKey temporal (en este caso es CERO), en caso de que el usuario no quiera guardar el registro.

Al momento en que inserto un nuevo registro en Detail, en el evento OnNewRecord (de Detail) asigno el IDKey de master.

supongan que agregué 2 o más registros en Detail.

Cuando el usuario presiona el botón para guardar los datos, a la tabla master asigno el IDKey que quedará registrado en forma permanente.

Por lo tanto, Detail tengo que leerla de principio a fin y modificar el IDKey y asignarle el mismo que el IDKey de master. Correcto ??

Esto es lo que hago:

master.Edit;
masteridKey.Value:=NuevoConsecutivo;
master.Post;

// Despues hago lo mismo con Detail para mantener la relacion entre ambas.

detail.first;
while Detail.EOF = false do begin
detail.Edit;
detailidKey.Value:=NuevoConsecutivo;
detail.Post;
detail.next;
end;

master.updateBatch;
detail.updateBatch;

Lo extraño es que en mi tabla detail solo se guarda UN SOLO registro, en forma correcta.

Me puse a depurar el programa y descubri que la instruccion "Detail.First", no funciona apropiadamente, es decir, no se va al inicio de la tabla, sino que se queda en el último registro que se insertó. Es por eso que solo al último registro le asigna el NuevoConsecutivo y a los otros les deja el IDKey temporal (CERO).

Por lo tanto solo un registro de la tabla detalle mantiene la relaci%
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