Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Problema en suma de columnas y con el Qry (https://www.clubdelphi.com/foros/showthread.php?t=57767)

BuRtOn 26-06-2008 18:54:35

Problema en suma de columnas y con el Qry
 
Saludos amigos, miren lo que pasa es que estoy sumando la columna de una tabla, y lo logre, pero el problema esta es que cuando modifico el valor de uno de los valores que esta en esa tabla no me actualiza el dato, y siempre me va a dar como resultado el ultimo numero que sumó, ejemplo de lo que me esta pasando:

Tengo una tabla llamada ClienteAparte, manejo paradox, esta tabla contiene los siguientes campos:

Codigo________Nombre________Cantidad Pago________Fecha Pago
4 Pepito 2000 08/06/2008
5 Delp 1000 09/07/2008

especifico que tengo un Query y un Datasource, para poder sumar las columnas a continuacion describo lo que utilizo que es un Query un Datasource y un Datamodulo, aqui estan las propiedades de cada uno, para especificar a fondo todo:

Query Properties:

Activate : False
AutoCalcFields : True
AutoRefresh : False
CachedUpdate : True
Constrained : False
DatabaseName : bdgym(asi se llama mi base de datos)
DataSource :
Filter :
Filtered : False
[+]Filter Options : []
Name : QrySumar
ObjectView : False
ParamCheck : True
Params : [TParams]
RequesLive : False
SessionName :
SQL : select * from ClienteAparte
Tag : 0
Unidirectional : False
UpdateMode : UpWhereAll
UpdateObject:

DataSource1 Porperties

AutoEdit : True
[+]DataSet : QrySumar
Enabled : True
Name : DataSource1
Tag : 0


y cree un boton en el formulario donde esta el DBgrid y contiene el siguiente codigo:

Código Delphi [-]
procedure TfrmConsulPagoCliDia.Button1Click(Sender: TObject);

var total : double;

begin

dtmDatos.QrySumar.Active:= True;
dtmDatos.QrySumar.First;
total:=0;

while dtmDatos.QrySumar.Eof=False do
begin

total:=total+dtmDatos.QrySumar.fieldbyName('CliapCantidadPago').AsFloat;
dtmDatos.QrySumar.Next;
end;
 
ShowMessage(FloatToStr(total)); 
dtmDatos.QrySumar.UpdateRecord; 

end;

bueno hasta esa parte del codigo suùestamente esta bien y funciona, por que digo supuestamente, por que cuando ejecuto el programa pasa lo siguiente:

Codigo________Nombre________Cantidad Pago________Fecha Pago
4 Pepito 2000 08/06/2008
5 Delp 1000 09/07/2008

me aparece el mensaje 3000 , perfecto me salio la suma, y lo mejor de todo cuando edito el valor del campo Cantidad Pago, me da el resultado que es, pero el problema es que cuando sale el mensaje del resultado, osea se ejecuta el ShowMessage(FloatToStr(total)) y le doy aceptar o lo cierro, sale el siguiente error:

Project Giros.exe raised exception class EDatabaseError with Message 'QrySumar: Dataset not in edit or insert mode'. Process stopped.Use Step or Run to Continue.

ok help

le doy click en ok, y me sale este otro mensaje:

QrySumar: Dataset not in edit or insert mode


si ven ese es mi problema, y si le quito el dtmDatos.QrySumar.UpdateRecord pues no me actualiza los valores editados y siempre me va a mostrar el ultimo y unico valor que sumo, por favor espero que me puedan colaborar, gracias por su tiempo y comprencion..

coso 26-06-2008 19:50:56

Hola,

para modificar en querys BDE, debe estar requestlive en true, y luego para consultar, requestlive en false. Es recomendable pasarse a ADO, pues la BDE se considera obsoleta.

saludos


La franja horaria es GMT +2. Ahora son las 12:10:46.

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