PDA

Ver la Versión Completa : Ayuda con IBQuery


pmtzg
09-10-2008, 17:01:15
Hola Compañeros
tengo una pequeña aplicación en la cual utilizo Delphi 7 y Firebird 2.1
a su vez un form con ibdatabase, ibquery, ibtransaction e ibtable

pero tengo dudas por que no me sale la ejecuación del query

esta es:

tengo una variable llamada consulta y un parametro
llamado document y una variable llamada misaldo(integer)
y le asigno lo siguiente:



al parametro lo di de alta en la opción del query-params y es de tipo string
conecto mi base, abro la ibtable
y lo que deseo hacer es que tome el valor de un campo llamado
cve_doc de esta manera


while not ibtable.Eof do
begin
Ibquery.Sql.Clear;
consulta:='select , sum(cuen01.importe) as abono
from
cuen01 inner join conc01 on cuen01.tipo_mov=conc01.num_cpto
where conc01.tipo='A' and conc01.con_refer <> 'N'
and cuen01.no_factura=:document';

ibquery.params.ParamByName('document').AsString:=Ibtable.FieldValue['cve_doc'];
Ibquery.Sql.Add(consulta);
Ibquery.Active:=true;
IBquery.Open;
misaldo:=IBquery.FieldValues['abonos'];
IBtable.Next;
end;


con esto deseo saber el saldo de cada documento
pero al momento de empezar me manda el mensaje de :
EdatabaseError With message 'Ibquery: Parameter 'document' not found'

alguien me podria orientar
que es lo que estoy haciendo mal
gracias por su ayuda ...,

jhonny
09-10-2008, 17:09:52
Pues asi, a simple vista, pruebalo asi y nos cuentas:


while not ibtable.Eof do
begin
Ibquery.Sql.Clear;
consulta:='select , sum(cuen01.importe) as abono
from
cuen01 inner join conc01 on cuen01.tipo_mov=conc01.num_cpto
where conc01.tipo=''A'' and conc01.con_refer <> ''N''
and cuen01.no_factura=:document';

Ibquery.Sql.Add(consulta);
Ibquery.Close;
Ibquery.ParamByName('document').AsString:=Ibtable.FieldValue['cve_doc'];
Ibquery.Open;
misaldo:=IBquery.FieldValues['abonos'];
IBtable.Next;
end;

Caro
09-10-2008, 18:57:11
Hola pmtzg, el error te da porque estas llenando el parametro antes de que armes tu consulta en la propiedad SQL, con lo que te ha puesto el amigo jhonny debería funcionarte.

Saluditos

santiago14
05-06-2013, 16:46:12
Hola Compañeros
tengo una pequeña ....

while not ibtable.Eof do
begin
Ibquery.Sql.Clear;
consulta:='select , sum(cuen01.importe) as abono
from
cuen01 inner join conc01 on cuen01.tipo_mov=conc01.num_cpto
where conc01.tipo='A' and conc01.con_refer <> 'N'
and cuen01.no_factura=:document';

ibquery.params.ParamByName('document').AsString:=Ibtable.FieldValue['cve_doc'];
Ibquery.Sql.Add(consulta);
Ibquery.Active:=true;
IBquery.Open;
misaldo:=IBquery.FieldValues['abonos'];
IBtable.Next;
end;

....


Me pasaba lo mismo, estuve toda la mañana con el tema y resulta que era el asuntito de las comillas.
A pesar de ser un post viejo, agradezco que lo hayan puesto en aquella oportunidad.

Santiago.