Fórum Consulta Locate #339681

31/03/2007

0

Olá caros colegas,


Estou precisando de uma dica de como posso localizar dentro de uma tabela um registro levando em consideração que serão informados o nome de uma pessoa, uma data e um horário e o(s) registro(s) localizado(s) tem(êm) que atender aos três critérios de consulta.
Estou usando um componente Table da paleta BDE do Delphi 7.

Um beijão turma, e já agradeço pelas dicas.
Bye.


Anjinho Loiro

Anjinho Loiro

Responder

Posts

31/03/2007

Titanius

Pode fazer assim:

Tabel1.Locate(´NOME;DATA;HORARIO´, VarArrayOf([´nome da pessoa´,´11/01/2007´, ´11:11:11´]), [loCaseInsensitive]);


Talvez seja preciso incluir o Variants, no uses do form.

[]s


Responder

Gostei + 0

31/03/2007

Peninha

Se vc quiser, também é possivel fazer esta pesquisa com um uma caixa de botões selecionando quel sera o campo a ser pesquisado, e dentro do código vc usar o ´CASE´ em vez de locate.


Responder

Gostei + 0

01/04/2007

Adriano Santos

Só lembrando que componentes TTable ficam pendurados o tempo todo na tabela de dados, o que pode lhe dar problemas mais tarde de perfomance ou corrompimento de dados. Qual banco de dados está utilizando?

Veja se não é mais apropriado pra sua aplicação utilizar TQuery ao invés de TTable e fazer Selects no banco retornando os regitros que deseja.


Responder

Gostei + 0

02/04/2007

Anjinho Loiro

Como eu poderia fazer meu amiguinho...

Bjs..


Responder

Gostei + 0

02/04/2007

Adriano Santos

Mônica vamos lá. Um exemplo básico de consulta usando TQuery seria o seguinte:

[list:293e5d1157]
[*:293e5d1157] 1. Adicione um TQuery no seu form e linke-o ao seu TDatabases.
[*:293e5d1157] 2. Em sua propriedade SQL digite sua consulta, algo como: SELECT * FROM CLIENTES WHERE NOME = :MEU_PARAMETRO;
[*:293e5d1157] 3. O código ficaria algo como:
  procedure TForm1.Button1Click(Sender: TObject);
  begin
    with MeuQuery do
    begin
      Close;
      ParamByName(´MEU_PARAMETRO´).AsString := Edit1.Text;
      Open;
      if IsEmpty then
        MessageDlg(´Cliente não encontrado.´, mtInformation, [mbOK], 0);
    end;
  end;
  

[/list:u:293e5d1157]


Responder

Gostei + 0

02/04/2007

Martins

[quote:8851af9d01=´Anjinho loiro´]Como eu poderia fazer meu amiguinho...

Bjs..[/quote:8851af9d01]

Concordo com o [b:8851af9d01]Adriano[/b:8851af9d01], seria melhor vc pensar em usar [b:8851af9d01]TQuery[/b:8851af9d01], e aproveitando a deixa ficará melhor para vc quando tiver q optar por um banco q use SQL de forma mais dinâmica.

Sem Delphi aqui no Cyber fica complicado para testar, mas vamos lá.

Usando Query ficaria +/- assim.
Query1.Close;
Query1.Sql.Clear;
Query1.Sql.Add(´Select * from Tabela Where Nome = :pNome and Data =:pData and Hora = :pHora ´);
Query1.Sql.ParamByName(´pNome´).AsString := dbNome.Text;
Query1.Sql.ParamByName(´pData´).AsDate := StrToDate(dbData.Text);
Query1.Sql.ParamByName(´pHora´).AsTime := StrToTime(dbHora.Text);
Query1.Open;


Boa sorte.


Responder

Gostei + 0

02/04/2007

Martins

[quote:3d904a6ab0=´Adriano Santos´]Mônica vamos lá. Um exemplo básico de consulta usando TQuery seria o seguinte:

