Passando uma string no select + DELPHI

25/01/2013

11

Bom dia a todos,

tem alguma função no Delphi que retorna o valor

em uma string para dentro de um SELECT.
Responder

Posts

25/01/2013

Rafael Cunha

Explique melhor o que você esta querendo fazer.
Responder
Ex:

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 ?
Responder

25/01/2013

Rafael Cunha

Passa o erro que está sendo retornado ao executar essa pesquisa pelo Delphi.
Responder

25/01/2013

Bruno Leandro

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.
Responder

25/01/2013

Bruno Leandro

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
Responder

25/01/2013

William

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:
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!
Responder
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.
Responder
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?
Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira