PDA

Ver la Versión Completa : ¿Campos Calculate?


Ledian_Fdez
15-08-2007, 19:38:22
Hola amigos de este foro
Hoy les traigo la siguiente interrogante. ¿Para que usar los campos Calculate?

Mi inquietud se debe a que tengo una tabla donde en uno de sus campos se guarda la suma de otros tres campos de esa misma tabla claro.¿Me preguntaba si me fuera útil usar campo calculados?


Utilizo Delphi7, la Base de Dato en Access 2003 y me conecto a través de ADO.

Ante todo
Miles de gracias
Salu2
Ledian

eduarcol
15-08-2007, 19:41:19
Claro que si, los dataset tienen un evento llamado onCalcFields, alli puedes calcular la suma de los tres campos asociados,

El calculated lo creas en el FieldsEditor

Ledian_Fdez
15-08-2007, 20:14:50
ok. Se crear un capo Calculate como bien dices en el Editor Fields. Lo que no se como relacionar el campo calculate con lo que quiero.

Supongamos que tengo:

1 tabla, llamada (Tabla) que contiene 2 campos (c1, c2 y c3) en c3 quiero guardar la suma de c1 y c2.

Me pudieras ayudar con codigo de ejemplo. :confused:

Salu2
Ledian

jhonny
15-08-2007, 20:25:43
Lo que no se como relacionar el campo calculate con lo que quiero.


Pues eso es lo que eduarcol acaba de explicarte... mira, en el evento OnCalcFields del Dataset pones dicha operación, ejemplo:


procedure TForm1.IBTable1CalcFields(DataSet: TDataSet);
begin
c3 := c1 + c2;
end;


Y Listo.

Ledian_Fdez
15-08-2007, 20:36:48
OK. Eso esta barbarisimo. El problema es que no me guarda ese valor en la tabla.

¿entienden?

salu2
Ledian

jhonny
15-08-2007, 20:48:00
¿entienden?



Claro que entendemos, pero como no habias dicho. :mad:

eduarcol
15-08-2007, 21:02:26
OK. Eso esta barbarisimo. El problema es que no me guarda ese valor en la tabla.

¿entienden?

salu2
Ledian

Si el problema que no tienes porq guardarlo, para eso estan ese tipo de campos, no tienes que guardar informacion redundante en la tabla, ahora si lo necesitas guardado no lo crees con el field editor sino que lo creas directamente en la tabla

hawerd gutierre
16-08-2007, 22:04:50
Hola a todos .....tengo el siguiente problema....tengo un procedimiento almacenado en interbase el cual me funciona bien desde el ibexpert, y desde un ejecutable al cual lo conecto mediante el bde, y usando un query para consultarlo me funcionan bien y me trae todo los valores a un grid.....el problema es que estoy creando otro modulo para conectarme a la misma base de datos pero mediante los componentes IB, para conectarme a la base de datos uso lo siguiente: with DataModule1.IBDBPrincipal do
begin
Connected := false;
LoginPrompt := False;
DatabaseName :=Edit1.Text;
Params.Add( 'USER_NAME=SYSDBA');
Params.Add( 'PASSWORD=masterkey');
SQLDialect := 3;
TraceFlags := [];
IdleTimer := 0;
Connected := True;
end;

al parecer no hay problemas con la coneccion. Pero al tratar de usar un query y referirme a storedprocedure este no lo reconoce , solo reconoce las tablas, entonces coloque un IBSTOREDPROC el cual puedo hasta poner los campos persisentes, el problemas es que al ejecutarlo no me trae lso datos al grid , utiliso el sgte codigo :
IBStoredProc1.Close;
IBStoredProc1.Params.Clear;
IBStoredProc1.ParamByName('FECHAI').Value := DateTimePicker1.Date;
IBStoredProc1.ParamByName('FECHAF').Value := DateTimePicker2.Date;
IBStoredProc1.ParamByName('APLIC_DESC_TARJ').Value := 0;
IBStoredProc1.ParamByName('PORC_PAC_PRIV').Value := 0;
IBStoredProc1.Prepare;
IBStoredProc1.ExecProc;

Alguie sabe por que no se presentan los datos.....o alguna manera de traer ese stored procedure a mi grid:confused:

Ledian_Fdez
17-08-2007, 15:14:36
Miles de grasias a todos
Ya les entiendo. Tienen razon.

Los consejos de ustedes me han sido muy utiles.:)


Salu2
Ledian

Lynn
19-08-2007, 07:11:46
bueno tambien estoy en algo mi opion es que en realidad no lo guarda por que su mismo nombre lo dice solo lo calcula al momento de ejecutar el programa ademas es bueno por una parte ya que te permite un Gran ahorro en la base de datos en access (Espacio)