Retorno de datas do banco de dados....
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
Curtidas 0
Respostas
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
19/10/2007
erro clássico...
não é necessariamente assim :
:?: :?: :?:
[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
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.
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_
19/10/2007
posso estar falando besteira, mas se você colocar assim não resolve: no caso do usuario não informar a data. ou
se eu estiver errado alguem me corrija por favor.
flw;
StoredProcName.ParamByName(campoData).AsDate := null;
StoredProcName.ParamByName(´dt_alt´).AsString := ´´;
se eu estiver errado alguem me corrija por favor.
flw;
GOSTEI 0
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
19/10/2007
[quote:91c102c556=´Marco Salles´]
:?: :?: :?:[/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?
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
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_
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
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));
GOSTEI 0