O que há de errado neste comando SQL! Por favor!!!!!!!!!!!!!

Firebird

24/07/2003

Olá amigos,
o que há de errado neste comando?

procedure TForm1.BitBtn1Click(Sender: TObject);
var SearchDesc,SearchDesc2 : string;
begin
SearchDesc:=edit1.text;
with qryBuscaDesc do
begin
active := False;
sql.clear;
sql.add (´SELECT COD_PRODUTO, DESCRICAO´);
sql.add (´FROM PRODUTO´);
sql.add (´WHERE COD_PRODUTO = ´´´ + SearchDesc + ´´´´);
SearchDesc2:=FieldByName(´DESCRICAO´);
active := True;
label1.caption:=SearchDesc2;

end;
end;

Como podem ver eu quero fazer uma consulta SQL a partir de um código digitado num TEdit, achar a descrição do código digitado e jogar essa descrição num TLabel. Eu uso Delphi6/IB6
Muito obrigado!


Anarchybra

Anarchybra

Curtidas 0

Respostas

Basilio.sp

Basilio.sp

24/07/2003

Caro AnarchyBRA,

Vamos lá... Primeiro detalhe: apesar de não ser algo obrigatório, sempre que você precisar passar um parâmetro string para uma query utilize a função QuotedStr. Fica bem mais legível o código e evita erros na quantidade de apóstrofes que você precisa digitar.

Outro detalhe: pelo que pude ver, você quer o resultado da query numa variável chamada SearchDesc2, certo? Mas, antes mesmo de executar a query, você já tenta atribuir o valor... Como você pode querer armazenar o resultado de uma query que ainda não foi executada?

Então, o mais coerente seria deixar o código assim:

procedure TForm1.BitBtn1Click(Sender: TObject);
var SearchDesc,SearchDesc2 : string;
begin
SearchDesc:=edit1.text;
with qryBuscaDesc do
begin
active := False;
sql.clear;
sql.add (´SELECT COD_PRODUTO, DESCRICAO´);
sql.add (´FROM PRODUTO´);
sql.add (´WHERE COD_PRODUTO = ´ + QuotedStr (SearchDesc));
active := True;
SearchDesc2:=FieldByName(´DESCRICAO´);
label1.caption:=SearchDesc2;
end;
end;


GOSTEI 0
Basilio.sp

Basilio.sp

24/07/2003

Caro AnarchyBRA,

Vamos lá... Primeiro detalhe: apesar de não ser algo obrigatório, sempre que você precisar passar um parâmetro string para uma query utilize a função QuotedStr. Fica bem mais legível o código e evita erros na quantidade de apóstrofes que você precisa digitar.

Outro detalhe: pelo que pude ver, você quer o resultado da query numa variável chamada SearchDesc2, certo? Mas, antes mesmo de executar a query, você já tenta atribuir o valor... Como você pode querer armazenar o resultado de uma query que ainda não foi executada?

Então, o mais coerente seria deixar o código assim:

procedure TForm1.BitBtn1Click(Sender: TObject);
var SearchDesc,SearchDesc2 : string;
begin
SearchDesc:=edit1.text;
with qryBuscaDesc do
begin
active := False;
sql.clear;
sql.add (´SELECT COD_PRODUTO, DESCRICAO´);
sql.add (´FROM PRODUTO´);
sql.add (´WHERE COD_PRODUTO = ´ + QuotedStr (SearchDesc));
active := True;
SearchDesc2:=FieldByName(´DESCRICAO´);
label1.caption:=SearchDesc2;
end;
end;


GOSTEI 0
Anarchybra

Anarchybra

24/07/2003

Valeu Basílio, brigadão cara!!!


GOSTEI 0
POSTAR