• 0
Sign in to follow this  
Guest - Juniorboll -

Duvida Urgente

Question

Guest - Juniorboll -

Ai fiz um programa com alias e table, so q na hr de consultar eu preciso de procurar pelo nome do fornecedor e entre uma data inicial e final, alguém poderia me ajudar como eu faria isso em delphi por favor???

Share this post


Link to post
Share on other sites

18 answers to this question

Recommended Posts

  • 0
Guest Luiz Araujo

Alo JuniorBoll

você prim. deve preparar a tabela para receber todos estes dados, no form

e claro vai estar os edits on sera colocado as datas e nome, deve incluir um

componente Query, para pesquisa, no botão pesquisar você deve dar os comandos

de mudança deste query para pesquisa.

seria mais ou menos assim (vou tentar lembrar, qualquer diferença escrevo

depois)

begin

Query1.Close;

Query1.SQL.Clear;

Query1.SQL.Add('Select * From "C:\Onde esta o DB\arquivo.DB"');

Query1.SQL.Add('As arquivo.DB');

Query1.SQL.Add('Where (Nome="#39+Edit1.Text+#39") and (Data >= "

#39+Edit2.Text+#39") and (Data <= "#39+Edit3.Text+#39")');

Query1.Prepare;

Query1.Open;

end;

Espero que resolva

um abraço Luiz

Share this post


Link to post
Share on other sites
  • 0
Guest Guest

corrigindo

o As arquivo.Db será somente As arquivo (isto é o nome do seu table sem extensão).

Valeu?

Share this post


Link to post
Share on other sites
  • 0

Alo JuniorBoll

Vou fazer alterações

begin

Query1.Close;

Query1.SQL.Clear;

Query1.SQL.Add('Select * From "C:\Onde esta o DB\arquivo.DB"');

Query1.SQL.Add('As arquivo');

Query1.SQL.Add('Where (Nome='#39+Edit1.Text+#39') and (Data >= '

#39+Edit2.Text+#39') and (Data <= '#39+Edit3.Text+#39')');

Query1.Prepare;

Query1.Open;

end;

Note que fiz alterações nas aspas dos edits e tirei o .DB em .Add('As...

Abraços Luiz dry.gif

Share this post


Link to post
Share on other sites
  • 0
Guest - juniorboll -

Ae tava viajando e cheguei hj vou tentar fazer isso e depois eu falo se deu certo

mas muito obrigado...

Share this post


Link to post
Share on other sites
  • 0

Fala Junior,

Se estiver usando TTable, tente definir índices para os campos e usar a propriedade Filter da tabela. Dá uma olhada no Help dessa parte de filtragem de tabelas no Delphi, tá muito bem explicadinho.

Caso estiver usando uma TQuery, clique com o botão direito neste componente e tente usar o SQLBuilder. Caso você tenha alguma experiência com Access, não será muito difícil usá-lo, bem prático.

Abs[]!

Snake.

Ps.: Se eu escrevi algo errado, por favor me corrijam.

Share this post


Link to post
Share on other sites
  • 0
Guest Guest

Ai mas isso vai funcionar com a table, porque eu ponho um componente query parece q num da pra usar ele???

Share this post


Link to post
Share on other sites
  • 0

Ai so uma pergunta meio boba mas

form3.Query1.SQL.Add('Where (codigo='Edit1.Text+#39') and (Data >= '#39+Edit2.Text+#39') and (Data <= '#39+Edit3.Text+#39')');

nessa linha aqui o q significa o #39?

Share this post


Link to post
Share on other sites
  • 0

Luiz como eu vo chamar um outro form num ficaria assim não

begin

form2.Query1.Close;

form2.Query1.SQL.Clear;

form2.Query1.SQL.Add('Select * From "C:\Onde esta o DB\arquivo.DB"');

form2.Query1.SQL.Add('As arquivo');

form2.Query1.SQL.Add('Where (Nome='#39+Edit1.Text+#39') and (Data >= '

#39+Edit2.Text+#39') and (Data <= '#39+Edit3.Text+#39')');

form2.Query1.Prepare;form2.

form2.Query1.Open;

end;

mas ai se eu faço isso eu num consigo fazer funcionar, onde eu devo colocar esse codigo?

Share this post


Link to post
Share on other sites
  • 0

Olá junior,

num sei se entendi, mas você quer rodor essa Query e abrir o form? é isso?

se for, faz assim:

begin

form2 := Tform2.Create(Self);

form2.Query1.Close;

form2.Query1.SQL.Clear;

form2.Query1.SQL.Add('Select * From "C:\Onde esta o DB\arquivo.DB"');

form2.Query1.SQL.Add('As arquivo');

form2.Query1.SQL.Add('Where Nome = '+#39+Edit1.Text+#39+' and Data between '+#39+Edit2.Text+#39+' and '+#39+Edit3.Text+#39+'');

form2.Query1.Open;

form2.ShowModal;

form2.Free;

end;

o seu código tinha alguns erros

nessa linha aqui o q significa o #39?

#39 é o código ASCII para aspas, poderia ser assim: 'Where Nome = '+''''+Edit1.Text+''''+' and...

Abs. Progr'amador. wink.gif

Share this post


Link to post
Share on other sites
  • 0

Ai fiz deu beleza, valeu d+

so q quando muda de ano tipo penho 31/12/2005 ate 31/03/2006 da pau no programa, o q pode ta acontecendo so quando isso acontece, no mudança de 1 ano para o outro, a o meu campo data ta no formato date. sera q melhora se eu por ele como alfa no database?

Share this post


Link to post
Share on other sites
  • 0
use between ao invés de usar <= >=;

where data between '00/00/00' and '00/00/00'

Mas como eu vou usar o between com o edit?

invés deu por a data igual você pos é so eu cologar

where data between 'edit1.text' and edit2.text

Share this post


Link to post
Share on other sites
  • 0
use between ao invés de usar <= >=;

where data between '00/00/00' and '00/00/00'

Mas como eu vou usar o between com o edit?

invés deu por a data igual você pos é so eu cologar

where data between 'edit1.text' and edit2.text

O fato de se usar a função between não impede de usar edit!

o exemplo que lhe passei funciona.

desculpe mas não estou lhe entendendo. blink.gif

Abs. Progr'amador.

Share this post


Link to post
Share on other sites
  • 0

Olá Junior para fazer as minhas consultas entre datas eu utilizo a seguinte rotina:

        DmDados.Alunos.Close;
        DmDados.Alunos.SQL.Clear;
        DmDados.Alunos.SQL.Add('Select * From Alunos');
        DmDados.Alunos.SQL.Add('Where DataNasc between :Inicial and :Final');
        DmDados.Alunos.Parameters.ParamByName('Inicial').Value := StrToDate(EdtInicial.Text);
        DmDados.Alunos.Parameters.ParamByName('Final').Value := StrToDate(EdtFinal.text);
        DmDados.Alunos.SQL.Add('Order By Codigo');
        DmDados.Alunos.Open;

Lembrando que DmDados é o local onde se encontra a minha query, Alunos é a minha tabela no banco de dados, DataNasc é o campo onde estou efetuando a consulta e INICIAl e FINAL são parametros que recebem os valores para as pesquisas.

A rotina que o Progr'amador passou tb funciona

Alexandre

Aki funciona beleza.

Share this post


Link to post
Share on other sites
  • 0

O trem é o seguinte eu to pondo pra procurar entra as datas dadas certo

so q enves de procura entre as datas procura so no 1 num

exemplo

procurar entre 01/01/2006 ate 30/03/2006

ao invés de procurar entre essas data ele procura todos q estao entre

01 a 30 e discarta a procura do resto

entendera,?

Share this post


Link to post
Share on other sites
  • 0

Então, Tenta assim:

Query1.SQL.Add('Where Nome = '+#39+ Edit1.Text +#39+' and Data between Format('+#39+Edit2.Text+#39+',''dd/mm/yyyy'') and Format('+#39+Edit3.Text+#39+',''dd/mm/yyyy'')');

Obs: onde você ver duas aspas (''), são duas aspas simples, NÂO é aspas duplas NÂO.

Abs. Progr'amador.

Share this post


Link to post
Share on other sites
  • 0

ai eu fiz uns testes e ta funcionando so q eu vo ter de converter eles pra linguagem brasileira porque ta com o formato americano mm/dd/yyyy

mas valeu, vocês me ajudaram muito

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.

Sign in to follow this