Jump to content
clovisystem

Erro de ParamByName do banco Access em Delphi

Recommended Posts

clovisystem

Estou tentando fazer essa consulta com ACCESS via ADOQuery pelo Delphi e dá erro na linha ParamByName... O engraçado é que com os outros bancos de dados não dá esse erro

   ADOQuery2.Close;
   ADOQuery2.SQL.Clear;
   ADOQuery2.SQL.Add('SELECT Valor FROM PRODUTOS WHERE MarcaProduto =:Combo2' );
   ADOQuery2.ParamByName('Combo2').Value:=ComboBox2.Text;
   ADOQuery2.Open;

 

Share this post


Link to post
Share on other sites
josehenrique
Em 7/13/2017 às 21:43, clovisystem disse:

Estou tentando fazer essa consulta com ACCESS via ADOQuery pelo Delphi e dá erro na linha ParamByName... O engraçado é que com os outros bancos de dados não dá esse erro


   ADOQuery2.Close;
   ADOQuery2.SQL.Clear;
   ADOQuery2.SQL.Add('SELECT Valor FROM PRODUTOS WHERE MarcaProduto =:Combo2' );
   ADOQuery2.ParamByName('Combo2').Value:=ComboBox2.Text;
   ADOQuery2.Open;

 

Olá clovisystem,

 

Tente acrescentar a linha abaixo antes de abrir a query. Ah , pode separar os sinais também do parâmetro. 

 

   ADOQuery2.SQL.Add('SELECT Valor FROM PRODUTOS WHERE MarcaProduto = :Combo2' );

   ADOQuery2.Prepared := True;

 

  ADOQuery2.Close;
   ADOQuery2.SQL.Clear;
   ADOQuery2.SQL.Add('SELECT Valor FROM PRODUTOS WHERE MarcaProduto =  :Combo2' );
   // tente colocar o parametro como o tipo string
   ADOQuery2.ParamByName('Combo2').asString := ComboBox2.Text; // ou 
   
   // caso o mesmo seja numerico utilize AsInteger e eu gosto de utilizar o strtointDef, pois evita erros  na aplicação, mas o filtro pode ficar comprometido
   ADOQuery2.ParamByName('Combo2').asinteger := StrToIntDef(ComboBox2.Text,0);
   ADOQuery2.Prepared := True; // <<--- adicione essa linha
   ADOQuery2.Open;

 

Share this post


Link to post
Share on other sites
CrominhO
Em 14/07/2017 às 01:43, clovisystem disse:

Estou tentando fazer essa consulta com ACCESS via ADOQuery pelo Delphi e dá erro na linha ParamByName... O engraçado é que com os outros bancos de dados não dá esse erro


   ADOQuery2.Close;
   ADOQuery2.SQL.Clear;
   ADOQuery2.SQL.Add('SELECT Valor FROM PRODUTOS WHERE MarcaProduto =:Combo2' );
   ADOQuery2.ParamByName('Combo2').Value:=ComboBox2.Text;
   ADOQuery2.Open;

 

Mas funciona com outras BDs via ADO ? :-) 

With Adoquery2 do Begin 
 Close;
 SQL.Clear;
 SQL.Add('SELECT Valor FROM PRODUTOS WHERE MarcaProduto=:Combo2 ' );
 Parameters.ParamByName('Combo2').Value:=ComboBox2.Text;  // Parameters.
 Open
End;

Testa lá assim :-) 

 

 


As mentes humanas são realmente um local estranho!

Share this post


Link to post
Share on other sites
clovisystem
32 minutos atrás, CrominhO disse:

Mas funciona com outras BDs via ADO ? :-) 


With Adoquery2 do Begin 
 Close;
 SQL.Clear;
 SQL.Add('SELECT Valor FROM PRODUTOS WHERE MarcaProduto=:Combo2 ' );
 Parameters.ParamByName('Combo2').Value:=ComboBox2.Text;  // Parameters.
 Open
End;

Testa lá assim :-) 

 

 

Resolvi colocando o nome da textbox na consulta pois o parambyname nao funciona com Access  

 

MarcaProduto = "'+ TextBox2.text + ');

Share this post


Link to post
Share on other sites
CrominhO
27 minutos atrás, clovisystem disse:

Resolvi colocando o nome da textbox na consulta pois o parambyname nao funciona com Access  

 

MarcaProduto = "'+ TextBox2.text + ');

Fizeste bem :-) 

Mas o ParamByName funciona no Access, tens é de meter Parameters.ParamByName :-) 


As mentes humanas são realmente um local estranho!

Share this post


Link to post
Share on other sites
clovisystem
4 minutos atrás, CrominhO disse:

Fizeste bem :-) 

Mas o ParamByName funciona no Access, tens é de meter Parameters.ParamByName :-) 

Obrigado pela dica :-)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.