| Exibir mensagem anterior :: Exibir próxima mensagem |
| Autor |
Mensagem |
faustoalencar Novato

Registrado: Terça-Feira, 20 de Mai de 2008 Mensagens: 40
|
Enviada: Qui Ago 18, 2011 9:36 pm Assunto: Gravar data e hora em branco |
|
|
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 |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Qui Ago 18, 2011 9:48 pm Assunto: |
|
|
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 |
|
 |
pestana Colaborador

Registrado: Sábado, 25 de Junho de 2005 Mensagens: 3147 Localização: Araras-SP
|
Enviada: Sex Ago 19, 2011 8:18 pm Assunto: Re: Gravar data e hora em branco |
|
|
| 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 |
|
 |
rafaelradial Novato

Registrado: Sexta-Feira, 12 de Agosto de 2011 Mensagens: 32
|
Enviada: Sáb Ago 20, 2011 9:48 am Assunto: |
|
|
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 |
|
 |
imex Moderador

Registrado: Sexta-Feira, 7 de Janeiro de 2011 Mensagens: 11666
|
Enviada: Dom Ago 21, 2011 12:05 pm Assunto: |
|
|
É 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 |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Dom Ago 21, 2011 3:49 pm Assunto: |
|
|
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 |
|
 |
pestana Colaborador

Registrado: Sábado, 25 de Junho de 2005 Mensagens: 3147 Localização: Araras-SP
|
Enviada: Seg Ago 22, 2011 3:19 pm Assunto: |
|
|
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 |
|
 |
pestana Colaborador

Registrado: Sábado, 25 de Junho de 2005 Mensagens: 3147 Localização: Araras-SP
|
Enviada: Seg Ago 22, 2011 3:22 pm Assunto: |
|
|
| 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 |
|
 |
rafaelradial Novato

Registrado: Sexta-Feira, 12 de Agosto de 2011 Mensagens: 32
|
Enviada: Ter Ago 23, 2011 9:32 am Assunto: |
|
|
| 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 |
|
 |
faustoalencar Novato

Registrado: Terça-Feira, 20 de Mai de 2008 Mensagens: 40
|
Enviada: Dom Set 11, 2011 7:32 am Assunto: Gravar data e hora em branco |
|
|
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 |
|
 |
johnny-walker Moderador


Registrado: Sábado, 4 de Outubro de 2003 Mensagens: 10653 Localização: Contagem/MG - BRAZIL
|
Enviada: Dom Set 11, 2011 3:04 pm Assunto: |
|
|
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 |
|
 |
Djarum Aprendiz


Registrado: Quarta-Feira, 1 de Junho de 2011 Mensagens: 296
|
Enviada: Dom Set 11, 2011 3:38 pm Assunto: |
|
|
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 |
|
 |
pestana Colaborador

Registrado: Sábado, 25 de Junho de 2005 Mensagens: 3147 Localização: Araras-SP
|
Enviada: Sex Set 16, 2011 4:03 pm Assunto: |
|
|
| 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 |
|
 |
|