Retorno de datas do banco de dados....

Delphi

19/10/2007

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

Curtidas 0

Respostas

Alexandrej

Alexandrej

19/10/2007

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?


GOSTEI 0
Marco Salles

Marco Salles

19/10/2007

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?


:?: :?: :?:


GOSTEI 0
Nigro

Nigro

19/10/2007

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.


GOSTEI 0
Pestana_

Pestana_

19/10/2007

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;


GOSTEI 0
Pestana_

Pestana_

19/10/2007

[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.


GOSTEI 0
Alexandrej

Alexandrej

19/10/2007

[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?


GOSTEI 0
Alexandrej

Alexandrej

19/10/2007

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;


GOSTEI 0
Pestana_

Pestana_

19/10/2007

[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.


GOSTEI 0
Marco Salles

Marco Salles

19/10/2007

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;


GOSTEI 0
POSTAR