Fazer consulta SQL no delphi
Bom, o que estou tentando fazer é um Select em uma tabela temporária no Delphi pelo componente TQuery. Segue o código abaixo:
oQuery.Close;
oQuery.SQL.Clear;
oQuery.SQL.Add('SELECT *');
oQuery.SQL.Add('FROM #TabTemp');
oQuery.SQL.Add('WHERE DES_PROD LIKE "%" ' + EditPesquisa.Text + ' "%" ');
oQuery.Open;
Quando tento abrir a query, recebo o erro na segunda linha. Se alguém puder me ajudar eu agradeço.
oQuery.Close;
oQuery.SQL.Clear;
oQuery.SQL.Add('SELECT *');
oQuery.SQL.Add('FROM #TabTemp');
oQuery.SQL.Add('WHERE DES_PROD LIKE "%" ' + EditPesquisa.Text + ' "%" ');
oQuery.Open;
Quando tento abrir a query, recebo o erro na segunda linha. Se alguém puder me ajudar eu agradeço.
Matheus Gomes
Curtidas 0
Respostas
Douglas
29/12/2015
Opa Matheus, tudo bem?
Você poderia postar o código com o erro? Assim fica mais fácil de analisar. :)
Você poderia postar o código com o erro? Assim fica mais fácil de analisar. :)
GOSTEI 0
William
29/12/2015
Um dos motivos está na concatenação de strings, faltando espaços então sua instrução SQL estava sendo executada assim:
Adicionando espaços ao final das concatenações:
SELECT *FROM #TabTempWHERE DES_PROD LIKE "%" ' + EditPesquisa.Text + ' "%"
Adicionando espaços ao final das concatenações:
oQuery.Close; oQuery.SQL.Clear; oQuery.SQL.Add('SELECT * '); oQuery.SQL.Add('FROM #TabTemp '); oQuery.SQL.Add('WHERE DES_PROD LIKE "%" ' + EditPesquisa.Text + ' "%" '); oQuery.Open;
GOSTEI 0
Douglas
29/12/2015
Opa William, tudo bem?
Permita-me fazer uma pequena correção no código? Segue abaixo:
No código postado pelo Mateus, irá apresentar um erro ao executar a query por falta de aspas no parâmetro de pesquisa. Isso pode ser facilmente resolvido através da função QuotedStr, pois a mesma adiciona as aspas. É importante que ele post o código com o erro para identificarmos realmente o que é.
Permita-me fazer uma pequena correção no código? Segue abaixo:
oQuery.Close; oQuery.SQL.Clear; oQuery.SQL.Add('SELECT * '); oQuery.SQL.Add('FROM #TabTemp '); oQuery.SQL.Add('WHERE DES_PROD LIKE ' + QuotedStr('%' + EditPesquisa.Text + '%'); oQuery.Open;
No código postado pelo Mateus, irá apresentar um erro ao executar a query por falta de aspas no parâmetro de pesquisa. Isso pode ser facilmente resolvido através da função QuotedStr, pois a mesma adiciona as aspas. É importante que ele post o código com o erro para identificarmos realmente o que é.
GOSTEI 0
William
29/12/2015
Perfeito Douglas.
GOSTEI 0
Armaky
29/12/2015
Opa William, tudo bem?
Permita-me fazer uma pequena correção no código? Segue abaixo:
No código postado pelo Mateus, irá apresentar um erro ao executar a query por falta de aspas no parâmetro de pesquisa. Isso pode ser facilmente resolvido através da função QuotedStr, pois a mesma adiciona as aspas. É importante que ele post o código com o erro para identificarmos realmente o que é.
Permita-me fazer uma pequena correção no código? Segue abaixo:
oQuery.Close; oQuery.SQL.Clear; oQuery.SQL.Add('SELECT * '); oQuery.SQL.Add('FROM #TabTemp '); oQuery.SQL.Add('WHERE DES_PROD LIKE ' + QuotedStr('%' + EditPesquisa.Text + '%'); oQuery.Open;
No código postado pelo Mateus, irá apresentar um erro ao executar a query por falta de aspas no parâmetro de pesquisa. Isso pode ser facilmente resolvido através da função QuotedStr, pois a mesma adiciona as aspas. É importante que ele post o código com o erro para identificarmos realmente o que é.
GOSTEI 0
Arthur Heinrich
29/12/2015
Opa William, tudo bem?
Permita-me fazer uma pequena correção no código? Segue abaixo:
No código postado pelo Mateus, irá apresentar um erro ao executar a query por falta de aspas no parâmetro de pesquisa. Isso pode ser facilmente resolvido através da função QuotedStr, pois a mesma adiciona as aspas. É importante que ele post o código com o erro para identificarmos realmente o que é.
Permita-me fazer uma pequena correção no código? Segue abaixo:
oQuery.Close; oQuery.SQL.Clear; oQuery.SQL.Add('SELECT * '); oQuery.SQL.Add('FROM #TabTemp '); oQuery.SQL.Add('WHERE DES_PROD LIKE ' + QuotedStr('%' + EditPesquisa.Text + '%'); oQuery.Open;
No código postado pelo Mateus, irá apresentar um erro ao executar a query por falta de aspas no parâmetro de pesquisa. Isso pode ser facilmente resolvido através da função QuotedStr, pois a mesma adiciona as aspas. É importante que ele post o código com o erro para identificarmos realmente o que é.
Além de corrigir o problema das aspas simples, ao utilizar o QuotedStr() evitamos problemas com SQL Injection.
Porém, ainda resta um problema de performance, uma vez que o texto pesquisado sempre inicia com '%', invalidando qualquer possibilidade de uso de índices.
GOSTEI 0