PDA

Ver la Versión Completa : Operaciones


rotsen26
26-02-2013, 21:17:32
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


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.

DBGrid1.DataSource.DataSet ['Importe'] := DBGrid1.DataSource.DataSet ['Cantidad'] * DBGrid1.DataSource.DataSet ['Precio'];

O mejor:

ElDataSet ['Importe'] := ElDataSet ['Cantidad'] * ElDataSet ['Precio'];

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

ElDataSet ['Importe'] := ElDataSet.FieldByName ('Cantidad').AsFloat * ElDataSet.FieldByName ('Precio').AsFloat;

rotsen26
26-02-2013, 22:04:47
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.

DBGrid1.DataSource.DataSet ['Importe'] := DBGrid1.DataSource.DataSet ['Cantidad'] * DBGrid1.DataSource.DataSet ['Precio'];

O mejor:

ElDataSet ['Importe'] := ElDataSet ['Cantidad'] * ElDataSet ['Precio'];

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

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 Notevi
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:
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 Notevi
26-02-2013, 23:26:01
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