Jump to content
Fórum Script Brasil
  • 0

Select No Banco Com Like


Pu££3y
 Share

Question

Aii galera tenho um Duvida na Hora de fazer o seguinte comando SQL:

SELECT pessoa.*, cliente.limite, cliente.data_cad, cliente.situacao

FROM pessoa INNER JOIN cliente ON pessoa.cod_pessoa = cliente.cod_pessoa

WHERE pessoa.nome LIKE ':parameto';

mais Na Hora de atribuir esse valor para a query:

Q_pessoa.SQL.Add('SELECT pessoa.*, cliente.limite, cliente.data_cad, cliente.situacao FROM pessoa INNER JOIN cliente ON pessoa.cod_pessoa = cliente.cod_pessoa WHERE pessoa.nome LIKE :parameto');

não tem Como colocar as aspas simples LIKE ':parameto';

Como faço pra fazer o Comando tipo

select * from pessoa where nome like 'pulley'; lá No delphi????

Flwss galera esperanduuu Valeuuu Abraçosss.... ahh URGENTE se não Toh No SAL...

Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0
não tem Como colocar as aspas simples LIKE ':parameto';
Pu££3y, se você vai passar este valor por parâmetro, só o que você precisa é fazer algo assim:

  Q_pessoa.Close;
  Q_pessoa.SQL.Clear;
  Q_pessoa.SQL.Add('SELECT pessoa.*, cliente.limite, cliente.data_cad, cliente.situacao FROM pessoa INNER JOIN cliente ON pessoa.cod_pessoa = cliente.cod_pessoa WHERE pessoa.nome LIKE :parameto');
  Q_pessoa.ParamByName('parametro').AsString := 'pulley';
  Q_pessoa.Open;

as aspas vão ficar por conta do drive na hora que enviar a consulta para o banco.

Era isso?

[]s

Link to comment
Share on other sites

  • 0

não pois O valor Eu Recebo De Um edit

O valor Texto que o cara digita no edit pego no Evento OnKeyPress pra fazer um filtro tipo uma Busca....

procedure Tlist_cli.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

DataSource1.DataSet.Close;

DataModule2.Q_pessoa.SQL.Clear;

DataModule2.Q_pessoa.SQL.Add('SELECT pessoa.*, cliente.limite, cliente.data_cad, cliente.situacao FROM pessoa INNER JOIN cliente ON pessoa.cod_pessoa = cliente.cod_pessoa WHERE pessoa.nome LIKE :filtro');

DataModule2.Q_pessoa.Parameters.ParamByName('filtro').Value:=edit1.Text;

ShowMessage(DataModule2.Q_pessoa.SQL.Text);

DataModule2.Q_pessoa.ExecSQL;

DataSource1.DataSet.Open;

end;

não Funcionou daquela Maneira.....

Tem Outro jeitO?????

Link to comment
Share on other sites

  • 0

Pu££3y, duas observações:

1) você deverá utilizar o método Open e não ExecSQL. Este último você utiliza com comandos do tipos INSERT, DELETE em seu comando SQL.

de: DataModule2.Q_pessoa.ExecSQL;

para: DataModule2.Q_pessoa.Open;

2) Não tenho certeza, mas sempre que não defino o parâmetro em design-time, eu passo ele para a query com AsString e não Value.

de: DataModule2.Q_pessoa.Parameters.ParamByName('filtro').Value:=edit1.Text;

para: DataModule2.Q_pessoa.Parameters.ParamByName('filtro').AsString:=edit1.Text;

Link to comment
Share on other sites

  • 0

DataModule2.Q_pessoa.Parameters.ParamByName('filtro').AsString:=edit1.Text;

não Compila ...

A PArte do execSQL nem Tinha Me Ligado .... faço Outas Consultas Usando O OPEn só que Nessa Me esqueci...

você Disse que fica Por Conta Do Drive Tem que Instalar AlGum Componete Adicional???

Tem Como Inserir Por Codigo ASCI tipo #31 que é o enter qual é o Do ASpas simples????

... Ow já Toh viajando D+

Link to comment
Share on other sites

  • 0

DataModule2.Q_pessoa.Parameters.ParamByName('filtro').AsString:=edit1.Text;

não Compila ...

uhmm. Estamos falando do componente TQuery? Qual a mensagem do compilador?

Tem Como Inserir Por Codigo ASCI tipo #31 que é o enter qual é o Do ASpas simples????

