Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Operaciones (https://www.clubdelphi.com/foros/showthread.php?t=82346)

rotsen26 26-02-2013 21:17:32

Operaciones
 
Hola, buen día a todos... Tengo un problema con una multiplicación...

La cual quiero agarrar los datos de los campos que están dentro de DBGrid y ponerlo en otro campo dentro del mismo DBGrid...

Si alguien me puede ayudar con este problema, se lo agradecería mucho!!!

Operación...

Cantidad * Precio = Importe

Son los campos del DBGrid...

roman 26-02-2013 21:30:21

¿El campo importe ya existe en tu tabla? Es decir, lo que quieres ¿es actualizar ese campo o simplemente presentarlo como campo calculado en tu dbgrid?

Si es esto último, y creo que debe ser así, lo que necesitas es utilizar el evento OnCalcFields del DatSet asociado al dbgrid y ahí poner algo como

Código Delphi [-]
DataSet['Importe'] := DataSet['Cantidad']*DataSet['Precio'];

// Saludos

Al González 26-02-2013 21:32:46

El DBGrid es sólo la forma de presentar los datos. En realidad están contenidos en el conjunto de datos que está asociado al TDataSource que está asociado al DBGrid.

Código Delphi [-]
DBGrid1.DataSource.DataSet ['Importe'] := DBGrid1.DataSource.DataSet ['Cantidad'] * DBGrid1.DataSource.DataSet ['Precio'];

O mejor:

Código Delphi [-]
ElDataSet ['Importe'] := ElDataSet ['Cantidad'] * ElDataSet ['Precio'];

Y, en caso de que Cantidad o Precio pudieran estar en blanco, entonces más seguro:

Código Delphi [-]
ElDataSet ['Importe'] := ElDataSet.FieldByName ('Cantidad').AsFloat * ElDataSet.FieldByName ('Precio').AsFloat;

rotsen26 26-02-2013 22:04:47

Cita:

Empezado por Al González (Mensaje 455618)
El DBGrid es sólo la forma de presentar los datos. En realidad están contenidos en el conjunto de datos que está asociado al TDataSource que está asociado al DBGrid.

Código Delphi [-]
DBGrid1.DataSource.DataSet ['Importe'] := DBGrid1.DataSource.DataSet ['Cantidad'] * DBGrid1.DataSource.DataSet ['Precio'];

O mejor:

Código Delphi [-]
ElDataSet ['Importe'] := ElDataSet ['Cantidad'] * ElDataSet ['Precio'];

Y, en caso de que Cantidad o Precio pudieran estar en blanco, entonces más seguro:

Código Delphi [-]
ElDataSet ['Importe'] := ElDataSet.FieldByName ('Cantidad').AsFloat * ElDataSet.FieldByName ('Precio').AsFloat;

Me parece perfecto este código...
Pero si los datos están en una memoria(memorydata), allí como se hace la operación???

Casimiro Noteví 26-02-2013 22:12:06

El componente de memoria también es un DataSet, por lo que será igual.

Por cierto, no olvides poner títulos descriptivos a tus preguntas: 'Operaciones' es poco descriptivo ;)

Al González 26-02-2013 23:00:29

Román, una disculpa, no había visto tu mensaje.

rotsen26, tal como te comentó Casimiro:
Cita:

Empezado por Casimiro Notevi (Mensaje 455624)
El componente de memoria también es un DataSet, por lo que será igual.

^\||/

Y apoyo la otra sugerencia que él te hace. Recuerda abrir hilos con títulos descriptivos. Por ejemplo, éste pudo llamarse: "¿Cómo asigno a un campo la multiplicación de otros dos? Mostrando los tres datos en un DBGrid." ;)

Casimiro Noteví 26-02-2013 23:26:01

Cita:

Empezado por Al González (Mensaje 455625)
Y apoyo la otra sugerencia que él te hace. Recuerda abrir hilos con títulos descriptivos. Por ejemplo, éste pudo llamarse: "¿Cómo asigno a un campo la multiplicación de otros dos? Mostrando los tres datos en un DBGrid." ;)

Con un título así, lo promocionamos a 'premium' con menos de 20 mensajes :D


La franja horaria es GMT +2. Ahora son las 01:14:26.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi