Erro no componente ADOQuery - usado dinamicamente.

Delphi

20/07/2012

Boa noite.

Alguem consegue identificar o erro neste componente.

ADOQuery

Acho que o erro esta no ParamByName.

Obrigado.

with DM_GERAL.SQLQueryGeneral do
begin
Close;
SQL.Clear;
SQL.Add(SELECT NO_TRADUCTION, DESCRIPTION );
SQL.Add(FROM TRADUCTION );
SQL.Add(WHERE LANGUAGE = :iTraduction );
SQL.Add(ORDER BY NO_TRADUCTION );

ParamByName(iTraduction).ParamType := ptInput;
ParamByName(iTraduction).DataType := ftInteger;
ParamByName(iTraduction).AsInteger := cmbTraduction.ItemIndex+1;

Open;

{ ... Segue o programa }

end;
Rfb

Rfb

Curtidas 0

Respostas

Bruno Leandro

Bruno Leandro

20/07/2012

na verdade qual seria o erro que ocorre? pois é possivel usar sql dinamica normalmente

tente utilizar conforme modelo a seguir e veja se funciona

with DM_GERAL.SQLQueryGeneral do
begin
Close;
SQL.Clear;
SQL.Add(SELECT NO_TRADUCTION, DESCRIPTION );
SQL.Add(FROM TRADUCTION );
SQL.Add(WHERE LANGUAGE = :iTraduction );
SQL.Add(ORDER BY NO_TRADUCTION );
ParamByName(iTraduction).AsInteger := cmbTraduction.ItemIndex+1;
Open;
end;
GOSTEI 0
Deivison Melo

Deivison Melo

20/07/2012

Imagino que esteja usando o MS SQL Server ou pelo menos o Access, pois o componente ADO é otimizado para que seja utilizado com esses bancos de dados.

Segue abaixo um exemplo prático de uso dos componentes ADO.

procedure TfrmCadastro.btnPesquisaCEPClick(Sender: TObject);
var
strSQL: String;
begin
if Trim(edtCEP.Text = ) then
begin
ShowMessage(Preencha o campo!);
edtCEP.SetFocus;
Exit;
end
else
with DM.QueryEndereco do
begin
close;
SQL.Clear;
strSQL:=SELECT ZH_LOGRAD, ZH_BAIRRO, ZH_CIDADE, ZH_ESTADO FROM SZH050 WHERE ZH_CEP = :ZH_CEP;
SQL.Add(strSQL);
Parameters.ParamByName(ZH_CEP).Value:= edtCEP.Text;
Open;
edtEndereco.Text:=Trim(DM.QueryEndereco.FieldByName(ZH_LOGRAD).Value);
edtBairro.Text:=Trim(DM.QueryEndereco.FieldByName(ZH_BAIRRO).Value);
edtCidade.Text:=Trim(DM.QueryEndereco.FieldByName(ZH_CIDADE).Value);
edtEstado.Text:=Trim(DM.QueryEndereco.FieldByName(ZH_ESTADO).Value);
if DM.QueryEndereco.Eof then
begin
ShowMessage(CEP não localizado!);
edtCEP.SetFocus;
end;
end;
end;

PS. Caso as postagens não solucionar os problemas mencionados, por favor, explicar de forma detalhada suas necessidades para que possamos ajudar vc da melhor forma possível.
GOSTEI 0
Rfb

Rfb

20/07/2012

Obrigado.

A definição do campo estava errada.

o correto é: Parameters.ParamByName(ZH_CEP).Value:= edtCEP.Text;

Obrigado.
GOSTEI 0
Deivison Melo

Deivison Melo

20/07/2012

Por favor, finalizar o tópico...
GOSTEI 0
Rfb

Rfb

20/07/2012

Bom dia.

Desculpe, mais como isso é feito?

Obrigado.
GOSTEI 0
POSTAR