Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Tablas planas (https://www.clubdelphi.com/foros/forumdisplay.php?f=20)
-   -   Problema (básico?) editar-grabar registro (https://www.clubdelphi.com/foros/showthread.php?t=25379)

pepitu 21-09-2005 10:43:48

Problema (básico?) editar-grabar registro
 
Hola a todos.
Recién empiezo en delphi y necesito que alguien me oriente sobre un problema y sobre la forma en que realizo una serie de pasos. He estado consultando los foros para molestar lo menos posible pero....
Tengo un datasource, database y ttable en un datamodulo (DM1)....bien conectados.
Estoy con Paradox.
En el form principal tengo un grid y una serie de botones para añadir Facturas, borrarlas, editarlas, buscarlas, ver los detalles (dbedits), etc...

Primer problema:
En uno de los botones llamado "Editar factura" pongo:

Código Delphi [-]
 procedure TForm1.BEditarFraClick(Sender: TObject);
 begin
   if BEditarFra.Caption='Editar factura' then //me baso en la caption del botón para decidir
   begin
     DM1.TableFC.Active:=False; //Normalmente tengo la TTable en ReadOnly=True
     DM1.TableFC.ReadOnly:=False; //Pongo ReadOnly en False para poder editar algun registro
     DM1.TableFC.Active:=True;
     Panel4.Align:=alTop; //juego con mostrar un panel (hay un splitter) que tiene los DBEdits de cada
     Panel4.Height:=314; //campo del registro y que son los que modificaré
     BEditarFra.Caption:='Grabar factura'; //a partir de aqui, cambio o deshabilito captios de botones.
     BVerFra.Caption:='Esconder fra.';
     BAnadirFra.Enabled:=False;
     BVerFra.Enabled:=False;
     BBorrar.Enabled:=False;
   end
   else
   begin
     DM1.TableFC.Post; //una vez editado un registro, lo grabo
     DM1.TableFC.Active:=False; //vuelvo a poner el ReadOnly a True
     DM1.TableFC.ReadOnly:=True;
     DM1.TableFC.Active:=True;
     BEditarFra.Caption:='Editar factura'; //vuelvo a cambiar captions y habilitar botones.
     BAnadirFra.Enabled:=True;
     BVerFra.Enabled:=True;
     BBorrar.Enabled:=True;
   end;
 end;
Si aprieto el botón, edito y vuelvo a apretarlo....todo funciona bien.
Pero si aprieto el botón, NO edito nada y vuelvo a apretarlo....me sale un error diciendo que el dataset no está en modo de inserción.

Me pregunto si voy bien encaminado. Por ejemplo, en el mismo form tengo un botón "Buscar" con el que uso un TQuery. Para buscar sólo conecto el datasource al query con lo que aprovecho los DBEdits (que estan conectados al Datasource)....Es correcto hacerlo así??

Posiblemente hayáis hablado cientos de veces sobre estos temas y seguramente sean sencillos o muy básicos....pero realmente, cuando empiezas, entre la cantidad de información que hay y las "infinitas" posibilidades que te permite delphi.....vas (voy) bastante....(MUY) perdido.

Gracias

epuigdef 21-09-2005 10:59:43

Tienes 2 opciones:

a) Cuando pulsas el botón de editar "fuerzas" a que el dataset se ponga en modo de edición:
dataset.edit;

b) Cuando vas a hacer el post compruebas si reamnete se está editando:
if (dataset.state in [dsEdit, dsInsert])
dataset.post

Y no te preocupes si las consultas son sencillas, a todos nos ha pasado esto alguna vez!


Un saludo

Edu

pepitu 21-09-2005 11:34:40

pepitu
 
Gracias EPUIGDEF...ya está solucionado (lo solucionastes).
Qué fácil cuando tienes/sabes la solución :)

Realmente no me preocupa demasiado que las consultas sean sencillas (soy muy novato y creo que quizás me cueste más de lo que esperaba....por lo que es 'normal').
Me preocupa más tenerlas que hacer al no ser capaz de sacarlas por mi mismo y, de paso, molestar a otros.
Pero bueno....me pierdo entre tantos métodos, procedimientos, clases, propiedades, eventos..... llegando a estar atascado frente a un botón durante mucho tiempo.
Pero ésto ya es otro tema.

De nuevo...gracias.


La franja horaria es GMT +2. Ahora son las 12:13:36.

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