mask Edit (problemas com literal caracteres)
seguinte... tenho um campo do tipo DATE na tabela... firebird 1.5.3
pra salvar nela eu uso um mask edit salvando os ´literais caracteres´
assim funciona beleza. só que eu nao gostaria de salvar os ´literais caracteres´, ou seja nao gostaria que fosse com o ´ / / ´ mas sim só os numeros...
ja sei que a formatação de data do firebird é xx.xx.xxx
se eu setar pra nao salvar os ´literais caracteres´ o sistema acusa o erro ´22082006´ is not a valid date time, quando eu dou o post na tabela
e se eu deixar o campo vazio ele da o erro:´´ is not a valid date time
Observações: o referido campo da tabela aceita NULL
Eu precisaria que nao salvasse os ´literais caracteres´ e que ele aceitasse efetivamente o valor NULL quando eu nao colocasse data alguma no mask edit
uso o Delphi 7
Alguem poderia me ajudar??
Abração!!
pra salvar nela eu uso um mask edit salvando os ´literais caracteres´
DM.Tbl_Eventos_ENASCIMENTO.AsDateTime := StrToDateTime(Eventos_E.Nascimento.Text);
assim funciona beleza. só que eu nao gostaria de salvar os ´literais caracteres´, ou seja nao gostaria que fosse com o ´ / / ´ mas sim só os numeros...
ja sei que a formatação de data do firebird é xx.xx.xxx
se eu setar pra nao salvar os ´literais caracteres´ o sistema acusa o erro ´22082006´ is not a valid date time, quando eu dou o post na tabela
e se eu deixar o campo vazio ele da o erro:´´ is not a valid date time
Observações: o referido campo da tabela aceita NULL
NASCIMENTO DATE,
Eu precisaria que nao salvasse os ´literais caracteres´ e que ele aceitasse efetivamente o valor NULL quando eu nao colocasse data alguma no mask edit
uso o Delphi 7
Alguem poderia me ajudar??
Abração!!
Mahdak
Curtidas 0
Respostas
Jonas_giron
22/08/2006
Voce tem que criar um campo Varchar para poder salvar sem os caracteres de data e cria uma função para remover as ´/´ da data, ai vc vai conseguir salvar somente os numeros.
codigo...
function RemoveBarra(Texto:String):String;
begin
Texto := Trim(Texto);
while (Pos(´/´,texto) <> 0) do
Delete(texto,Pos(´/´,texto),01);
Result := Texto;
end;
procedure TForm01.BotaoGravaClick(Sender: TObject);
begin
DM.Tbl_Eventos_ENASCIMENTO.Value := RemoveBarra(Eventos_E.Nascimento.Text);
end;
codigo...
function RemoveBarra(Texto:String):String;
begin
Texto := Trim(Texto);
while (Pos(´/´,texto) <> 0) do
Delete(texto,Pos(´/´,texto),01);
Result := Texto;
end;
procedure TForm01.BotaoGravaClick(Sender: TObject);
begin
DM.Tbl_Eventos_ENASCIMENTO.Value := RemoveBarra(Eventos_E.Nascimento.Text);
end;
GOSTEI 0
Mahdak
22/08/2006
sim mas e depois se eu quiser usar o Extract(Day From NASCIMENTO) em um campo varchar???
só to perguntando isso pq ja passei por esse problema e tive que retornar para o campo do tipo DATE....
:cry:
só to perguntando isso pq ja passei por esse problema e tive que retornar para o campo do tipo DATE....
:cry:
GOSTEI 0
Marco Salles
22/08/2006
assim funciona beleza. só que eu nao gostaria de salvar os ´literais caracteres´, ou seja nao gostaria que fosse com o ´ / / ´ mas sim só os numeros...
sinceramente , do jeito que ´vai´ , eu acho que é irrelevante . Acho que o importante é do Jeito que se apresenta para o usuário , isto é a sua interface.
ja sei que a formatação de data do firebird é xx.xx.xxx
eu desconhelo esta afirmação...O campo do tipo Tdate se apresenta para mim , salvo alguma formatação extra , da maneira que é imposta pelas as [b:f7f8afb1c7]configuraçoes do Windows[/b:f7f8afb1c7]...
Ate mesmo no IbExpert quando visualizo aparece as Barras /
se eu setar pra nao salvar os ´literais caracteres´ o sistema acusa o erro ´22082006´ is not a valid date time, quando eu dou o post na tabela
Isto ja é um ´problema´ do tipo TdateField .
Eu precisaria que nao salvasse os ´literais caracteres´
eu acho que , mesmo que voce faça alguma [b:f7f8afb1c7]codificação extra[/b:f7f8afb1c7], para isto , na hora de apresentar od dados , vale as configuraçoes regionais... Logo , o formato com esta no Firebird < que é algo interno> não nos devemos nos preocupar
e que ele aceitasse efetivamente o valor NULL quando eu nao colocasse data alguma no mask edit
Voce fazendo um If voce evita esse tipo de erro
if MaskEdit1.text <> ´ / / ´ Then //vale somente salvando Literais DM.Tbl_Eventos_ENASCIMENTO.AsDateTime := StrToDateTime(Eventos_E.Nascimento.Text);
boa sorte.
GOSTEI 0
Mahdak
22/08/2006
muito obrigado a todos...
primeiro gostaria de dizer que nao gostaria que os literais caracteres fossem salvos unica e exclusivamente pele fato de nao querer que apareçam só barras nos relatórios que nao tem data cadastrada... consegui resolver com a ajuda de um amigo (peplau) e do marcos salles da seguinte forma:
antes de dar o post no formulario....
validando o relatório:
marcos, me expressei mal sobre a formatação de datas... o formato DATE no firebird tem pontos entre o dia.mes.ano, mas depende das configurações regionais sim... eu só tava me referindo ao ponto....
abração a todos!
primeiro gostaria de dizer que nao gostaria que os literais caracteres fossem salvos unica e exclusivamente pele fato de nao querer que apareçam só barras nos relatórios que nao tem data cadastrada... consegui resolver com a ajuda de um amigo (peplau) e do marcos salles da seguinte forma:
antes de dar o post no formulario....
// evita o problema da data vazia if NASCIMENTO.text = ´ / / ´ Then begin // passa batido e nao salva o nascimento end else begin DM.Tbl_Eventos_ENASCIMENTO.AsDateTime := StrToDateTime(Eventos_E.Nascimento.Text); end;
validando o relatório:
procedure TRelatEventos_E.QuickRep1BeforePrint(Sender: TCustomQuickRep; var PrintReport: Boolean); begin if label_nascimento.DataField = ´ / / ´ then label_nascimento.DataField := ´´; end;
marcos, me expressei mal sobre a formatação de datas... o formato DATE no firebird tem pontos entre o dia.mes.ano, mas depende das configurações regionais sim... eu só tava me referindo ao ponto....
abração a todos!
GOSTEI 0