PDA

Ver la Versión Completa : Actualizar registro


georgejg
26-03-2008, 23:13:55
Holaa..

de antemano gracias por la atencio prestada. ahora les comento la inquietud

primero esto es lo q se esta haciendo.

tengo la "Tabla1" con campos como FECHA(Primary Key), TOTAL, USUARIO, etc..
"Tabla2" con campos FECHA2(Foreign(referencia con "Tabla1")), TOTAL2, USUARIO, DETALLE, etc..

al seleccionar la FECHA por medio de un DateTimePicker me carga algunos datos en deferentes edits y el formulario queda listo para ingresar un nuevo registro de la Tabla2 pero "Colgandose" de la Tabla1 por medio de la fecha.

ahora el campo TOTAL de la tabla1 es la suma de los TOTAL2 de todos los registros de la tabla2 que pertenecen a la fecha seleccionada.

entonces lo que me permite el aplicativo es cargar los datos de la tabla1 y colgarle nuevos registros apartir de la tabla2.

el problema radica a la hora de querer modificar o actualizar el TOTAL esto es lo q estoy usando.

georgejg
26-03-2008, 23:25:47
procedure TUnit_Main.Button1Click(Sender: TObject);
begin

//Activar Tabla1 para que permita guardar mas de un registro de Tabla2
BDMasdata.Table1.Active:= True;
BDMasdata.Table1.Edit;

//Guardar Tabla2
BDMasdata.Query1.SQL.Text:= 'SELECT Max(CONSECUTIVO) FROM Tabla2';
BDMasdata.Query1.Open;
DBEdit1.Text:= FloatToStr(BDMasdata.Query1.Fields[0].AsFloat+1);
BDMasdata.Query1.Close;

BDMasdata.Table2.Active:= True;
BDMasdata.Table2.Insert;
BDMasdata.Table2.FieldByName('EMPRESA').AsString:= ComboEmp.Text;
BDMasdata.Table2.FieldByName('FECHA').AsDateTime:= Trunc(fecha.Date);
BDMasdata.Table2.FieldByName('REPORTE').AsString:= ComboRep.Text;
BDMasdata.Table2.FieldByName('CONSECUTIVO').AsString:= DBEdit1.Text;
BDMasdata.Table2.FieldByName('TOTAL2').AsString:= EditTotal2.Text;
BDMasdata.Table2.Post;

//Dar Valor a las variables
if EditTotal2.Text = '' then begin EditTotal2.Text:= IntToStr(0); aco1:= StrToInt(EditTotal2.Text); end
else begin aco1:= StrToInt(EditTotal2.Text); end;

if Edit84.Text = '' then begin Edit84.Text:= IntToStr(0); aco2:= StrToInt(Edit84.Text); end
else begin aco2:= StrToInt(Edit84.Text); end;

MessageDlg('El Registro fue Guardado Satisfactoriamente',mtInformation,[mbOk],0);

if MessageDlg('Desea Ingresar Mas Detalles !!',mtConfirmation,[mbYes, mbNo],0) = idYes then
begin

DBEdit2.Clear; DBEdit3.Clear; DBEdit4.Clear; DBEdit5.Clear;
DBEdit6.Clear; DBEdit7.Clear; DBEdit8.Clear;

DBEdit1.Clear;

Cancelar.Enabled:= False;

//Iniciar Nuevamente desde Fecha
Fecha.SetFocus;

//Dar Valor a las variables y sumar TOTAL
aco3:= aco1+aco2;

Edit84.Text:= IntToStr(aco3);
EditTotal2.Text:='';
aco1:= 0;

//Mostrar un nuevo consecutivo en los DBEdit determinados
BDMasdata.Query1.SQL.Text:= 'SELECT Max(CONSECUTIVO) FROM Tabla2';
BDMasdata.Query1.Open;
DBEdit1.Text:= FloatToStr(BDMasdata.Query1.Fields[0].AsFloat+1);
BDMasdata.Query1.Close;

end
else begin

DBEdit2.Clear; DBEdit3.Clear; DBEdit4.Clear; DBEdit5.Clear;
DBEdit6.Clear; DBEdit7.Clear; DBEdit8.Clear;

//Dar Valor a las variables y sumar
aco3:= aco1+aco2;

Edit84.Text:= IntToStr(aco3);
EditTotalH.Text:= '';
aco1:= 0;

//Realizar modificaciones a la Tabla1 de acuerdo al Acumuldo de los Totales
BDMasdata.Table1.Edit;
BDMasdata.Table1.FieldByName('TOTALH_ENTREGADO_LIMPIO').Value:= Edit84.Text;
BDMasdata.Table1.Post;
end;

georgejg
26-03-2008, 23:35:00
ahora los datos me los guarda pero la actualizacion hecha al TOTAL lo hace en el primer registro existe de la tabla1.

ejemplo:

si selecciono la fecha 21/03/2008 realizo las adiciones, suma los totales pero el resultado lo guarda en otro registro con fecha "26/03/2008"

asi q la pregunta es como puedo guardar la actualizacion a al fecha correspondiente??
q modificaciones toca hacerle al codigo diria yo en esta parte.


//Realizar modificaciones a la Tabla1 de acuerdo al Acumuldo de los Totales
BDMasdata.Table1.Edit;
BDMasdata.Table1.FieldByName('TOTALH_ENTREGADO_LIMPIO').Value:= Edit84.Text;
BDMasdata.Table1.Post;


saludos...

les agradesco una pronta respuesta..........................