Fórum Access e Conversão de datas - importante #225079

10/04/2004

0

Caros amigos...

To enfrentando um problema que encontrei hoje e não sei como resolver, to desenvolvendo um programa em delphi usando Access, até ai tudo bem, o problema começa quando trabalho com os campos de datas..

tipo...

eu tenho num registro uma data 10/04/2004 (10 de abril de 2004), só que quando tenho q fazer uma comparacao no sql tem q ser #04/10/2004 (formato americano) pq a forma brasileira nao funciona.. ok.. seria facil resolver e começar a trabalhar com o formato americano se nao fosse por um detalhe... se vc for diretamente no Access digitar a data num campo, ele nao aceita 04/30/2004 e converte automaticamente para o formato brasileiro..

conclusão: datas abaixo do dia 12 funcionam no formato americando, acima disso funciona no formato brasileiro... ex: 13/04/2004 é 13 de Abril de 2004 mas 12/04/2004 é 4 de Dezembro de 2004... alguém mais entendido de access pode me dá uma ajuda?? já tentei por um formato personalizado dd/mm/yyyy mas nao resolveu nada e também não é problema de configuração de data no painel de controle.. tipo.. já tô trabalhando no programa tem um tempo e não queria mudar de bd agora q quase chegou ao fim... pior eh que só percebi o problema agora.. :/

minha consulta:
SELECT Clientes.Nome, Cheques.agencia, Cheques.conta, Cheques.valor FROM Clientes INNER JOIN Cheques ON Clientes.cli_seq = Cheques.cliente WHERE Cheques.dt_receb = #09/04/2004 ORDER BY Cheques.dt_receb DESC;

pro access esse 09/04 eh 4 de setembro.. mas se eu inserir no formato americano 04/09 na hora da ordenacao isso é 9 de ABRIL...

tirando o WHERE aparece um detalhe na ordenação decrescente (DESC).. se for pra funcionar no formato americando 07/05 (05 de julho) seria maior q 05/07 (7 de maio) mas isso nao acontece....fica ordenado em brasileiro.. nao sei mais o q fazer...

se alguém tiver uma luz pra esse problema q me tá me trazendo dor de cabeça eu agradeceria...

um abraço..

Richard


Richard Lima

Richard Lima

Responder

Posts

10/04/2004

Aroldo Zanela

Colega,

Na verdade as datas são armazenas como números reais, onde a parte inteira representa a data e a parte fracionária representa a hora. A formatação pode ser efetuada de acordo com diversos padrões existentes, sem que isto possa afetar sua consulta. No entanto, para recuperação no banco de dados é necessário passar a data no formato americano (mm/dd/yy), conforme exemplo com DBDEMOS:

With Query1 do
begin
  Close;
  SQL.Text := ´SELECT * FROM Orders WHERE SaleDate = ´+QuotedStr(´06/24/88´);
  Open;
end;


Uma forma para não se preocupar com formato de datas é utilizar parâmetros ao invés de montar sua consulta dinamicamente.

Coloque a seguinte consulta na propriedade SQL da query em questão:

SELECT * from Orders
WHERE SaleDate = :Data


Utilize o seguinte código:

With Query1 do
begin
  Close;
  Query1.ParamByName(´Data´).AsDate := DateTimePicker1.Date;
  Open;
end;


No exemplo acima, utilizei um componente DateTimePicker para selecionar a data.


Responder

Gostei + 0

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

Aceitar