Conversão Data

Delphi

21/11/2004

Estou fazendo um form de cadastro de clientes mas quando vou cadastrar a data de nascimento está dando erro. Estou usando o Banco Interbase e o tipo de dado é Date. Olhem o codigo abaixo:

...
begin
Data := StrtoDate(MaskEditDataNasc.text);
ShortDateFormat := ´dd/mm/yy´;
MaskEditDataNasc.text:= DatetoStr(Data);
try
Transacao.TransactionID := 1;
Transacao.IsolationLevel := xilREPEATABLEREAD;
DM.SQLConnection1.StartTransaction(Transacao);
DM.SQLDataSet1.Close;
...


Na execusão quando quero cadastrar a data : 21/11/04 ele da o seguinte erro: ´21/11/04´ is not a valid date. E agora?

Agradeço desde já!


_celo

_celo

Curtidas 0

Respostas

Keitarosan

Keitarosan

21/11/2004

Nunca trabalhei cum o IB, mas serah que ele nao estah reclamando a data pelo fato dela estar no formato brasileiro???
Tenta o formato americano, só pra testar, quem sabe? :wink:


GOSTEI 0
_celo

_celo

21/11/2004

Tentei colocar em modo americano mas continua com o mesmo erro.


:(

Mesmo assim valew!


GOSTEI 0
Keitarosan

Keitarosan

21/11/2004

e com relação a mascara do maskEdit?? Já checou se ela aceita data no formato dd/mm/yy ou dd/mm/yyyy??


GOSTEI 0
_celo

_celo

21/11/2004

Como faço pra checar a mascara do MaskEdit se ela aceita dd/mm/yyyy?


GOSTEI 0
Lau

Lau

21/11/2004

Eu estou desevolvendo um cadastro de veiculos, e no botão pesquisar não esta dando certo, o que será estou fazendo de errado?

{procedure TfrmVeiculo.spbtnPesquisarClick(Sender: TObject);
var
intPosicao:Integer;
begin
Reg_cadVeiculo := TStringList.Create;
Reg_cadVeiculo.Insert(0, edtCodigo.Text);
Reg_cadVeiculo.Insert(1, edtMarca.Text);
Reg_cadVeiculo.Insert(2, edtModelo.Text);
Reg_cadVeiculo.Insert(3, edtAno.Text);
Reg_cadVeiculo.Insert(4, edtPlaca.Text);
intPosicao := Reg_CadVeiculo.IndexOf( edtCodigo.Text + ´;´
+ edtMarca.Text + ´;´ + edtModelo.Text + ´;´ + edtAno.Text + ´;´ + edtPlaca.Text);
ShowMessage(´ O cadastro foi encontrado na posição: ´ + IntToStr (intPosicao));

For intPosicao := 0 To 4 Do
edtCodigo.Text := edtCodigo.Text + Reg_CadVeiculo[intPosicao] + #1310;
edtMarca.Text := edtMarca.Text + Reg_CadVeiculo[intPosicao] + 1310;
edtMarca.Text := edtMarca.Text + Reg_CadVeiculo[intPosicao] + #1310;
edtModelo.Text := edtModelo.Text + Reg_CadVeiculo[intPosicao] + 1310;
edtAno.Text := edtAno.Text + Reg_CadVeiculo[intPosicao] + 1310;
edtPlaca.Text := edtPlaca.Text + Reg_CadVeiculo[intPosicao] + 1310;

Reg_cadVeiculo.Sort;
edtCodigo.Text := ´Código´ + 1310 ;
edtMarca.Text := ´Marca´ + 1310 ;
edtModelo.Text := ´Modelo´+ 1310 ;
edtAno.Text :=´Ano´+ 1310 ;
edtPlaca.Text := ´Placa´+ 1310 ;



For intPosicao := 0 To 4 Do
edtCodigo.Text := edtCodigo.Text + Reg_CadVeiculo[intPosicao] + 1310;
edtMarca.Text := edtMarca.Text + Reg_CadVeiculo[intPosicao] + 1310;
edtMarca.Text := edtMarca.Text + Reg_CadVeiculo[intPosicao] + 1310;
edtModelo.Text := edtModelo.Text + Reg_CadVeiculo[intPosicao] + 1310;
edtAno.Text := edtAno.Text + Reg_CadVeiculo[intPosicao] + #1310;
edtPlaca.Text := edtPlaca.Text + Reg_CadVeiculo[intPosicao] + 1310;

ShowMessage(´ O cadastro foi encontrado na posição: ´ + IntToStr (intPosicao));



end; }


GOSTEI 0
Sandra

Sandra

21/11/2004

_Celo,

:oops: Eu também mal conheço o IB, mas não entendi uma coisa: o raciocínio, a lógica do código:

begin 
  Data := StrtoDate(MaskEditDataNasc.text); 
  ShortDateFormat := ´dd/mm/yy´; 
  MaskEditDataNasc.text:= DatetoStr(Data); 

Por que está setando para a variável Data receber o texto do MaskEditDataNasc, convertido [b:b5c42fd2cd]de string para data[/b:b5c42fd2cd] e depois, fazendo com que esse mesmo MaskEdit receba novamente a [b:b5c42fd2cd]data convertida para string[/b:b5c42fd2cd]? :roll:

Outra coisa, experimente colocar o [i:b5c42fd2cd]ShortDateFormat := ´dd/mm/yy´;[/i:b5c42fd2cd] no onCreate do seu form de cadastro.


GOSTEI 0
_celo

_celo

21/11/2004

Sandra tipow tentei fazer com que a variavel data recebecer o valor do MaskEdit depois transforma em modo americano ´mm/dd/yy´ e depois o mesmo MaskEdit receber a data do tipo americano ai depois é inserido no banco pois o IB so aceita esse tipo mm/dd/yy e o cara quando digitar vai digitar assim dd/mm/yy. Ta ligada? sse souber me de uma dica. ;)

valew.


GOSTEI 0
Xtreme

Xtreme

21/11/2004

Como faço pra checar a mascara do MaskEdit se ela aceita dd/mm/yyyy?


da uma olhada na prorpiedade EditMask do MaskEdit, por exemplo eu uso a seguinte configuração !99/99/0000;1;_


GOSTEI 0
Gandalf.nho

Gandalf.nho

21/11/2004

Em vez de usar um MakEdit para datas, use o DateTimePicker, daí a data já vem no formato adequado.


GOSTEI 0
POSTAR