Hola Chicos como han estado? Rato de no pasar por el Foro... Ya han pasado 6 años y cada vez aprendo algo nuevo y paso siempre investigando gracias porque existe este foro que siempre me ah colaborado.
Ahora necesito que me saquen de una duda:
utilizo en el 100% de mis sistema basado en Base de Datos el Término Entidad Relacion SQL anteriormente simplemente utilizaba transacciones haciendo commit o rollback con el componente TSQLQuery con los componente DBExpress y simple mandaba a cada tabla la información que se deseaba guardar.
ahora estoy con los ClienteDataSet (Algo Anticuado) ya que ahora la ultima version de delphi Trae otros componentes bueno ese es otro tema largo y aun en estudio y practica por mi parte.
Volviendo al Tema: utilizo maestro detalle utilizando ClientDAtaSet
ejemplo:
Código SQL
[-]
TCOMPRAS
-------------
ID_COMPRAS
NUMCOMPRA
FACT_PROV
ID_PROVEEDOR
SUBTOTAL
IVA
TOTAL
TDETALLE_COMPRA
----------------------
ID_COMPRAS
ID_ARTICULO
CANTIDAD
P_COMPRA
IVA_ART
TOTAL
El asunto es que a la hora de mostrar en mi dbgrid por ejemplo el campoCODIGO Y DESCRIPCION lo agregue en el clientdataset detalle como un campo mas no es algo que esta en la db haciendo que cada vez que hago un Insert me borra los campos de CODIGO Y DESCRIPCION mas no los que estan en la db. Esto lo hice para mostrar al usuario un poco mas de detalle que no seran necesarios guardarlo en la tabla detalles.
en Fin aqui esta el ejemplo a nivel de codigo:
Código Delphi
[-]
procedure TfrmCompras.btnAgregaClick(Sender: TObject);
begin
if DBEditNumFactura.Text = '0' then
begin
ShowMessage('Favor Ingresar el Numero de Factura de Compra');
DBEditNumFactura.SetFocus;
Exit;
end
else
begin
dmConexion.cdsComprasDetalle.Insert;
dmConexion.cdsComprasDetalleID_ARTICULO.AsInteger := idartcompra;
dmConexion.cdsComprasDetalleCANTIDAD.AsFloat := CantArtCompra;
dmConexion.cdsComprasDetallePUNITARIO.AsFloat := PCompra;
dmConexion.cdsComprasDetalleIMPUESTO.AsFloat := ImpuestoCal;
dmConexion.cdsComprasDetalleIMPUESTOPUNIDAD.AsFloat := puniconiva;
MontoImpuestoUnitario := puniconiva * CantArtCompra;
dmConexion.cdsComprasDetalleMONTOIMPUESTO.AsFloat := MontoImpuestoUnitario;
dmConexion.cdsComprasDetalleTOTAL.AsFloat := totalcompralinea;
dmConexion.cdsComprasDetalleCOD_BARRA.AsString := edtCodBarra.Text;
dmConexion.cdsComprasDetalleDESCRIBE.AsString := edtDetalleArt.Text;
NewCantidadArt := CantArtCompra + CantOldArt;
dmConexion.cdsComprasDetalleNUEVACANTART.AsFloat :=
roundto(NewCantidadArt, 2);
end;
Espero una mejor idea para hacer esto....
Saludos Cordiales:
novato_erick