Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Shimaru

Data em Branco com Mascaras

Recommended Posts

Boa noite pessoal, estou com um problema no meu cadastro de clientes. Tenho um campo 'datanascimento' na minha tabela, sei que o certo é sempre cadastrar todos os dados do cliente mais as vezes isso nao acontece e qdo quero deixar esse campo em branco aparece uma mensagem de erro dizendo que a data nao é valida. Uso o bco de dados mysql e um maskedit com a seguinte mascara !99/99/9999;1;_. Preciso da ajuda de vcs para resolver esse problema...

 

Grato...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde Shimaru

 

o que provavelmente esta ocorrendo é que quando você manda gravar em branco esta indo para o banco no lugar da data o texto

 

"__/__/____" ou seja ele esta tentando gravar a máscara..

 

tenta ao invés de atribuir o campo (maskedit) supondo eu, direto ao banco, atribua o valor dele para uma variável e a variavel você joga para o banco usando o stringreplace..ou se preferir até jogue direto, mas não deixe de usar o stringreplace

 

ex:

 

 

var

vData : Tdate;

begin

vdata := StringReplace(editData.Text, '/', '', [rfReplaceAll]))

campodatadatabelarecebe := vdata;

end;

 

 

espero ter ajudado..

qualquer coisa post aí

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ogrigado pelas resposatas parceiros, mais nao estou conseguindo fazer funcionar. Vou passar o codigo que estou colocando:

No botao 'NOVO' para cadastrar um Novo Cliente coloquei o seguinte codigo: Dados.Cliente.FieldByName('nascimento').AsString := MaskEdit1.Text;

o meu maskedit tem a seguinte mascara: !99/99/9999;1;_ e consequentemente o texto aparece da seguinte maneira ' / / '

se eu deixar o maskedit sem a mascara e gravar em branco funciona normalmente e se eu colocar por exemplo: 10/10/2000 ele tbm funciona. Mais ai nao fica legal porque o tenho que digitar as '/' tbm. Entao se eu deixar com o maskedit com a mascara !99/99/9999;1;_ só funciona se eu preecher a data e eu deixar em branco ele dá um Erro dizendo que a '/ / ' nao é uma data valida. Seu eu colocar no maskedit a mascara !99/99/9999;0;_ e colocar por exemplo 10/10/2000 ai ele aparece que

10102000 nao é uma data valida. Nao sei mais o que fazer para solucionar esse problema e novamente a ajuda de vcs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo

 

o que esta havendo é que você esta mandando para o banco a data com formatação diferente da que ele utiliza..

 

 

tente utilizar o formatdatetime para gravar quando você informar a data,

e quando for inserir em branco, utiliza o stringreplace para retirar as //.

 

 

ex:

 

qryClientesEdit.FieldByName('XDT_NASC').Value := FormatDateTime('yyyy"/"mm"/"dd',edtNascimento.Date);

qryClientesEdit.FieldByName('XDT_NASC').Value := FormatDateTime('dd"/"mm"/"yyyy',edtNascimento.Date);

 

e quando estiver em branco..

 

qryClientesEdit.FieldByName('XDT_NASC').Value := trim(StringReplace(edtDtPedido.Text, '/', '', [rfReplaceAll]))

 

aí o formato da data você tem que ver qual seu banco utiliza.

 

de uma olhada com calma nisto aí que vai te ajudar..

 

estou meio com pressa agora para definir certinho o que é melhor para você

mas com isto em mão você saberá

 

qualquer duvida posta aí que te damos uma força

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.