Insertar en Delphi
Publicado por Osmani (1 intervención) el 06/07/2009 14:14:12
tengo un problema y es que no puedo hacer de manera continua la captura de los datos.
La idea es la siguiente tengo un formulario en el cual puse una regilla de datos y un TDBNavigator, pero no permito la edicion o modificacion de los datos directamente desde la rejilla sino que al efectuar los procedimientos sobre insert o edit llamo a un formulario que tie las etiquetas de los campos con sus DBEdit correspondientes, un boton aceptar y un boton terminar. El libro La cara oculta de Delphi 4 recomienda utilizar una funcion que ellos desarrollan llamada PuedoCerrar y que se utiliza en el procedimiento ONQueryClose. El libro tambien dice como debe usarse lo que no logro es la continuidad en el formulario. Mira el codigo del boton aceptar del formulario:
procedure TFrmEdicionFibras.BtnAceptarClick(Sender: TObject);
begin
//If DBEdtIdentificador.Text <>'' then
//ADOTableFibras.Fields[1].Value:= DBEdtIdentificador.Text;
If ((DBEdtIdentificador.Text <>'') and (DBEditNombre.Text<>'')) then
begin
Modulo_De_Datos.DataModuleControl_De_Procesos.ADOTableFibras.Fields [0].Value :=DBEdtIdentificador.Text;
Modulo_De_Datos.DataModuleControl_De_Procesos.ADOTableFibras.Fields [1].Value := DBEditNombre.Text;
end;
Close;
end;
Esta es la funcion PuedoCerrar: Esta funcion se ejecuta en el evento onclosequery
function PuedoCerrar (FrmEdicionFibras: TFrmEdicionFibras; ADOTableFibras: TADOTable; ModoContinuo:Boolean):Boolean;
var
PrevState:TDataSetState;
begin
Result:= True;
If FrmEdicionFibras.ModalResult = mrok then
begin
PrevState:=ADOTableFibras.State;
ADOTableFibras.Post;
If ModoContinuo and (PrevState = dsInsert) then
begin
ADOTableFibras.Append;
Result:= False;
end;
end
else if not ADOTableFibras.Modified or (Application.MessageBox ('¿Desea guardar los cambios?', 'Atención', MB_IConquestion+MB_YesNo) = IdYes) then
ADOTableFibras.Cancel
else
Result:= False;
end;
y este es procedimiento
ONCloseQuery del formualrio done tengo el boton Aceptar o cancelar.
procedure TFrmEdicionFibras.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
CanClose:=PuedoCerrar(Self, Modulo_De_Datos.DataModuleControl_De_Procesos.ADOTableFibras, True)
end;
Con esto lo que me pasa es que introduzco los datos pero al dar clic en el boton Aceptar Me Pregunata ¿Desea guaradr los cambios? Si digo que si me guarda los cambios y me cierra si digo que no me mantiene en el mismo registro y lo que me permite es modificar.
Disculpa la molestia
Saludos
La idea es la siguiente tengo un formulario en el cual puse una regilla de datos y un TDBNavigator, pero no permito la edicion o modificacion de los datos directamente desde la rejilla sino que al efectuar los procedimientos sobre insert o edit llamo a un formulario que tie las etiquetas de los campos con sus DBEdit correspondientes, un boton aceptar y un boton terminar. El libro La cara oculta de Delphi 4 recomienda utilizar una funcion que ellos desarrollan llamada PuedoCerrar y que se utiliza en el procedimiento ONQueryClose. El libro tambien dice como debe usarse lo que no logro es la continuidad en el formulario. Mira el codigo del boton aceptar del formulario:
procedure TFrmEdicionFibras.BtnAceptarClick(Sender: TObject);
begin
//If DBEdtIdentificador.Text <>'' then
//ADOTableFibras.Fields[1].Value:= DBEdtIdentificador.Text;
If ((DBEdtIdentificador.Text <>'') and (DBEditNombre.Text<>'')) then
begin
Modulo_De_Datos.DataModuleControl_De_Procesos.ADOTableFibras.Fields [0].Value :=DBEdtIdentificador.Text;
Modulo_De_Datos.DataModuleControl_De_Procesos.ADOTableFibras.Fields [1].Value := DBEditNombre.Text;
end;
Close;
end;
Esta es la funcion PuedoCerrar: Esta funcion se ejecuta en el evento onclosequery
function PuedoCerrar (FrmEdicionFibras: TFrmEdicionFibras; ADOTableFibras: TADOTable; ModoContinuo:Boolean):Boolean;
var
PrevState:TDataSetState;
begin
Result:= True;
If FrmEdicionFibras.ModalResult = mrok then
begin
PrevState:=ADOTableFibras.State;
ADOTableFibras.Post;
If ModoContinuo and (PrevState = dsInsert) then
begin
ADOTableFibras.Append;
Result:= False;
end;
end
else if not ADOTableFibras.Modified or (Application.MessageBox ('¿Desea guardar los cambios?', 'Atención', MB_IConquestion+MB_YesNo) = IdYes) then
ADOTableFibras.Cancel
else
Result:= False;
end;
y este es procedimiento
ONCloseQuery del formualrio done tengo el boton Aceptar o cancelar.
procedure TFrmEdicionFibras.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
CanClose:=PuedoCerrar(Self, Modulo_De_Datos.DataModuleControl_De_Procesos.ADOTableFibras, True)
end;
Con esto lo que me pasa es que introduzco los datos pero al dar clic en el boton Aceptar Me Pregunata ¿Desea guaradr los cambios? Si digo que si me guarda los cambios y me cierra si digo que no me mantiene en el mismo registro y lo que me permite es modificar.
Disculpa la molestia
Saludos
Valora esta pregunta


0