Passando uma string no select + DELPHI
Bom dia a todos,
tem alguma função no Delphi que retorna o valor
em uma string para dentro de um SELECT.
tem alguma função no Delphi que retorna o valor
em uma string para dentro de um SELECT.
Anderson Mendes
Curtidas 0
Respostas
Rafael Cunha
25/01/2013
Explique melhor o que você esta querendo fazer.
GOSTEI 0
Anderson Mendes
25/01/2013
Ex:
tenho select montado numa query no Delphi.
O resultado desta pesquisa esta me gerando erro.
e quando testo no banco funciona perfeitamente,
porém o select que realizo no banco eu passo o contrato entre aspas como faço
isto no Delphi, tem alguma função para isto ?
tenho select montado numa query no Delphi.
Qyr.SQL.Add('SELECT * FROM DEVEDOR') Qyr.SQL.Add('WHERE CONTRATO =:CONT') Qry.ParamByName('CONT').AsString := NomeCli; Qry.Open;
O resultado desta pesquisa esta me gerando erro.
e quando testo no banco funciona perfeitamente,
porém o select que realizo no banco eu passo o contrato entre aspas como faço
isto no Delphi, tem alguma função para isto ?
GOSTEI 0
Rafael Cunha
25/01/2013
Passa o erro que está sendo retornado ao executar essa pesquisa pelo Delphi.
GOSTEI 0
Bruno Leandro
25/01/2013
Ola, o problema pode ser utilização do Qyr.SQL.Add(..., porque a primeira vez que voce pesquisar não havera erros, mas na segundo deve ocorrer erro.
para resolver voce pode usar assim
Qyr.Close;
Qyr.SQL.Clear;
Qyr.SQL.Add('SELECT * FROM DEVEDOR')
Qyr.SQL.Add('WHERE CONTRATO =:CONT')
Qry.ParamByName('CONT').AsString := NomeCli;
Qry.Open;
caso não seja o problema informe o erro exatamente para que possamos ajudar.
para resolver voce pode usar assim
Qyr.Close;
Qyr.SQL.Clear;
Qyr.SQL.Add('SELECT * FROM DEVEDOR')
Qyr.SQL.Add('WHERE CONTRATO =:CONT')
Qry.ParamByName('CONT').AsString := NomeCli;
Qry.Open;
caso não seja o problema informe o erro exatamente para que possamos ajudar.
GOSTEI 0
Bruno Leandro
25/01/2013
outra coisa que pode estar dando problema que voce esta pesquisando no campo Contrato, e esta passando a variavel nomecliente, caso o campo contrato seja numerico e voce esta passando o nome pode gerar erros
GOSTEI 0
William
25/01/2013
Complementando a resposta do colega Bruno, vc poderia usar a função QuotedStr que retorna o valor entre aspas, sendo esse valor uma tipo string:
Pessoalmente prefiro do modo que vc está fazendo, passando via parâmetro.
Mas em uma necessidade!
Qyr.Close; Qyr.SQL.Clear; Qyr.SQL.Add('SELECT * FROM DEVEDOR'); Qyr.SQL.Add('WHERE CONTRATO =' + QuotedStr(NomeCli)); Qry.Open;
Pessoalmente prefiro do modo que vc está fazendo, passando via parâmetro.
Mas em uma necessidade!
GOSTEI 0
Anderson Mendes
25/01/2013
Consegui resolver o problema
com a explicação do wllfl,
passando o QuotedStr. No momento de demonstrar o código,
errei dizendo que a variável era nomecli enquanto na verdade é contrato.
Obrigado ao restante do pessoal pela força.
com a explicação do wllfl,
passando o QuotedStr. No momento de demonstrar o código,
errei dizendo que a variável era nomecli enquanto na verdade é contrato.
Obrigado ao restante do pessoal pela força.
GOSTEI 0
Marcelo Henriques
25/01/2013
Bom, eu tenho uma situação um pouco diferente, mas as vezes, vocês podem me ajudar:
Eu tenho um formulário, onde eu faço o inventário.
Quando clico em "lançar", uma procedure vai em duas tabelas e faz a gravação dos lançamentos.
GEINVENTARIO - que recebe o cabeçalho
TB_MOVIMENTO - que recebe os produtos
Elas são ligadas por um id
Quando eu clico no "Gravar", eu consolido o documento e os itens, através de um update.
Após consolidar eu queria verificar se existe o item em uma outra tabela(GESALDOS), e se existir fazer um update. Se não existir quero gravar os produtos(na tabela GESALDOS).
Acredito que eu tenha que fazer um Select na TB_MOVIMENTO, visualizando os itens lançados para o documento e verificar um a um, através de o FOR de existe na GESALDOS e lançar.
Mas não estou sabendo como fazer.
Podem me ajudar?
Eu tenho um formulário, onde eu faço o inventário.
Quando clico em "lançar", uma procedure vai em duas tabelas e faz a gravação dos lançamentos.
GEINVENTARIO - que recebe o cabeçalho
TB_MOVIMENTO - que recebe os produtos
Elas são ligadas por um id
Quando eu clico no "Gravar", eu consolido o documento e os itens, através de um update.
Após consolidar eu queria verificar se existe o item em uma outra tabela(GESALDOS), e se existir fazer um update. Se não existir quero gravar os produtos(na tabela GESALDOS).
Acredito que eu tenha que fazer um Select na TB_MOVIMENTO, visualizando os itens lançados para o documento e verificar um a um, através de o FOR de existe na GESALDOS e lançar.
Mas não estou sabendo como fazer.
Podem me ajudar?
GOSTEI 0