Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Insertar campo calculado con Clientdataset (https://www.clubdelphi.com/foros/showthread.php?t=74425)

JJMR2009 18-06-2011 20:41:29

Insertar campo calculado con Clientdataset
 
Buenas Soy Nuevo en Delphi, mi problema es que tengo una tabla de memoria con clientdataset, y tengo campos calculados Total es igual a precio x cantidad, en el grid me los muestra pero en el momento de guardar a la tabla todos los registros guardan menos el de total que es el campo calculado.

Como puedo guardar el valor de dicho campo. este es mi código para guardar en la tabla

Código Delphi [-]
  With ADOCONNECTION1 do
  begin
    Connected := True;
    With ADOTABLE1 do
     begin
      Active := True;
      CDS.ApplyUpdates(0);
      Active := False;
   end;

Gracias de antemano

ecfisa 18-06-2011 21:16:24

Hola JJMR2009.

Precisamente la idea del campo calculado es que no resida fisicamente en la en la consulta/tabla, permitiendo ahorrar espacio de almacenamiento y evitando redundancias. Un ejemplo típico de este, es una tabla donde tenemos los campos: Nombre y Apellido y deseamos mostrar nombre completo. Usamos el campo calculado para concatenar Nombre + Apellido.

Si tenés necesidad de que el resultado del campo calculado este en la tabla, deberías crear un campo físico para el mismo, pero no me parece buena idea.

¿Por que motivo queres guardarlo ?

Saludos.

Nota: Por favor cuando pongas código Delphi encerralo entre las etiquetas [delphi] [/delphi], gracias.

JJMR2009 18-06-2011 21:59:27

Deseo guardar el campo calculado porque estoy tratando de hacer una lista de pedidos mediante un dbgrid conectado a clientdataset, adotable1, datasetprovider, al ingresar una linea debo calcular el total precio x cantidad y almacenar el total, para luego saber cuanto compró un cliente en particular.

También necesitaba algo parecido para descontar del inventario....
Gracias... Buen día para todos.

ecfisa 18-06-2011 22:23:14

Hola.

Cita:

al ingresar una linea debo calcular el total precio x cantidad y almacenar el total, para luego saber cuanto compró un cliente en particular.
Segun entiendo en cada línea el campo calculado corresponde al subtotal de cantidad x precio de un comprobante (factura por ej.) y al finalizar querés obtener la sumatoria de los subtotales como el total de la compra realizada.

Si es así, te podrías valer de una variable para ir acumulando los subtotales o calcularlo al terminar la emisión de líneas y luego guardarlo.

Como implementes eso dependerá de como esté organizada la información, las líneas que mencionas ¿ Corresponden a una tabla detalle del comprobante ?

Saludos.

JJMR2009 18-06-2011 22:48:06

Cita:

Empezado por ecfisa (Mensaje 404196)
Hola.



Segun entiendo en cada línea el campo calculado corresponde al subtotal de cantidad x precio de un comprobante (factura por ej.) y al finalizar querés obtener la sumatoria de los subtotales como el total de la compra realizada.

Si es así, te podrías valer de una variable para ir acumulando los subtotales o calcularlo al terminar la emisión de líneas y luego guardarlo.

Como implementes eso dependerá de como esté organizada la información, las líneas que mencionas ¿ Corresponden a una tabla detalle del comprobante ?

Saludos.


Si tengo una tabla "Ventas", donde quiero almacenar el cliente, el articulo, cantidad, Precio, y total. de cada una de la lineas de la factura. Todo me guarda bien pero no logro guardar el total de precio x cantidad. por lo que comentaba antes que el campo total es un campo calculado en un clientdataset...

Creo que si es como tu dices, sólo que no se el codigo para hacerlo...

Gracias por tus respuestas.

ecfisa 18-06-2011 23:14:49

Hola.

Creo que no estoy entendiendo como tenes organizada la información...

¿ Podrías especificar someramente la estructura de la tabla cabecera (cliente, total, etc) y la de detalle (producto, cantidad, precio, subtotal) ?


Saludos.

JJMR2009 18-06-2011 23:50:58

Ok: Tengo un dbgrid asociado a un clientdataset, DatasetProvider, Datasorse, y una tabla Ventas...

Voy ingresando lineas al Dbgrid así:
Código Delphi [-]
with CDS do
     begin
     Append;
          FieldByname('Cantidad').AsFloat := strtofloat(cant.Text);
          FieldByname('Articulo').AsString := Articulo.Text;
           FieldByname('Precio').AsString := Precio.Text;
 Post;

El problema es que si cambio la cantidad, lógicamente el subtotal debe cambia en esa linea. Bien eso en pantalla lo hago con un campo calculado del clientdataset.

Los campos de esta tabla "Ventas" son documento, Articulo, Precio, Cantidad, Total, fecha. Estoy Trabajando con access... Disculpa mi ignorancia... Gracias

JJMR2009 19-06-2011 00:38:01

Cita:

Empezado por ecfisa (Mensaje 404200)
Hola.

Creo que no estoy entendiendo como tenes organizada la información...

¿ Podrías especificar someramente la estructura de la tabla cabecera (cliente, total, etc) y la de detalle (producto, cantidad, precio, subtotal) ?


Saludos.


GRACIASSSS....Por la aclaración , ya pude solucionar mi problema. Si era como Ud decía. No había necesidad de grabar ese campo calculado. Ya en una consulta aparte se calcula


La franja horaria es GMT +2. Ahora son las 20:54:09.

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