Fórum Erro ao executar select no delphi #479237

16/05/2014

0

prezados boa tarde

estou fazendo uma consulta no Delphi conforme abaixo:

procedure TPRINCIPAL.SpeedButton1Click(Sender: TObject);
var dat1, dat2,cpn, tp:string;
begin
Edit4.Text:=Edit2.Text;
dat1:=Edit2.Text;
dat2:=Edit3.text;
cpn:=Edit1.Text;
tp:=ComboBox1.Text;
adotg.Close;
adotg.SQL.Add('SELECT * FROM publicacao where tema like'+quotedstr(edit1.text)+'and tipo='+quotedstr(ComboBox1.text)+'and vi='+quotedstr(edit2.text)+'and vf='+quotedstr(Edit3.text));
adotg.Open
end;

No Entando ao clicar no botão ele exibe esta mensagem :
[img]http://arquivo.devmedia.com.br/forum/imagem/345649-20140516-154112.png[/img]

alguem pode me ajudar?

Junior

Junior

Responder

Posts

16/05/2014

Rafael Mota

Boa tarde!
Não sou profundo conhecedor do MySQL, mas creio que o Like é usado em "conjunto" com o %.
Por exemplo:
LIKE ‘a%’ // palavras começadas em a

 LIKE ‘%a’ // palavras terminadas em



Espero que seja isso.

Abraços e boa sorte!
Responder

Gostei + 0

16/05/2014

Ricardo

Junior,

Tenta assim:

Essa forma faz uma consulta exata pelo o que foi informado.

adotg.Close;
adotg.Clear;
adotg.SQL.Add('SELECT * FROM publicacao where tema like'+ quotedstr(edit1.text));
adotg.SQL.Add('and tipo = '+ quotedstr(ComboBox1.text));
adotg.SQL.Add('and vi = '+ quotedstr(edit2.text));
adotg.SQL.Add('and vf = '+ quotedstr(Edit3.text));
adotg.Open;

Se quiser procurar por parte do que foi informado então faz assim:

adotg.SQL.Add('SELECT * FROM publicacao where tema like'+ quotedstr('%'+edit1.text+'%'));
ou
adotg.SQL.Add('SELECT * FROM publicacao where tema like'+ quotedstr('%'+edit1.text));
ou
adotg.SQL.Add('SELECT * FROM publicacao where tema like'+ quotedstr(edit1.text+'%'));

e por ai vai...


Mantenha os espaços entre o "+" e o QuotedStr e os espaços aos lados do "=".
Responder

Gostei + 0

26/05/2014

Junior

Boa tarde

tentei as soluções apontadas mas o erro persiste ainda.
Responder

Gostei + 0

26/05/2014

Marcos Saffran

você colocou espaço depois do like?

poste o código que está sendo enviado.
Responder

Gostei + 0

26/05/2014

Junior

sim, tipo até criei um outro banco pensando que era falha no mysql mas o erro continua, tentei usar dois scrpit's mas nenhum obteve resultado.
1º Tentativa
adotg.Clear;
adotg.SQL.Add('SELECT * FROM tabloide where TEMA like'+ quotedstr(edit1.text));
adotg.SQL.Add('and tipo = '+ quotedstr(ComboBox1.text));
adotg.SQL.Add('and vi = '+ quotedstr(edit2.text));
adotg.SQL.Add('and vf = '+ quotedstr(Edit3.text));

2º tentativa
adotg.Close;
adotg.Clear;
adotg.SQL.Add('SELECT * FROM tabloide where TEMA like '+quotedstr(edit1.text)+' and tabloide_guia = '+quotedstr(ComboBox1.text)+' and vi = '+quotedstr(edit2.text)+' and vf = '+quotedstr(Edit3.text));
adotg.Open;

Responder

Gostei + 0

26/05/2014

Marcos Saffran

sim, tipo até criei um outro banco pensando que era falha no mysql mas o erro continua, tentei usar dois scrpit's mas nenhum obteve resultado.
1º Tentativa
adotg.Clear;
adotg.SQL.Add('SELECT * FROM tabloide where TEMA like'+ quotedstr(edit1.text));
adotg.SQL.Add('and tipo = '+ quotedstr(ComboBox1.text));
adotg.SQL.Add('and vi = '+ quotedstr(edit2.text));
adotg.SQL.Add('and vf = '+ quotedstr(Edit3.text));

2º tentativa
adotg.Close;
adotg.Clear;
adotg.SQL.Add('SELECT * FROM tabloide where TEMA like '+quotedstr(edit1.text)+' and tabloide_guia = '+quotedstr(ComboBox1.text)+' and vi = '+quotedstr(edit2.text)+' and vf = '+quotedstr(Edit3.text));
adotg.Open;


Por favor poste a mensagem de erro com a 2ª tentativa, percebi que você mudou a tabela, é isso mesmo?
Responder

Gostei + 0

26/05/2014

Junior

sim como disse, recriei o bd todo, mas o erro continuou
[img]http://arquivo.devmedia.com.br/forum/imagem/345649-20140526-164230.png[/img]
Responder

Gostei + 0

26/05/2014

Romulo Silva

Tive um problema parecido com este.
troquei * pelo conjunto de campos
se apresentar o mesmo problema execute fora do delphi
para ver como se comporta, o problema também pode estar na versão do mysql
ou até no componente ado

with adotg do
begin
Clear;
SQL.Add('SELECT tema,tipo,vi,vf FROM tabloide where TEMA like'+ quotedstr(edit1.text));
SQL.Add('and tipo = '+ quotedstr(ComboBox1.text));
SQL.Add('and vi = '+ quotedstr(edit2.text));
SQL.Add('and vf = '+ quotedstr(Edit3.text));
open;
end;
Responder

Gostei + 0

27/05/2014

Nelson Santos

ganhe dinheiro com softwares 3D com Delphi 7
http://www.3dsistemas.com.br
Responder

Gostei + 0

03/06/2014

Junior

boa tarde amigos, tentei de todas as formas apontadas mas o erro persiste,
ja troquei a versão do mysql e do odbc, mas continua dando erro, alguém tem outra ideia do que posso fazer?
Responder

Gostei + 0

03/06/2014

Junior

consegui solucionar, acrescentei uma linha ao script e funcionou!
ado1capa.Close;
ado1capa.SQL.Clear;
ado1capa.SQL.Add('Select * from produtos_p_pagina where secao= "1ª Capa"' + quotedstr('%'+edit2.text+'%')'and vi = '+ quotedstr('%'+edit2.text+'%'));
ado1capa.SQL.Add('and vf = '+ quotedstr(edit3.text));
ado1capa.SQL.Add('and tabloide like '+ quotedstr(edit1.text));
ado1capa.Open;

a linha acrescentada foi : ado1capa.SQL.Clear;
por incrivel que pareca rs, tipo o delphi lia o comando que estava dentro da query executava junto com o select que eu colocava no script do botao

flw pessoal vlw
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar