Fórum Retorno de datas do banco de dados.... #347600

19/10/2007

0

Olá pessoal, tenho em minha tabela de cadastro alguns campos de datas que não são obrigátorios, mas mesmo não coloquando datas ele retornas essas datas 30/12/1899, fiquei sabendo que isso é assim mesmo pois uso o Firebird 2.0.3, mas será que tem jeito de poder mudar isso?


Robinhocne

Robinhocne

Responder

Posts

19/10/2007

Alexandrej

Olá pessoal, tenho em minha tabela de cadastro alguns campos de datas que não são obrigátorios, mas mesmo não coloquando datas ele retornas essas datas 30/12/1899, fiquei sabendo que isso é assim mesmo pois uso o Firebird 2.0.3, mas será que tem jeito de poder mudar isso?


Esta é a data zero do sistema operacional, independente do banco. Aonde você está encontrando problemas e qual componente de acesso está utilizando?


Responder

Gostei + 0

19/10/2007

Marco Salles

erro clássico...

[u:78ccf57596]fiquei sabendo[/u:78ccf57596] que isso é assim mesmo pois uso o Firebird 2.0.3, mas será que tem jeito de poder mudar isso?


não é necessariamente assim :

Aonde você está encontrando problemas e qual componente de acesso está utilizando?


:?: :?: :?:


Responder

Gostei + 0

22/10/2007

Nigro

Item 1 - A data inicial é determinada pelo Banco e não pelo sistema operacional, ou seja, a data inicial do SQL Server é diferente da data incial do Firebird.
Item 2 - Nos campos não obrigatórios a data está nula e vocë pode tratar como nulo ou como .AsString = ´´
Item 3 - Em campos obrigatórios você não terá problemas pois não será dado post sem que esses campos esteja preenchidos.
Item 4 - Você ainda pode determinar, para os campos de preenchimento orbigatório valores default, que podem ser preenchidos tanto pelo banco ou pelo Delphi.


Responder

Gostei + 0

22/10/2007

Pestana_

posso estar falando besteira, mas se você colocar assim não resolve:
StoredProcName.ParamByName(campoData).AsDate := null;
no caso do usuario não informar a data. ou
StoredProcName.ParamByName(´dt_alt´).AsString := ´´;


se eu estiver errado alguem me corrija por favor.


flw;


Responder

Gostei + 0

22/10/2007

Pestana_

[quote:13cf9c5977=´robinhocne´]Olá pessoal, tenho em minha tabela de cadastro alguns campos de datas que não são obrigátorios, mas mesmo não coloquando datas ele retornas essas datas 30/12/1899, fiquei sabendo que isso é assim mesmo pois uso o Firebird 2.0.3, mas será que tem jeito de poder mudar isso?


Esta é a data zero do sistema operacional, independente do banco. Aonde você está encontrando problemas e qual componente de acesso está utilizando?[/quote:13cf9c5977]

Ola alexandrej,

aproveitando o que você postou, quando é que ocorre de a data retornar zero?

é correto fazer isso, no caso de fazer um select e o mesmo não retornar nehum registro ou ocorrer algum erro durante o select.

if campoRetornadoSelect = 0 then
begin
faça alguma coisa ......
end;


agradeço pela ajuda.


Responder

Gostei + 0

22/10/2007

Alexandrej

[quote:91c102c556=´Marco Salles´]

Aonde você está encontrando problemas e qual componente de acesso está utilizando?


:?: :?: :?:[/quote:91c102c556]

Dependendo do componente de acesso existe o tratamento nativo para este problema, como por exemplo, o FIBPlus.
Aonde é aonde, o que não entendeu?


Responder

Gostei + 0

22/10/2007

Alexandrej

if campoRetornadoSelect = 0 then begin faça alguma coisa ...... end;


Fazendo como vc escreveu não está errado, mas vc acaba fazendo um cast desnecessário. O ideal é utilizar IsNull. :)

if campoRetornadoSelect.IsNull then
begin
....
end;


Responder

Gostei + 0

22/10/2007

Pestana_

[quote:c9a7ae1572=´Pestana_´] if campoRetornadoSelect = 0 then begin faça alguma coisa ...... end;


Fazendo como vc escreveu não está errado, mas vc acaba fazendo um cast desnecessário. O ideal é utilizar IsNull. :)

if campoRetornadoSelect.IsNull then
begin
....
end;[/quote:c9a7ae1572]

blz, valeu pela a resposta alexandrej.



flw.


Responder

Gostei + 0

22/10/2007

Marco Salles

Citação: Aonde você está encontrando problemas e qual componente de acesso está utilizando?


Saber qual é o codigo que esta retornando , qual o componente de acesso ao meu ver fundamental para esclarecer o problema.....

que o erro é classico isto[b:2d37a5fecd] de fato é[/b:2d37a5fecd].... A propria função datetostr(´´)
retorna Uma data equivocada , no caso 30/12/1899

Exemplo , para o caso aonde não foi informada nenuma data

var
Data:TDate;
begin
Data:=DataSetNome_Campo_Data.AsDateTime;
Showmessage(DateToStr(Data));
end;


Responder

Gostei + 0

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

Aceitar