ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Gravar data e hora em branco

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
faustoalencar
Novato
Novato


Registrado: Terça-Feira, 20 de Mai de 2008
Mensagens: 40

MensagemEnviada: Qui Ago 18, 2011 9:36 pm    Assunto: Gravar data e hora em branco Responder com Citação

Boa noite.

Tenho um sistema e, preciso gravar um campo de data e de hota (ambos makedit), em branco.

Delphi7, firebird.

Alguem pode me ajudar??

Desde agradeço pelo apoio

Fausto Alencar
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Qui Ago 18, 2011 9:48 pm    Assunto: Responder com Citação

Boa noite

Não sei se entendi corretamente a questão, mas na inclusão bastaria não atribuir valor aos campos, ou se os campos possuem algum valor e você quer deixa-los igual a nulo, experimente executar o método Clear do Field mais ou menos como segue:

Código:
ClientDataSet1.FieldByName('Data').Clear;


Espero que ajude.


Editado pela última vez por imex em Qua Nov 01, 2023 11:44 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
pestana
Colaborador
Colaborador


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 3147
Localização: Araras-SP

MensagemEnviada: Sex Ago 19, 2011 8:18 pm    Assunto: Re: Gravar data e hora em branco Responder com Citação

faustoalencar escreveu:
Boa noite.

Tenho um sistema e, preciso gravar um campo de data e de hota (ambos makedit), em branco.

Delphi7, firebird.

Alguem pode me ajudar??

Desde agradeço pelo apoio

Fausto Alencar


Como você definio este campo na tabela do banco?
_________________
Ao invés de ficar desanimado no que deu de errado, olhe para frente, aprenda com os erros e veja o que ainda pode ser feito. A determinação e a persistência é uma das etapas para o sucesso.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
rafaelradial
Novato
Novato


Registrado: Sexta-Feira, 12 de Agosto de 2011
Mensagens: 32

MensagemEnviada: Sáb Ago 20, 2011 9:48 am    Assunto: Responder com Citação

Acredito que a dúvida do faustoalencar é a mesma que a minha. Vou tentar explicar melhor.

Na tabela, tenho o campo DATA do tipo Date.

No formulário, nós temos maskedits com a máscara ' __/__/____ '

POrém, quando mando gravar no banco de dados, se não tiver uma data no maskedit, ele retorna um erro sobre conversão.

Código:

Project Project1.exe raised exception class EConvertError with message ''  /  /    ' is not a valid date'. Process stopped.


Como fazer nessa situação?? Eu apenas preciso que o campo que não foi digitado com data, fique em branco na tabela.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Dom Ago 21, 2011 12:05 pm    Assunto: Responder com Citação

É necessário utilizar um If para verificar se o MaskEdit foi preenchido ou não para atribuir a data ou não. Ex:

Código:
if MaskEdit1.Text = '  /  /    ' then
    ClientDataSet1.FieldByName('Data').Clear
else
    ClientDataSet1.FieldByName('Data').Value := StrToDate(MaskEdit1.Text);


obs: acho que algo semelhante pode ser feito com um parâmetro se estiver sendo utilizada uma query para gravação

Espero que ajude.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Dom Ago 21, 2011 3:49 pm    Assunto: Responder com Citação

Eu nem gosto de utilizar este componente, visto que as máscaras sempre tem algum problema, prefiro utilizar as máscaras no proprio componente, visto que nao gosto de gravar máscaras no banco, acho um desperdício de espaço desnecessário.


bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
pestana
Colaborador
Colaborador


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 3147
Localização: Araras-SP

MensagemEnviada: Seg Ago 22, 2011 3:19 pm    Assunto: Responder com Citação

será que assim da certo?

Código:
var
   data : TDate;
begin
   data := StrToDateDef(MaskEdit1.Text,0);
   if data <> 0 then
     // faça algo....
end;


obs.: eu não teste, qualquer coisa volte a postar!
_________________
Ao invés de ficar desanimado no que deu de errado, olhe para frente, aprenda com os erros e veja o que ainda pode ser feito. A determinação e a persistência é uma das etapas para o sucesso.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
pestana
Colaborador
Colaborador


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 3147
Localização: Araras-SP

MensagemEnviada: Seg Ago 22, 2011 3:22 pm    Assunto: Responder com Citação

