Fórum Query com parâmetros #37726

30/07/2003

0

Estou fazendo uma consulta em uma query, usando IB, e preciso passar dois parâmetros, acontece que a query só consegue ler um parâmetro.

a sequencia de linhas é assim :

query1.sql.add(´select * from ´mytable´ where ´DataVenc´ <=:par0 ´);
query1.sql.add(´and ´StatusPago´ =:par1´);
query1.parambyname(´par0´).asdate:=strtodate(edit1.text);
query1.parambyname(´par1´).asstring:=´S´
query1.open;

só que se eu deixar só o par0(primeiro parametro) a query lê normal, mas se colocar o par1(segundo parametro) não traz os registros que eu preciso.



É URGENTE ......


Carlos Jatai

Carlos Jatai

Responder

Posts

30/07/2003

Midas

[quote:a48539c52e=´Carlos Jatai´]Estou fazendo uma consulta em uma query, usando IB, e preciso passar dois parâmetros, acontece que a query só consegue ler um parâmetro.

a sequencia de linhas é assim :

query1.sql.add(´select * from ´mytable´ where ´DataVenc´ <=:par0 ´);
query1.sql.add(´and ´StatusPago´ =:par1´);
query1.parambyname(´par0´).asdate:=strtodate(edit1.text);
query1.parambyname(´par1´).asstring:=´S´
query1.open;

só que se eu deixar só o par0(primeiro parametro) a query lê normal, mas se colocar o par1(segundo parametro) não traz os registros que eu preciso.



É URGENTE ......[/quote:a48539c52e]

que tal no segundo parametro use ...
query1.sql.add(´ or ´STATuspago´ = :par1´);


Responder

Gostei + 0

30/07/2003

Afarias

|só que se eu deixar só o par0(primeiro parametro) a query lê normal,
|mas se colocar o par1(segundo parametro) não traz os registros que eu
|preciso.

O q acontece?? Ocorre algum erro?? se SIM, qual o erro?? se NÃO, então é pq vc não tem valores com a condição especificada.


T+


Responder

Gostei + 0

31/07/2003

Carlos Jatai

Não acintece nada, simplesmente não traz os registros que preciso. Ok afarias, e com certeza tenho valores com as especificações do select.


Midas, é necessáriuo as duas condições para quos registro sejam mostardos como desejamos.

Obrigado


Responder

Gostei + 0

31/07/2003

Afarias

Se não ocorre erro então o SQL está correto e todo caminho de ida e retorno do banco parece OK.

Rode o mesmo SQL em um aplicativo como o IBConsole colocando os mesmos valores nos parâmetros e vcja se traz registros.

Te aconselho usar um SQLMonitor para verificar os valores dos parâmetros enviados ao banco, e então verificar se os parâmetros estão incorretos.


T+


Responder

Gostei + 0

03/08/2003

Carlos Jatai

caros amigos, agradeço muito a participação de vcs neste forum, e no desejo de vcs de ajudarem aos qu epassam pro problemas na hora de desenvolver um sistema que, talvez, vcs já tenham passado. Muito vale a experiencia e o conhecimento quando andam juntos.

Um amigo do Paraná deu a solução para aquele problema da query q ue não lia dois parâmetros, sugeriu que eu tebtasse os commando prepare e unprepare, que funcionou imediatamente ....

Agradeço a vcs a ajuda, que DEUS os abençoe ricamente.

Carlos Jatai


Responder

Gostei + 0

03/08/2003

Afarias

|Um amigo do Paraná deu a solução para aquele problema da query q ue
|não lia dois parâmetros, sugeriu que eu tebtasse os commando prepare
|e unprepare, que funcionou imediatamente ....

Não tinha reparado q estava usando BDE. No IBX o Prepare/Unprepare são automáticos, de forma q nunca precisam ser utilizados.


|Agradeço a vcs a ajuda, que DEUS os abençoe ricamente.

Obrigado. A função do Fórum é justamente trocar experiências.


T+


Responder

Gostei + 0

03/08/2003

Aroldo Zanela

Colegas,

Não creio que o problema seja relacionado com prepare/unprepare, pois a única coisa que vejo que está faltando é fechar a query antes de passar os parâmetros. Mas imaginei que isso foi omitido apenas neste fragmento de código.
Lembrando que de acordo com seu script, os dois parâmetros devem ser atendidos (verdadeiros) para que se tenha um conjunto de dados de resultado. Portanto, independente de outros fatores, seu script acima, com exceção da ausência do close está correto.
A propósito, quando você está utilizando parâmetros não é necessário efetuar a ´montagem´ do SQL dinamicamente, bastando fechar, passar os parâmetros e abrir.


Responder

Gostei + 0

03/08/2003

Imstaff

tente fazer o seguinte:

[i:cbc0982fed]query1.sql.add(´select * from ´mytable´ where ´DataVenc´ <=:par0 ´);
query1.sql.add(´and ´StatusPago´ =:par1´); [/i:cbc0982fed]
[b:cbc0982fed]query1.Params.ParseSQL(query1.SQL.Text,True);[/b:cbc0982fed]
[i:cbc0982fed]query1.parambyname(´par0´).asdate:=strtodate(edit1.text);
query1.parambyname(´par1´).asstring:=´S´
query1.open; [/i:cbc0982fed]


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar