PDA

Ver la Versión Completa : problemas al guarda datos en tabla en intebase


pharaonhx
27-02-2005, 15:49:03
bueno la indea es que con el siguiente codigo

procedure TForm1.Button2Click(Sender: TObject);
begin
table1.Insert;
table1.Edit;
DBEdit2.SetFocus;
s:= s + 1;
Panel1.Caption:=IntToStr(S);
DBEdit1.Text:=IntToStr(s);
s:= s + Table1IDCODIGO.Value;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
table1.Post;
table1.First;
table1.Refresh;
end;;


lleno el campo condigo de esta tabla y hace un incremento en el codigo cada vez que edito uno nuevo

pero cuando lo grabo no se guarda nada en la tabla, y no se porque porque la aplicacion no da error y hace el proceso en la ejecucion pero cuando la cierro y busco los datos en la tabla no aparesen.

acepto sugerencias y ideas

marcoszorrilla
27-02-2005, 17:01:02
Si la tabla es Interbase, deberás utilizar Commit o CommitRetaining y además tener una transacción abierta.


Un Saludo.

pharaonhx
27-02-2005, 21:26:58
bueno explicame lo del comint si puedes me das un ejemplito asi sera mas facil entender tu solucion a esto. la tabla si es en interbase que la cree.

pharaonhx
28-02-2005, 04:24:34
gracias por tu sugerncia moderador con ella resolvi el problema lo hize como lo digiste anque tuve que leer muchas cosas pero valio la pena

gracias .....

ronalg
28-02-2005, 05:02:29
Diculpa, pero tu codigo esta un poco desordenado, te aconsejo que repases un poco mas la bibliografia, sobre todo la de Ian Marteens "La cara coulta del delphi 4", aun es muy util para aprender lo basico en el manejo de base de datos http://www.latiumsoftware.com/descarga/lcod4.php
procedure TForm1.Button2Click(Sender: TObject);
begin
table1.Insert;
table1.Edit;
DBEdit2.SetFocus;
s:= s + 1;
Panel1.Caption:=IntToStr(S);
DBEdit1.Text:=IntToStr(s);
s:= s + Table1IDCODIGO.Value;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
table1.Post;
table1.First;
table1.Refresh;
end;
Primero: No puedes hacer esto.
begin
table1.Insert;
table1.Edit;


Deberias hacer esto:

procedure TForm1.bt_InsertarClick(Sender: TObject);
begin
if ibtable1.State=dsBrowse then
begin
ibtable1.Insert;
//Luego el resto del codigo que quieras
//no es muy eficiente lo que haces para generar
//el nuevo codigo de tu registro, si estas
//trabajando en red, tendras tarde o temprano problemas
//mejor usa generadores y procedimientos alamcenados
end
else
begin
messagedlg('No es posible insertar datos en una tabla que se esta editando',mterror,[mbok],0);
end;
end;

procedure TForm1.bt_guardarClick(Sender: TObject);
begin
if ibtable1.State in [dsedit, dsinsert] then
begin
ibtable1.Post;
//luego el codigo que quieras
//no me parece "personalmente" que uses refresh cada ves que
//inserta o editas datos, porque este se realiza automáticamente
//ademas hacer esto con tablas consume recursos
end
else
begin
messagedlg('Si no esta editando o insertando no puede realizar un post',mterror,[mbok],0);
end;
end;

Espero te ayude.

Saludos