johnny-walker escreveu:
Eu nem gosto de utilizar este componente, visto que as máscaras sempre tem algum problema, prefiro utilizar as máscaras no proprio componente...


Boa tarde Johnny!

Eu não entendi o que você quis dizer. Se não for encomodar, você poderia explicar?


Obrigado!
_________________
Ao invés de ficar desanimado no que deu de errado, olhe para frente, aprenda com os erros e veja o que ainda pode ser feito. A determinação e a persistência é uma das etapas para o sucesso.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
rafaelradial
Novato
Novato


Registrado: Sexta-Feira, 12 de Agosto de 2011
Mensagens: 32

MensagemEnviada: Ter Ago 23, 2011 9:32 am    Assunto: Responder com Citação

imex escreveu:
Ex:

Código:
if MaskEdit1.Text = '  /  /    ' then
    ClientDataSet1.FieldByName('Data').Clear
else
    ClientDataSet1.FieldByName('Data').Value := StrToDate(MaskEdit1.Text);





Perfeito. Funcionou direitinho pra mim. Obrigado mais uma vez pela ajuda imex!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
faustoalencar
Novato
Novato


Registrado: Terça-Feira, 20 de Mai de 2008
Mensagens: 40

MensagemEnviada: Dom Set 11, 2011 7:32 am    Assunto: Gravar data e hora em branco Responder com Citação

Amigos, bom dia.

Me desculpem, não ter postado nada antes, fiquem off um tempo, mas to de volta, vou testar e volto a postar os resultados.

Bom domingo.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
johnny-walker
Moderador
Moderador


Registrado: Sábado, 4 de Outubro de 2003
Mensagens: 10653
Localização: Contagem/MG - BRAZIL

MensagemEnviada: Dom Set 11, 2011 3:04 pm    Assunto: Responder com Citação

Pestana eu simplesmente nao gravo máscaras dentro do banco, gravo normal e sem máscaras.

Exemplo:
Telefone:
(31) (031) 3352-8000
gravo apenas
3103133528000
e Formato da másacra em runtime.

Outra é CNPJ
20.141.169/0001-55
gravo assim
20141169000155

tb Formato a máscara em runtime.


Para Gravar Data em branco é fácil:

Código:

TabelaData.AsVariant := Null;
ou
Tabela.FieldByName('DATA').AsVariant  := Null;
ou
DBEdit.Field.Clear;
ou
TabelaData.Clear
ou
//xx indice do campo
Tabela.Fields[xx].Clear



bye
_________________
P.O.W.E.R B.Y D.E.L.P.H.I


Editado pela última vez por johnny-walker em Dom Set 11, 2011 6:21 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
Djarum
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 1 de Junho de 2011
Mensagens: 296

MensagemEnviada: Dom Set 11, 2011 3:38 pm    Assunto: Responder com Citação

RafaelDial

Também uso dessa forma num pequeno banco pra gravar hora de data; Se estiver em branco, pede preenchimento... Funciona certinho...

Mas também uso a dica do colaborador johnny-walker em outro formulário e funciona perfeito.

Ótimas dicas!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
pestana
Colaborador
Colaborador


Registrado: Sábado, 25 de Junho de 2005
Mensagens: 3147
Localização: Araras-SP

MensagemEnviada: Sex Set 16, 2011 4:03 pm    Assunto: Responder com Citação

johnny-walker escreveu:
Pestana eu simplesmente nao gravo máscaras dentro do banco, gravo normal e sem máscaras.

Exemplo:
Telefone:
(31) (031) 3352-8000
gravo apenas
3103133528000
e Formato da másacra em runtime.

Outra é CNPJ
20.141.169/0001-55
gravo assim
20141169000155

tb Formato a máscara em runtime.


Para Gravar Data em branco é fácil:

Código:

TabelaData.AsVariant := Null;
ou
Tabela.FieldByName('DATA').AsVariant  := Null;
ou
DBEdit.Field.Clear;
ou
TabelaData.Clear
ou
//xx indice do campo
Tabela.Fields[xx].Clear



bye


A sim Johnny eu tambem trabalho desta forma eu não gravo mascaras no banco, adiciono em runtime!

É que eu não havia entendido o que você disse anteriormente, agora sim ficou claro!


Abraços!
_________________
Ao invés de ficar desanimado no que deu de errado, olhe para frente, aprenda com os erros e veja o que ainda pode ser feito. A determinação e a persistência é uma das etapas para o sucesso.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB