Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
adalbertomesquita Experiente
Registrado: Segunda-Feira, 4 de Agosto de 2008 Mensagens: 402 Localização: Brasília
|
Enviada: Sex Out 21, 2011 10:53 am Assunto: RESOLVIDO] Pegar variáveis do select |
|
|
Bom dia a todos!
Tenho uma Query com um select que tem uma variáviel que é preenchida por um TEdit.
Eu gostaria de executar essa Query e pegar todo o select e jogar pra uma Memo pra que eu possa ver como essa variável está sendo preenchida após executar a Query.
Eu consigo pegar o select só que a variável não altera com o valor que é preenchido o Edit.
Ex:
O Select é o seguinte:
SELECT CODCLI, CLIENTE
FROM PCCLIENT
WHERE CODCLI IN :CODIGO
No botão tem o seguinte comando:
QRCLIENTE.CLOSE;
QRCLIENTE.Parameters.ParamByName('CODIGO').Value := EDIT1;
QRCLIENTE.OPEN;
Aí eu tenho o comando pra pegar o select:
Memo1.text := QRCLIENTE.SQL.TEXT;
No Memo1 aparece o select só que a variável continua como :CODIGO e eu preciso que apareça o que foi preenchido no EDIT1.
No Memo1 eu preciso que apareça assim:
SELECT CODCLI, CLIENTE
FROM PCCLIENT
WHERE CODCLI IN (100,200,300)
Se o usuário tiver colocado no Edit1 esses valores.
Desde já agradeço a quem puder me ajudar!
Editado pela última vez por adalbertomesquita em Seg Out 24, 2011 6:15 pm, num total de 1 vez |
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Sex Out 21, 2011 11:01 am Assunto: |
|
|
Bom dia
Se a query está funcionando desta forma, você pode utilizar a função StringReplace para substituir o parâmetro CODIGO pelo texto do Edit para exibir a instrução no Memo. Ex:
Código: | Memo1.text := StringReplace(QRCLIENTE.SQL.TEXT, ':CODIGO', Edit1.Text, []); |
Espero que ajude.
_________________
Assinatura: Imobiliarias em Guarulhos |
|
Voltar ao Topo |
|
|
adalbertomesquita Experiente
Registrado: Segunda-Feira, 4 de Agosto de 2008 Mensagens: 402 Localização: Brasília
|
Enviada: Sex Out 21, 2011 12:42 pm Assunto: |
|
|
imex escreveu: | Bom dia
Se a query está funcionando desta forma, você pode utilizar a função StringReplace para substituir o parâmetro CODIGO pelo texto do Edit para exibir a instrução no Memo. Ex:
Código: | Memo1.text := StringReplace(QRCLIENTE.SQL.TEXT, ':CODIGO', Edit1.Text, []); |
Espero que ajude.
_________________
Assinatura: Imobiliarias em Guarulhos |
O problema é justamente porque não está funcionando assim. Então eu gostaria de capturar o select após a execução pra ver o que pode estar errado.
Editado pela última vez por adalbertomesquita em Sex Out 21, 2011 1:12 pm, num total de 1 vez |
|
Voltar ao Topo |
|
|
Anderson_bnu Novato
Registrado: Terça-Feira, 16 de Agosto de 2011 Mensagens: 20
|
Enviada: Sex Out 21, 2011 12:45 pm Assunto: |
|
|
Outra forma é você tirar fora a linha de parametros e passar o valor direto no select, tipo assim:
Código: | 'SELECT CODCLI, CLIENTE
FROM PCCLIENT
WHERE CODCLI IN ('+Edit1.Text+')' |
Pelo menos nos testes vai funcionar.
Valeu |
|
Voltar ao Topo |
|
|
imex Moderador
Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Sex Out 21, 2011 2:35 pm Assunto: |
|
|
Sou a favor do uso de parâmetros, mas não conheço uma forma de passar um array de valores que funcione, como seria necessário neste caso.
Acho que o jeito é concatenar como sugeriu o Anderson_bnu.
Com parâmetro, da forma como você tentou, imagino que os valores são tratados como se fossem um só, e que a query fique da seguinte forma:
Código: | WHERE CODCLI IN '(100,200,300)' |
Espero que ajude. |
|
Voltar ao Topo |
|
|
adalbertomesquita Experiente
Registrado: Segunda-Feira, 4 de Agosto de 2008 Mensagens: 402 Localização: Brasília
|
Enviada: Seg Out 24, 2011 6:02 pm Assunto: |
|
|
Anderson_bnu escreveu: | Outra forma é você tirar fora a linha de parametros e passar o valor direto no select, tipo assim:
Código: | 'SELECT CODCLI, CLIENTE
FROM PCCLIENT
WHERE CODCLI IN ('+Edit1.Text+')' |
Pelo menos nos testes vai funcionar.
Valeu |
Obrigado Amigão!
Funcionou. |
|
Voltar ao Topo |
|
|
|