Problema com o maskedit e Datas
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;_
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
Curtidas 0
Respostas
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
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
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!
No BD o campo de Data [b:ad0107d687]não[/b:ad0107d687] está obrigatório o preenchimento.
Valeu!
GOSTEI 0
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
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!
Obrigado!
GOSTEI 0
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
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.
campo tabela.clear;
Assim ele não dá erro.
GOSTEI 0
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!
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