Em todos os casos, se você abandonar a idéia do parâmetro (eu particularmente prefiro esta opção), você pode concatenar a string utilizando a função QuotedStr:

 ...
  DataModule2.Q_pessoa.SQL.Add('SELECT pessoa.*, cliente.limite, cliente.data_cad, cliente.situacao FROM pessoa INNER JOIN cliente ON pessoa.cod_pessoa = cliente.cod_pessoa WHERE pessoa.nome LIKE ' +QuotedStr(edit1.Text);
  DataModule2.Q_pessoa.Open;

Se não estou enganado é assim.

você Disse que fica Por Conta Do Drive Tem que Instalar AlGum Componete Adicional???
Não. Quiz dizer o driver da BDE.

[]s

Link to comment
Share on other sites

  • 0

BLZZ VOh dá Uma Olhada NAunTinah Pensado Em cocatenar direto

Mais Tambem Encontrei Uma Maneira.... Olha só

DataModule2.Q_pessoa.SQL.Add('SELECT pessoa.*, cliente.limite, cliente.data_cad, cliente.situacao FROM pessoa INNER JOIN cliente ON pessoa.cod_pessoa = cliente.cod_pessoa WHERE pessoa.nome LIKE :filtro');

e na Hora de atribuir O valor Do Parameto

DataModule2.Q_pessoa.Parameters.ParamByName('filtro').Value:='%'+edit1.Text+'%';

O Percent faz o Papel De Aspas Simples......

resolveu Direitinho......

valeu entaumm MICHEUS Abraçossss.....

Link to comment
Share on other sites

  • 0

BLZZ VOh dá Uma Olhada NAunTinah Pensado Em cocatenar direto

Mais Tambem Encontrei Uma Maneira.... Olha só

DataModule2.Q_pessoa.SQL.Add('SELECT pessoa.*, cliente.limite, cliente.data_cad, cliente.situacao FROM pessoa INNER JOIN cliente ON pessoa.cod_pessoa = cliente.cod_pessoa WHERE pessoa.nome LIKE :filtro');

e na Hora de atribuir O valor Do Parameto

DataModule2.Q_pessoa.Parameters.ParamByName('filtro').Value:='%'+edit1.Text+'%';

O Percent faz o Papel De Aspas Simples......

não é bem assim. O % significa que seu like encontrará todas as pessoas que tiverem o conteúdo em edit1.text em qualquer posição do nome.

Ex.:

MARIA JOSEFA

JOSE ANTONIO

se você procurar por JOSE, vão aparecer os dois.

Se você quer que aparece todos que começam com JOSE, você concatenaria o último % apenas. Já se quizesse que terminasse com JOSE, concatenaria o primeiro.

Que componente você utiliza para a consulta. Se fosse TQuery, a propriedade seria Params (não parameters).

Qual foi a mensagem do compilador no erro do post anterior?

Link to comment
Share on other sites

  • 0

beleza valeu Pela Correção....

Por Isso que eu Buscava e aparecia Alguns Clientes Indesejados.....

Procurei a Propiedade Params E não Tem Uso a ADOQuery...

só tem Parameters Msmo

A mensagem é essa

[Error] Unit11.pas(39): Undeclared identifier: 'AsString'

Acho que não existe esse Metodo....

Link to comment
Share on other sites

  • 0

beleza valeu Pela Correção....

Por Isso que eu Buscava e aparecia Alguns Clientes Indesejados.....

Procurei a Propiedade Params E não Tem Uso a ADOQuery...

só tem Parameters Msmo

A mensagem é essa

[Error] Unit11.pas(39): Undeclared identifier: 'AsString'

Acho que não existe esse Metodo....

não vou poder ver agora. mas dê uma olhada no help sobre o ADOQuery (selecione o compontente e pressione F1) procure nas propriedades e em parameters. Tenho quase certeza que há um meio similar a AsString

Link to comment
Share on other sites

  • 0
não vou poder ver agora. mas dê uma olhada no help sobre o ADOQuery (selecione o compontente e pressione F1) procure nas propriedades e em parameters. Tenho quase certeza que há um meio similar a AsString

Não tenho muita experiência com ADO, pois só trabalhei uns 3 meses, mas pelo que pude notar essa tecnologia utiliza OLE Variant e tem que ficar sempre convertendo um Variant para seu tipo de dado original, caindo assim sua performance(motivo da minha desistência pelo ADO). Nele você possui Parameters.ParamValues que retorna um Variant, e Parameters.ParamByName que retorna um TParameter que possui a propriedade Value(Variant). Ambos os casos retornam Variant e a conversão deve ser feita.
Link to comment
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.

 Share



  • Forum Statistics

    • Total Topics
      151k
    • Total Posts
      649k
×
×
  • Create New...