Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   IBDatase Insert Post Edit Post (https://www.clubdelphi.com/foros/showthread.php?t=26055)

ariefez 11-10-2005 22:29:17

IBDatase Insert Post Edit Post
 
Bueno primero un saludo a todos los foristas...

Uso Delphi 7 con los componentes IB 7.07 el problema es q depues de hacer un post y luego de colocar el dataset en modo de edicion almaceno unos valores y al mandar nuevamento Post este no me guarda el ultimo cambio en la base de datos. esto es lo q hago:

Código:

{... Ingreso datos...}
DataSet1.Post;  //esto lo hago para obtener el generador q se le asigna, mediante un procedimiento almacenado
{... Condiciones...}
DataSet1.Edit;
DataSet1VALOR.Value:=VALOR; //Almaceno el nuevo valor obtenido
DataSet1.Post;
{Commit}
Transaccion.CommitRetaining;

el problema es q el ultimo valor agregado no lo almacena en la base de datos, hay algo q pase por alto. Despues de hacer el primer post no toco para nada el Dataset hasta ponerlo en modo de edicion. les agradeciria cualquier sugerencia q me plantearan.

lucasarts_18 11-10-2005 22:35:00

Hola:

Quita el CommitRetaining, usa solo commit..

También te recomiendo esta lectura...

Link

:cool:

ariefez 11-10-2005 23:29:57

gracias por la pronta repuesta

pero el problema persiste, ademas al dar Commit se cierra el dataset y quiero mantenerla abierta porque esta asociada a DBEDits..., bueno el codigo en si era este

[code]
{...}
DataSet1.Insert;

{En el evento OnNewRecord del DataSet}
DataSet1VALOR.Value:=0; //Inicializo el valor

{Grabo los valores segun lo ingresado en los DBEdits..}
DataSet1.Post;
//Segun algunas condiciones pongo en "Edicion" el dataset
DataSet1.Edit;
DataSet1VALOR.Value:=VALOR; //Valor q quiero almacenar
DataSet1.Post;
{Commit}
Transaccion.CommitRetaining; {Este es el unico CommitRetaining q ejecuto}

pero lo q se guarda en la base de datos es 0 y no el nuevo VALOR q ingrese

lucasarts_18 11-10-2005 23:50:59

Hola:

Cita:

Y ¿porqué poner el CommitRetaining en los eventos AfterPost y AfterDelete? Bueno, pues porque el evento AfterPost se ejecuta inmediatamente después de haber guardado los cambos en una inserción o una modificación de un registro, y es precisamente cuando el programa manda al servidor la instrucción SQL de insertar o modificar.
Estás seguro que la variable valor tiene un valor (valga la redundancia)..

Además pienso que no actualiza los datos por lo mismo CommitRetaining, retiene el Commit para no tener que cerrarlo...

ariefez 12-10-2005 01:53:04

Gracias por la ayuda, y si la variable VALOR si tenia un valor eso si lo comprobe, al parecer no me queda otra opcion q hacer un commit despues del primer post abrir el dataset y ponerla en modo de edicion, ingresar el nuevo dato y hacer otro post. haciendo esto si me almacena el valor obviamente.


La franja horaria es GMT +2. Ahora son las 19:04:09.

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