Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-03-2017
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 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
  #2  
Antiguo 09-03-2017
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Yo empezaría añadiendo comas y acentos a la descripción del problema. Así se entendería bastante bien lo que planteas.
Responder Con Cita
  #3  
Antiguo 10-03-2017
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Hola AlGonzalez:
cdsDetallesCompras.jpg
Adjunto Imagen del Comportamiento

Agregué dos Campos llamado CÓDIGO Y DESCRIPCIÓN en un clientDataSet denominado cdsComprasDetalle en la que estos dos campos no están en la tabla DETALLE_COMPRAS.

Al hacer un segundo insert en el hilo anterior simplemente me borra los datos que los campos CÓDIGO Y DESCRIPCIÓN más no en los detalles como CANTIDAD, TOTAL, IMPUESTO, ETC.

Nota: Una imagen dice más que mil palabras...

Saludos

Última edición por Casimiro Notevi fecha: 10-03-2017 a las 12:31:37.
Responder Con Cita
  #4  
Antiguo 10-03-2017
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Usa campos calculados
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #5  
Antiguo 24-04-2017
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Hola Chicos:

Cita:
movorack:
Usa campos calculados
Disculpa mi ignorancia pero los campos calculados requiere que al iniciar o activar el dataSet me causa un error ya que el mismo es para calcular valores no?

Provee con Campos Aggregate sin embargo al llamarlo al DBGrid no me los muestra incluso si activo los campos y en el ClientDataSet.

Saludos

novato_erick
Responder Con Cita
  #6  
Antiguo 24-04-2017
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por novato_erick Ver Mensaje
Hola Chicos:



Disculpa mi ignorancia pero los campos calculados requiere que al iniciar o activar el dataSet me causa un error ya que el mismo es para calcular valores no?

Provee con Campos Aggregate sin embargo al llamarlo al DBGrid no me los muestra incluso si activo los campos y en el ClientDataSet.

Saludos

novato_erick

Creo que en ese caso debes cerciorarte de declarar tus campos calculados como InternalCalc.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #7  
Antiguo 25-04-2017
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Cita:
jhonny
Creo que en ese caso debes cerciorarte de declarar tus campos calculados como InternalCalc.
Ok pruebo y les confirmo como me va.
Responder Con Cita
  #8  
Antiguo 25-04-2017
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Talking

Hola Jhonny:

Cita:
jhonny
Creo que en ese caso debes cerciorarte de declarar tus campos calculados como InternalCalc.
Fue la solución a mi dolor de cabeza. en Agregar otro Campo utilcé InternalCalc colocando el tipo de Datos correspondiente a los campos de Tipo String a DESCRIB, NEWCANT Float y COD_BARRA String.

Doy por solucionado mi problema "Campos se Vacían en ClientDataSet".

Saludos a Todos;
Responder Con Cita
  #9  
Antiguo 25-04-2017
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por novato_erick Ver Mensaje
Hola Jhonny:



Fue la solución a mi dolor de cabeza. en Agregar otro Campo utilcé InternalCalc colocando el tipo de Datos correspondiente a los campos de Tipo String a DESCRIB, NEWCANT Float y COD_BARRA String.

Doy por solucionado mi problema "Campos se Vacían en ClientDataSet".

Saludos a Todos;
¡Estupendo!
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #10  
Antiguo 25-04-2017
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Gracias jhonny

novato_erick, tanto el Calulated como el InternalCalc te permitian lograr lo que querias que era calcular el valor por registro.
La diferencia está en que el Calculated recalcula su valor cada vez que lo despliega, en cambio el InternalCalc lo almacena, de tal manera que hasta puedes hacer ordenamientos por los valores almacenados en este tipo de campo.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #11  
Antiguo 25-04-2017
novato_erick novato_erick is offline
Miembro
 
Registrado: ago 2010
Ubicación: Panamá
Posts: 396
Poder: 14
novato_erick Va por buen camino
Cita:
Empezado por movorack Ver Mensaje
Gracias jhonny

novato_erick, tanto el Calulated como el InternalCalc te permitian lograr lo que querias que era calcular el valor por registro.
La diferencia está en que el Calculated recalcula su valor cada vez que lo despliega, en cambio el InternalCalc lo almacena, de tal manera que hasta puedes hacer ordenamientos por los valores almacenados en este tipo de campo.
Hola:

movorack Asi es no me quede con la espina de saber la diferencia por la que hice un aprueba de Calculated ya que me mandaba error al compilar en la que al activar mi clientdataset no habia en el campo valor alguno para calcular...

Agradezco chicos enormemente su colaboración como siempre... Cualquier rato si pasan a Panamá son bienvenidos a mi tierra precisamente un lugar llamado Chiriquí donde hay de todo un poco..


Saludos Grandes Chicos del Club Delphi
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Campos agregados en ClientDataSet sleep25000 Conexión con bases de datos 0 22-05-2013 00:02:07
Campos ReadOnly y Required en ClientDataset gatosoft Providers 2 27-04-2012 00:23:28
Cargar campos en SQLDataset y ClientDataset toni.vi Conexión con bases de datos 0 11-02-2007 18:14:11
Campos calculados y clientdataset Grupo ISoftware Conexión con bases de datos 2 18-11-2003 01:57:01
Copiar Campos de un ClientDataSet a Otro linsua Conexión con bases de datos 4 06-11-2003 22:25:00


La franja horaria es GMT +2. Ahora son las 23:18:56.


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
Copyright 1996-2007 Club Delphi