Consulta Locate
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.
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
Curtidas 0
Respostas
Titanius
31/03/2007
Pode fazer assim:
Talvez seja preciso incluir o Variants, no uses do form.
[]s
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
GOSTEI 0
Peninha
31/03/2007
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.
GOSTEI 0
Adriano Santos
31/03/2007
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.
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.
GOSTEI 0
Anjinho Loiro
31/03/2007
Como eu poderia fazer meu amiguinho...
Bjs..
Bjs..
GOSTEI 0
Adriano Santos
31/03/2007
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:
[/list:u:293e5d1157]
[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]
GOSTEI 0
Martins
31/03/2007
[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.
Boa sorte.
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.
GOSTEI 0
Martins
31/03/2007
[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:
[/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.
[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.
GOSTEI 0
Adriano Santos
31/03/2007
[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
GOSTEI 0
Anjinho Loiro
31/03/2007
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.
Mas ainda sim, agradeço o empenho de todos.
(ainda continuo esperando).
Bjs.
GOSTEI 0
Adriano Santos
31/03/2007
Então use a primeira dica que lhe foi dada. A do titanius que funcionará. ;)
GOSTEI 0
Anjinho Loiro
31/03/2007
Que variants seriam essas?
Obrigado pelo apoio.
bjs.
Obrigado pelo apoio.
bjs.
GOSTEI 0
Adriano Santos
31/03/2007
Vai uses no inicio da unit e escreve Variants. Assim estará declarando a unit Variants do Delphi no seu projeto.
GOSTEI 0
Martins
31/03/2007
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]
Boa sorte!
Tabel1.Locate(´NOME;DATA;HORARIO´, VarArrayOf([´nome da pessoa´,´11/01/2007´, ´11:11:11´]), [loCaseInsensitive]);
Boa sorte!
GOSTEI 0
Pro-luck
31/03/2007
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...
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...
GOSTEI 0
Badboysjc
31/03/2007
[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.
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.
GOSTEI 0