Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Ayuda con IBQuery (https://www.clubdelphi.com/foros/showthread.php?t=60667)

pmtzg 09-10-2008 17:01:15

Ayuda con IBQuery
 
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
Código Delphi [-]
 
 
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:

Código Delphi [-]
 
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

Cita:

Empezado por pmtzg (Mensaje 319166)
Hola Compañeros
tengo una pequeña ....
Código Delphi [-]
  
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.


La franja horaria es GMT +2. Ahora son las 09:53:30.

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