Problemas com Mascara no DbEdit em campo tipo data
estou usando máscaras do DBEdit para cadastrar um campo do tipo data por exemplo (máscara: __/__/____), mas quando apago o que está escrito e tento mudar de campo, da um erro e só deixa mudar de campo quando estiver excrito alguma coisa. O que faço pra evitar esse erro? preciso dos campos em branco.
Valeu
Valeu
Frostlost
Curtidas 0
Respostas
Macario
07/10/2005
Como voce esta atribuindo a mascara?
GOSTEI 0
Eniorm
07/10/2005
Atribui a máscara de data assim:
´#//;1;_´;
Falow
´#//;1;_´;
Falow
GOSTEI 0
Frostlost
07/10/2005
Ainda não deu certo!!
Estou usando esta máscara:
99/99/9999;1;_
Estou usando esta máscara:
99/99/9999;1;_
GOSTEI 0
Martins
07/10/2005
Ainda não deu certo!!
Estou usando esta máscara:
99/99/9999;1;_
Qual o seu Banco?
Vc está definindo essa mascara no Fields Editor...? Ou está definindo em algum evento, tipo onEnter?
procedure TForm1.DBEdit3Enter(Sender: TObject); begin Table1Birth_Date.EditMask :=´!99/99/0000;1;_´; end;
Assim eu deixei em branco e não deu erro, mas não sei qual o seu banco nem o seu comoponente dataware.
Boa Sorte!!!
GOSTEI 0
Frostlost
07/10/2005
Foi definida no editor de campos. A sua tb nao deu certo!!!
GOSTEI 0
Martins
07/10/2005
Foi definida no editor de campos. A sua tb nao deu certo!!!
Meu!! Qual o seu Banco? Outra coisa, vc não o marcou marcou como um valor requerido não né? e no seu banco esse campo pode ser null?
Tem q ver isso tb.
Vê aí!!
GOSTEI 0
Martins
07/10/2005
A sua mensagem de erro é semelhante a essa?
´Field (seu campo data) must have a value´
Boa Sorte!!!
´Field (seu campo data) must have a value´
Boa Sorte!!!
GOSTEI 0
Frostlost
07/10/2005
Uso o Banco Interbase 6.5.
O campo não está como requerido e no banco tb nao.
Ele grava nulo quando passo pelo campo batido.
O problema é quando na dbedit eu digito algo e em seguida apago, ou seja, se eu digitar alguma coisa e mudar de idéia, resolver deixar em branco, nao vou conseguir.
Sou obrigado a digitar uma data qualquer senão não consigo sair do campo dando erro de validação de data. Por causa no caso da mascara
/ / .
É isso que ocorre.
O campo não está como requerido e no banco tb nao.
Ele grava nulo quando passo pelo campo batido.
O problema é quando na dbedit eu digito algo e em seguida apago, ou seja, se eu digitar alguma coisa e mudar de idéia, resolver deixar em branco, nao vou conseguir.
Sou obrigado a digitar uma data qualquer senão não consigo sair do campo dando erro de validação de data. Por causa no caso da mascara
/ / .
É isso que ocorre.
GOSTEI 0
Frostlost
07/10/2005
econverterror with message ´ / / ´is not a valid dade´.
Valeu
Valeu
GOSTEI 0
Frostlost
07/10/2005
Esta dica vai ajudar muita gente que nao obteve a resposta ate hoje:
No evento onkeypress faça:
if Key=#8 then // se a tecla backspace for pressionada
DMTabelas.CdsMatriculas.FieldByName(´datatermino´).clear; //limpa o campo da data.
Valeu galera e contem comigo
No evento onkeypress faça:
if Key=#8 then // se a tecla backspace for pressionada
DMTabelas.CdsMatriculas.FieldByName(´datatermino´).clear; //limpa o campo da data.
Valeu galera e contem comigo
GOSTEI 0
Lorde_morte.
07/10/2005
A sua mensagem de erro é semelhante a essa?
´Field (seu campo data) must have a value´
Boa Sorte!!!
:shock:
Mas cara tu é brabo para entender as coisas.
:lol:
GOSTEI 0
Martins
07/10/2005
[quote:0a4b9425b5=´Martins´]A sua mensagem de erro é semelhante a essa?
´Field (seu campo data) must have a value´
Boa Sorte!!!
:shock:
Mas cara tu é brabo para entender as coisas.
:lol:[/quote:0a4b9425b5]
Quem ? Eu q sou brabo para entender as coisas? ou o colega q já solucionou o problema dele, hehehe
GOSTEI 0
Lorde_morte.
07/10/2005
Testado e aprovado.
[color=red:5090f30f1a][size=24:5090f30f1a]Problema solucionado!!!![/size:5090f30f1a][/color:5090f30f1a]
[color=red:5090f30f1a][size=24:5090f30f1a]Problema solucionado!!!![/size:5090f30f1a][/color:5090f30f1a]
GOSTEI 0
Mysys
07/10/2005
ai gurizada pra quem quiser ...
EditDate e DBEditDate 2 componentes que um colega fez e eu dei umas atualizadas..
Mascarar o DBEdit e Edit com o formato de data. Faz também a validação a data digitada
ta com os fontes pra quem quiser ..
caso alguem do forum queira colocar na area de downloads fique a vontade ..
[url]www.mysys.com.br/downloads/DBEDATE.zip[/url]
isso resolve seu problema..
um abraco ..
EditDate e DBEditDate 2 componentes que um colega fez e eu dei umas atualizadas..
Mascarar o DBEdit e Edit com o formato de data. Faz também a validação a data digitada
ta com os fontes pra quem quiser ..
caso alguem do forum queira colocar na area de downloads fique a vontade ..
[url]www.mysys.com.br/downloads/DBEDATE.zip[/url]
isso resolve seu problema..
um abraco ..
GOSTEI 0
Cesarpir
07/10/2005
Amigo MySYS:
Baixei e instalei o dbeditdate mas parece num ter nada de diferente fiz testes e acontece o seguinte problema:
1) Se digito uma data e dou enter por exemplo e se por acaso desisto da data digita, volto no campo e delete aparece a data : 01/01/1981
mesmo fazendo algo parecido como o que o amigo frostlost citou:
No evento onkeypress faça:
if Key=#8 then // se a tecla backspace for pressionada
DMTabelas.CdsMatriculas.FieldByName(´datatermino´).clear; //limpa o campo da data
Legal o componente sem ter que por mascaras no field, blz mas se resolver isto alguma dica ? to fazendo algo errado ?
===============================================
Amigo frostlost:
No evento onkeypress faça:
if Key=8 then // se a tecla backspace for pressionada
DMTabelas.CdsMatriculas.FieldByName(´datatermino´).clear; //limpa o campo da data
Fiz isto realmente apaga mas se for dar um applyupdates(0) na tabela
ai vem um erro assim:
Access violation at address 00402764 in module ´nomedoexe.exe´. Read addres FFFFFFFC
Resumindo para apagar uma data ja gravada no banco, voltar a ser nula num tem jeito algo que estou fazendo errado ?
Uso delphi 7, dbexpress, firebird 1.5
Obrigado
César
Baixei e instalei o dbeditdate mas parece num ter nada de diferente fiz testes e acontece o seguinte problema:
1) Se digito uma data e dou enter por exemplo e se por acaso desisto da data digita, volto no campo e delete aparece a data : 01/01/1981
mesmo fazendo algo parecido como o que o amigo frostlost citou:
No evento onkeypress faça:
if Key=#8 then // se a tecla backspace for pressionada
DMTabelas.CdsMatriculas.FieldByName(´datatermino´).clear; //limpa o campo da data
Legal o componente sem ter que por mascaras no field, blz mas se resolver isto alguma dica ? to fazendo algo errado ?
===============================================
Amigo frostlost:
No evento onkeypress faça:
if Key=8 then // se a tecla backspace for pressionada
DMTabelas.CdsMatriculas.FieldByName(´datatermino´).clear; //limpa o campo da data
Fiz isto realmente apaga mas se for dar um applyupdates(0) na tabela
ai vem um erro assim:
Access violation at address 00402764 in module ´nomedoexe.exe´. Read addres FFFFFFFC
Resumindo para apagar uma data ja gravada no banco, voltar a ser nula num tem jeito algo que estou fazendo errado ?
Uso delphi 7, dbexpress, firebird 1.5
Obrigado
César
GOSTEI 0
Lorde_morte.
07/10/2005
Fiz isto realmente apaga mas se for dar um applyupdates(0) na tabela
ai vem um erro assim:
Access violation at address 00402764 in module ´nomedoexe.exe´. Read addres FFFFFFFC
Resumindo para apagar uma data ja gravada no banco, voltar a ser nula num tem jeito algo que estou fazendo errado ?
Uso delphi 7, dbexpress, firebird 1.5
Obrigado
César
Eu não usei o applyupdates(0), mas usei post seguido de commit e comigo funcionou. :?
GOSTEI 0
Brasidata
07/10/2005
Outra forma de resolver o problema sem precisar dar nome ao DBedit ou ao campo (servindo, portanto para QUALQUER DBedit) é inserir o seguinte código no evento OnChange do componente:
if ((SENDER as TDBEdit).DataSource.DataSet.State in [dsInsert,dsEdit]) AND ((SENDER as TDBEdit).Text = ´ / / ´) then
(SENDER as TDBEdit).Field.Clear;
Com isso, se vc tiver vários campos com esse erro no form, basta direcionar todos os eventos OnChange para o mesmo código sem precisar redigitá-lo ou editá-lo para cada campo.
Abraços
if ((SENDER as TDBEdit).DataSource.DataSet.State in [dsInsert,dsEdit]) AND ((SENDER as TDBEdit).Text = ´ / / ´) then
(SENDER as TDBEdit).Field.Clear;
Com isso, se vc tiver vários campos com esse erro no form, basta direcionar todos os eventos OnChange para o mesmo código sem precisar redigitá-lo ou editá-lo para cada campo.
Abraços
GOSTEI 0
Rones
07/10/2005
não entendi nada
GOSTEI 0