Jump to content
Fórum Script Brasil
  • 0
Bettega

(Resolvido) Where no Query

Question

Bom dia.

Estou tentando fazer um filtro em uma query.

Tenho :

Uma variável mArq, que é o nome do arquivo a consultar.

4 RadioButton

  if Rb_Igual .Checked then Inicio.mSinal := ' = '  ;
  if Rb_Difer .Checked then Inicio.mSinal := ' <> ' ;
  if Rb_Maior .Checked then Inicio.mSinal := ' >= '  ;
  if Rb_Menor .Checked then Inicio.mSinal := ' <= '  ;

e dois edits

Ed_Campo e Ed_Filtro

Estou tentando fazer desta forma :

    Query1.Close ;
    Query1.SQL.Clear ;
    Query1.SQL.Add ( 'Select * from ' + mArq  ) ;

    Query1.SQL.Add ( 'where ' + Ed_Campo_F.Text + Inicio.mSinal + Ed_Filtro.Text ) ;
 

Já tentei colocar aspas em várias formas diferentes, mas sempre dá erro.

Somente o select sem o where, funciona.

 

Neste caso, a query é para arquivos Paradox. Posteriormente vou fazer para MySQL.

Por esta razão, se forem diferentes, favor postar as duas.

 

Obrigado.


 

Share this post


Link to post
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Tente assim

    Query1.Close ;
    Query1.SQL.Clear ;
    Query1.SQL.Add ( 'Select * from ' + mArq + 'where  ' + Ed_Campo_F.Text + '  ' + Inicio.mSinal + '  ' + Ed_Filtro.Text ) ;

Obs: Vooce deve respeitar os espaçamentos entre  as variaveis.

abraço

Share this post


Link to post
Share on other sites
  • 0

Invalid use of keyword

Token :=

Line Number: 1.

Verifique a sua variavel  Inicio.mSinal, pois a Select vai receber o conteudo dessa variavel...  ou esta   =  ou esta   :=

ou pode tentar assim

Var S : string;

S := 'Select * from ' + mArq + 'where  ' + Ed_Campo_F.Text + '  ' + Inicio.mSinal + '  ' + Ed_Filtro.Text;

   Query1.Active := false;
   Query1.SQL.Clear;
   Query1.SQL.Append(S);
   Query1.Active := true;

   showmessage(s);

OBS: o showmessage(s)  vai mostrar o conteudo da Select antes de executa-la.

Se houver alguma coisa  que não deveria estar na select, voce tem verificar o conteudo de suas variaveis.

abraço

Share this post


Link to post
Share on other sites
  • 0

Deu certo.

Fiz da seguinte maneira :

 

    Query1.Active := false;
    Query1.Close ;
    Query1.SQL.Clear ;

    Query1.SQL.Add ( 'Select * from ' + mArq ) ;

    if Rb_Igual.Checked then Query1.SQL.Add ( 'where ' + Ed_Campo_F.Text + ' =  "' + Ed_Filtro.Text + '" ' ) ;
    if Rb_Difer.Checked then Query1.SQL.Add ( 'where ' + Ed_Campo_F.Text + ' <> "' + Ed_Filtro.Text + '" ' ) ;
    if Rb_Maior.Checked then Query1.SQL.Add ( 'where ' + Ed_Campo_F.Text + ' >= "' + Ed_Filtro.Text + '" ' ) ;
    if Rb_Menor.Checked then Query1.SQL.Add ( 'where ' + Ed_Campo_F.Text + ' <= "' + Ed_Filtro.Text + '" ' ) ;

    Query1.SQL.Add ( 'order by ' + mIndex ) ;

    Query1.Active := true ;
    Query1.Open ;


A tua dica foi o que me fez ir no caminho certo.

A diferença foi nas aspas duplas.

Quando visualizei no showmessage, vi que faltava algo.

Obrigado,

Bettega.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.




  • Forum Statistics

    • Total Topics
      148594
    • Total Posts
      644163
×
×
  • Create New...