Fórum Consultar Entre duas Datas - utilizando os compontes IBX #41956
31/01/2004
0
TQuery.Close;
TQuery.Clear;
TQuery.add(´Select * from Tabela´);
TQuery.add(´Where Codigo = ´+EdCodigo.Text´ and DataEntrada >=´+edDataInicio.Text+´ and DataEntrada <=´+edDataFinal´´);
TQuery.Open;
Estava funcionando perfeitamente com este componente, mas quando mudei para o IBQuery não funcionou.
Alguem pode me ajudar.
Sdph
Curtir tópico
+ 0Posts
31/01/2004
Afarias
Tenha em mente q é sempre mais fácil ajudar quando vc informar O Q NÃO FUNCIONOU e qual a MENSAGEM DE ERRO que apareceu -- a maioria dos usuários do fórum não conta com uma bola de cristal.
Vou dar uns chutes aqui::
TIBQuery.SQL.Add(´Select * from Tabela´);
note a propriedade SQL ...
e
|´Where Codigo = ´+EdCodigo.Text´ and DataEntrada
|>=´+edDataInicio.Text+´ and DataEntrada <=´+edDataFinal´´
A concatenação não está de acordo, e, não dá pra saber se vai funcionar pois não sei o formato da data nos Edits que vc está usando.
T+
Gostei + 0
01/02/2004
Sdph
Project Controle.exe raised exception class EIBInterBaseError
With message ´Conversion erro from string ´01/02/2004´´, Process
stopped. Use Step or Run to Continue.
sera que e por que nos campos data coloco VarChar(12);
estranho e que utilizava este mesmo codigo com os mesmos campos e tipos no TQuery.
Gostei + 0
01/02/2004
Drakkar
então se voce quiser trabalhar com campos string e nao datetime tera que fazer uma funcao para trocar a / por um . (ponto) antes de adicionar a data na query. E também ta faltando a aspa simples antes e depois da data.
Então ficaria assim:
TQuery.Close;
TQuery.Clear;
TQuery.add(´Select * from Tabela´);
TQuery.add(´Where Codigo = ´+EdCodigo.Text+´ and DataEntrada >=´´´+TrocaBarra(edDataInicio.Text)+´´´ and DataEntrada <=´´´+TrocaBarra(edDataFinal.Text)+´´´´);
TQuery.Open;
É claro que isso vai da um trabalhão... seria melhor vc usar o campo do tipo datetime e passar as datas por parametros pegando o valor da data de um componente datetimepicker.
Gostei + 0
01/02/2004
Fabio.hc
- Se vc criar como varchar. Quando for fazer pesquisa neste campo vai trazer resultado não esperado porque a pesquisa no campo varchar é da esquerda para a direita caracter por caracter.
- O ideal é criar campo como date(para data) ou timestamp(para data e hora).
Gostei + 0
02/02/2004
Afarias
1- tanto varchar como date ou timestamp tem q ser passados no SQL entre aspas simples
2- alguns formatos de data válidos no Ib são::
´dd.mm.yyyy´
´mm/dd/yyyy´
ex::
Edit1.Text := ´30/01/2004´;
IBQuery1.SQL.Add(´select * from tabela´);
IBQuery1.SQL.Add(´where campo_data > ´´´ + Edit1.Text + ´´´´);
ou
IBQuery1.SQL.Add(´where campo_data > ´ + QuoteStr(Edit1.Text) );
T+
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)