Problemas com Mascara no DbEdit em campo tipo data

Delphi

07/10/2005

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


Frostlost

Frostlost

Curtidas 0

Respostas

Macario

Macario

07/10/2005

Como voce esta atribuindo a mascara?


GOSTEI 0
Eniorm

Eniorm

07/10/2005

Atribui a máscara de data assim:

´#//;1;_´;

Falow


GOSTEI 0
Frostlost

Frostlost

07/10/2005

Ainda não deu certo!!

Estou usando esta máscara:

99/99/9999;1;_


GOSTEI 0
Martins

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

Frostlost

07/10/2005

Foi definida no editor de campos. A sua tb nao deu certo!!!


GOSTEI 0
Martins

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

Martins

07/10/2005

A sua mensagem de erro é semelhante a essa?

´Field (seu campo data) must have a value´

Boa Sorte!!!


GOSTEI 0
Frostlost

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.


GOSTEI 0
Frostlost

Frostlost

07/10/2005

econverterror with message ´ / / ´is not a valid dade´.

Valeu


GOSTEI 0
Frostlost

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


GOSTEI 0
Lorde_morte.

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

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.

Lorde_morte.

07/10/2005

Testado e aprovado.

[color=red:5090f30f1a][size=24:5090f30f1a]Problema solucionado!!!![/size:5090f30f1a][/color:5090f30f1a]


GOSTEI 0
Mysys

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 ..


GOSTEI 0
Cesarpir

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


GOSTEI 0
Lorde_morte.

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

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


GOSTEI 0
Rones

Rones

07/10/2005

não entendi nada
GOSTEI 0
POSTAR