Problema com o maskedit e Datas

Delphi

16/05/2005

Olá pessoal, estou com o seguinte problema:
Tenho um campo chamado Data no BD e estou usando o maskedit para passa o conteúdo da data. Qdo não digito nda no maskedit ele passa para o BD a mascara como valor, ou seja, / / , e dá o seguinte erro: ´não pode converter um tipo string em um tipo data. Qdo retiro a mascara dá tb o mesmo erro, mas o valo passado é ´´ ´´.
Eu queria passar o campo data como vazio no banco de dados, não sendo obrigado a digitar uma data.

Obrigado!

Obs: D7 com FB

mascara já testadas:
!99/99/9999;1;_
!99/99/9999;0;_
#//;1;_
//;0;_


Rssampaio

Rssampaio

Curtidas 0

Respostas

Juliopedroni

Juliopedroni

16/05/2005

Você só deve passar a date pro Banco, se for válida, tenta fazer isso dentro de um Try ou verifica se o MaskEdit.Text <> ´/ /´ , sacou ?


GOSTEI 0
Marco Salles

Marco Salles

16/05/2005

Qdo não digito nda no maskedit ele passa para o BD a mascara como valor, ou seja, / / , e dá o seguinte erro:


Como ele Passa para o BD :?: :?: :?:
Voce usa qual código para isto :?: :?:

E Nesta hora que voce tem que testar a Dica do juliopedroni
Você só deve passar a date pro Banco, se for válida,


Exemplo:

Teste para Mascara !99/99/9999;0;_
if MaskEdit1.Text <> ´´ Then
  significa Data Digitada
  


Teste Para Mascara !99/99/9999;1;_
if MaskEdit1.Text <> ´  /  /    ´ Then
  Significa Data Digitada
  


:arrow: Tem que ver tb se o Campo Data pode ser nulo.. Como ele foi definido No BD

:arrow: Note que eu aqui , não estou me preocupando com datas validas, ai voce deve se preocuora em construir um Bloco Try Except,
seje no evento on exit do MaskEdit Ou Na Hora de Salvar os Dados


GOSTEI 0
Rssampaio

Rssampaio

16/05/2005

Então kara...é o seguinte...qdo o usuario digita a data o sistema verifica se a data informada está correta, usando o bloco try, como vcs falaram. Eu queria o seguinte, se o usuário não informasse essa data como eu gravo no banco uma data em branco.

No BD o campo de Data [b:ad0107d687]não[/b:ad0107d687] está obrigatório o preenchimento.

Valeu!


GOSTEI 0
Marco Salles

Marco Salles

16/05/2005

essa data como eu gravo no banco uma data em branco. No BD o campo de Data não está obrigatório o preenchimento.


[b:9ac907a89f]Fazendo um teste if then na hora de dar o Post[/b:9ac907a89f]

Teste para Mascara !99/99/9999;0;_
Código:
bal .. bla ... bla...
if MaskEdit1.Text <> ´´ Then 
  Table1.NomeDoBandoData.Value:=DatetToStr(MaskEdit1.Text);
bla...bla..bla
Table1.Post 



GOSTEI 0
Rssampaio

Rssampaio

16/05/2005

Estou gravando no BD atraves de uma store procedure. E se eu passar ela somente qdo for <> ´ ´ a stp mesmo assim vai requerer um valor. O certo seria não passar esse campo na stp ae sim taria resolvido.

Obrigado!


GOSTEI 0
Marco Salles

Marco Salles

16/05/2005

O certo seria não passar esse campo na stp ae sim taria resolvido.


Eu não manxo nada de Stp :oops: :oops: :oops:

Mas so uma pergunta .. Da para escrever ou executar duas stp Diferentes :?: :?: :?:


GOSTEI 0
Repa

Repa

16/05/2005

Qdo eu tenho uma data vazia (no caso meu campo está definido como data na tabela) faço:
campo tabela.clear;
Assim ele não dá erro.


GOSTEI 0
Rssampaio

Rssampaio

16/05/2005

Respondendo ao Marcos, dá para executar duas stp diferentes sim...desde q vc passe todos os parametros dela.
Eu consegui resolve isso com o seguinte código:

if edtData.Text <> ´ / / ´ then
Params.ParamByName(´NomeParametro´).Value := edtData.Text
else
Params.ParamByName(´NomeParametro´).Value := Null;

Obrigado!


GOSTEI 0
POSTAR