Valor nulo em campo data (Delphi)
08/08/2014
0
Estou precisando de uma ajuda.
Eu quero atribuir valor nulo ao campo do tipo data pelo Delphi.
Estou usando Firebird como banco de dados e o componente IBDataSet e já tentei o comando Database.TableDATA.clear; e não deu certo.
Agradeço quem puder me ajudar!
Marcos Roberto
Post mais votado
13/08/2014
Tenta na trigger:
create trigger zerar_data for soc_socios before insert or update as begin if (new.DATA_FILIACAO = '30.12.1899') then new.DATA_FILIACAO = null; end
Renato Rubinho
Mais Posts
08/08/2014
Marcos Roberto
procedure TFormCadSocios.Button1Click(Sender: TObject);
begin
Database.TableSoc_SociosDATA_FILIACAO.Clear;
end;
08/08/2014
Alessandro Folk
Mas tente fazer o seguinte teste:
1 - Colocar o seu DataSet em Edição antes de limpar? e depois gravar...
procedure TFormCadSocios.Button1Click(Sender: TObject); begin if TableSoc_Socios.State = DsBrowse then TableSoc_Socios.Edit; TableSoc_SociosDATA_FILIACAO.Clear; TableSoc_Socios.Post; end;
08/08/2014
Marcos Roberto
Outro detalhe eu tentei usar o comando que vc sugeriu a cima, o if TableSoc_Socios.State = DsBrowse then e deu o seguinte erro:
[DCC Error] UCadSocios.pas(497): E2010 Incompatible types: 'TIBDataSet' and 'TDataSetState'
Alguma dica??
09/08/2014
Renato Rubinho
O "Clear" deveria funcionar. Veja se a propriedade "Required" do campo TableSoc_SociosDATA_FILIACAO na TableSoc_Socios está como True. Para aceitar null, tem que estar como False.
Tenta também da seguinte forma para passar null.
procedure TFormCadSocios.Button1Click(Sender: TObject); begin Database.TableSoc_SociosDATA_FILIACAO.Value := null; end;
Abraççç,
Renato
09/08/2014
Marcos Roberto
a propriedade "Required" do campo TableSoc_SociosDATA_FILIACAO está false sim já tentei true e tbm não vai.
Também tentei do seu jeito: Database.TableSoc_SociosDATA_FILIACAO.Value := null; e me retorna o seguinte erro. Could not convert variant of type (Null) into type (Double).
Sabe me dizer o que pode ser??
Grato.
09/08/2014
Marcos Roberto
a propriedade "Required" do campo TableSoc_SociosDATA_FILIACAO está false sim já tentei true e tbm não vai.
Também tentei do seu jeito: Database.TableSoc_SociosDATA_FILIACAO.Value := null; e me retorna o seguinte erro. Could not convert variant of type (Null) into type (Double).
Sabe me dizer o que pode ser??
Grato.
10/08/2014
Renato Rubinho
Pela mensagem de erro que você postou, o tipo de campo não está como Date ou Timestamp. Está acusando do tipo Double.
Confirma qual o DataType no campo TableSoc_SociosDATA_FILIACAO.
Se o tipo de campo estiver correto, deveria funcionar tanto o clear quanto o value=null.
Tenta:
TableSoc_SociosDATA_FILIACAO.AsSQLTimeStamp := null; ou TableSoc_SociosDATA_FILIACAO.AsDateTime := null; ou TableSoc_SociosDATA_FILIACAO.AsVariant := null;
10/08/2014
Marcos Roberto
E o tipo do meu campo e do tipo DATE mesmo.
Renato eu testei no Delphi XE6 e o camando clear e o value=null funcionou. Acredito que este problema deve ser com o Delphi 2010!!
Porque será este problema??
11/08/2014
Renato Rubinho
Você tentou colocando AsSQLTimeStamp, AsDateTime ou AsVariant atribuir null?
Se não funcionar também, tenta também "AsString = null". Por que? Aí já é POG... rsrs
Abraççç,
Renato
11/08/2014
Marcos Roberto
Cara estou vendo se consigo instalar meus companentes no Delphi XE5, mas já tive outro problema: depois que instalo o Delphi ele mudou a posição dos menus de todo Windows.
Se liga só!
ele fica pra esquerda
[img]http://arquivo.devmedia.com.br/forum/imagem/362394-20140811-201357.jpg[/img]
Enquanto que o normal é ficar para a direita.
[img]http://arquivo.devmedia.com.br/forum/imagem/362394-20140811-201620.jpg[/img]
Pode me ajudar?? :)
11/08/2014
Gabriel Silva
begin
Database.TableSoc_SociosDATA_FILIACAO.datatype:= ftDate;
Database.TableSoc_SociosDATA_FILIACAO.Value := null;
end;
11/08/2014
Marcos Roberto
O componente é o IBDATASET.
12/08/2014
Renato Rubinho
E debugando ? Tentou limpar o valor ?
Mais dois testes:
TField(Database.TableSoc_SociosDATA_FILIACAO).Value := null;
ou
TField(Database.TableSoc_SociosDATA_FILIACAO).Clear;
Abraççç,
Renato
Clique aqui para fazer login e interagir na Comunidade :)