[list:3d904a6ab0]
[*:3d904a6ab0] 1. Adicione um TQuery no seu form e linke-o ao seu TDatabases.
[*:3d904a6ab0] 2. Em sua propriedade SQL digite sua consulta, algo como: SELECT * FROM CLIENTES WHERE NOME = :MEU_PARAMETRO;
[*:3d904a6ab0] 3. O código ficaria algo como:
  procedure TForm1.Button1Click(Sender: TObject);
  begin
    with MeuQuery do
    begin
      Close;
      ParamByName(´MEU_PARAMETRO´).AsString := Edit1.Text;
      Open;
      if IsEmpty then
        MessageDlg(´Cliente não encontrado.´, mtInformation, [mbOK], 0);
    end;
  end;
  

[/list:u:3d904a6ab0][/quote:3d904a6ab0]

[b:3d904a6ab0]Adriano[/b:3d904a6ab0] postei quase junto com vc, dá uma corrigida na dica q eu postei.

Abraço.


Responder

Gostei + 0

02/04/2007

Adriano Santos

[b:b0113725f9]Adriano[/b:b0113725f9] postei quase junto com vc, dá uma corrigida na dica q eu postei. Abraço.

Tah certinho irmão, não tem o que corrigir. A única diferença é que no seu caso vc colocou tudo dinâmico, inclive a montagem da select o que eu tb costumo fazer. :D


Responder

Gostei + 0

02/04/2007

Anjinho Loiro

Com Query eu já sei fazer, preciso mesmo é fazer com o Table.

Mas ainda sim, agradeço o empenho de todos.
(ainda continuo esperando).

Bjs.


Responder

Gostei + 0

03/04/2007

Adriano Santos

Então use a primeira dica que lhe foi dada. A do titanius que funcionará. ;)


Responder

Gostei + 0

03/04/2007

Anjinho Loiro

Que variants seriam essas?

Obrigado pelo apoio.

bjs.


Responder

Gostei + 0

03/04/2007

Adriano Santos

Vai uses no inicio da unit e escreve Variants. Assim estará declarando a unit Variants do Delphi no seu projeto.


Responder

Gostei + 0

04/04/2007

Martins

Talvez seja necessário, mas dependendo da versão do seu Delphi já existe a unit Variants lá, ten usar a dica do [b:bcdbbb912f]Titanius[/b:bcdbbb912f]

Tabel1.Locate(´NOME;DATA;HORARIO´, VarArrayOf([´nome da pessoa´,´11/01/2007´, ´11:11:11´]), [loCaseInsensitive]); 


Boa sorte!


Responder

Gostei + 0

05/05/2008

Pro-luck

Caro Adriano,

Vi a dica que vc mandou para a Anjinho loiro, e gostaria de saber duas coisas, 1-) Nesta dica é possível colocar em ordem alfabética o resultado desejado?; 2-) Ele retira da ´exibição´ os registros que não atendem aos critérios informados?

Tb tenho esta curiosidade com o Table...
Com Query é show, com excessão do fato de que quando colocamos em ordem alfabética, perdemos a propriedade de edição dos registros. Resumindo, preciso deste resultado que a Query fornece com a possibilidade de editar os dados.

Caro amigo, desde já agradeço e fique com Deus...


Responder

Gostei + 0

08/05/2008

Badboysjc

[quote:04bd12bb6c=´Adriano Santos´]Vai uses no inicio da unit e escreve Variants. Assim estará declarando a unit Variants do Delphi no seu projeto.[/quote:04bd12bb6c]

Caro Adriano, Bom Dia !!

Aproveitando a carona, com o SELECT, eu estou com a seguinte dúvida:

1. Como faço para exibir o resultado da pesquisa no GRID por exemplo com esta QUERY ( com exemplo postado, não esta aparecendo o resultado no meu grid, só quando o cliente´não é localizado fornece a mensagem)

2. E estou apanhando do código abaixo. O objetivo é quando não localizar o cliente dar a opção para o cliente cadastrar o cliente.

Segue o meu código abaixo.


with DMConsulta.sqlqryClientes do
begin
Close;
ParamByName(´PCPF´).AsString := edtCPF.Text;
Open;
if IsEmpty then
Begin
If MessageBox(handle,´O CPF informado não foi localizado, deseja Cadastrar agora?´,´Confirmação´, MB_ICONQUESTION + MB_YESNO) = ID_YES Then
close;
frmClientes.ShowModal;
frmClientes.btnCadastrar.Click;
end;


Agradeço desde já.

Obrigado.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar