Ver Mensaje Individual
  #1  
Antiguo 09-03-2017
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Reputación: 14
novato_erick Va por buen camino
Campos se vacían en ClientDataSet

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    /*FK*/
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.First;
    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
Responder Con Cita