Query com parâmetros
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 ......
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
Curtidas 0
Respostas
Midas
30/07/2003
[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´);
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´);
GOSTEI 0
Afarias
30/07/2003
|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+
|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+
GOSTEI 0
Carlos Jatai
30/07/2003
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
Midas, é necessáriuo as duas condições para quos registro sejam mostardos como desejamos.
Obrigado
GOSTEI 0
Afarias
30/07/2003
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+
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+
GOSTEI 0
Carlos Jatai
30/07/2003
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
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
GOSTEI 0
Afarias
30/07/2003
|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+
|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+
GOSTEI 0
Aroldo Zanela
30/07/2003
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.
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.
GOSTEI 0
Imstaff
30/07/2003
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]
[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]
GOSTEI 0