Help: Data nula no firebird 2.0

Delphi

23/10/2008

Bom dia amigos,
estou fazendo uma conversão de dados e não consigo de maneira alguma inserir através de sql um data nula no firebird.

Utilizo: Delphi 7 + Fire 2.0 + sqlconnection + sqldataset + datasetprovider + clientdataset

Minha instrução:

insert into apagar (doc,datpago) values (:doc,:datpago)
parambyname(´doc´).AsString    := ´DOC´
/*
ParamByName(´datpago´).asdate := null;
ParamByName(´datpago´).Clear;
ParamByName(´datpago´).Value  := 0
ParamByName(´datpago´).Asdate := StrToDate(null);
ParamByName(´datpago´).IsNull;
*/


O problema é a inserção do campo datpago, tentei de todos os jeitos acima e nenhum deles funciona.
Qual a solução? Se é que existe.

Obrigado pela atenção

Mario


Aldus

Aldus

Curtidas 0

Respostas

Wilson Brito

Wilson Brito

23/10/2008

Não informe o campo datpago no código SQL.

insert into apagar (doc) values (:doc)
parambyname(´doc´).AsString    := ´DOC´ 


Caso haja necessidade de verificação, fica mais ou menos de acordo com o exemplo abaixo:

if trim(data) <> ´´ then begin
  ...
  insert into apagar (doc,datpago) values (:doc,:datpago)
  parambyname(´doc´).AsString    := ´DOC´ 
  parambyname(´datpago´).AsDate    := strtodate(data);
  ...
end else begin
  ...
  insert into apagar (doc,data) values (:doc)
  parambyname(´doc´).AsString    := ´DOC´ 
  ...
end;



GOSTEI 0
Aldus

Aldus

23/10/2008

Olá Wilson,

mas não há opção mais profissional e trabalhosa que esta?


GOSTEI 0
Joaoshi

Joaoshi

23/10/2008

Colega, vê se ajuda:

-Crie o parametro [b:8403a6aed8]datpago[/b:8403a6aed8] como DataType [b:8403a6aed8]ftString[/b:8403a6aed8]-Crie uma funçao que retornará a data (em string) ou NULL
-ParamByName(´datpago´).Value := FuncaoVerData(UmaData);
-ParamByName(´datpago´).Value := null
-ParamByName(´datpago´).Value := ´23.10.2008´

Ex.:
FuncaoVerData(Data:String):String
begin
if Data é uma data válida then
Result := DataFormatada
else
Result := ´NULL´;
end;

Espero ter ajudado.


GOSTEI 0
Joaoshi

Joaoshi

23/10/2008

Ficou meio confuso, mas acho que deu para passar a ideia.


GOSTEI 0
Juniorvieira

Juniorvieira

23/10/2008

No campo onde vai enviar a data coloca algo como:

dataset.fieldbyname(´DATA_EX´).asVariant := null

asvariant vc consegue passar null..
espero te ajudado abraço


GOSTEI 0
Aldus

Aldus

23/10/2008

Junior,
Não há asvariant para parambyname, apenas como vc escreveu para fieldbyname

Joao,
Como crio o tipo datatype ftstring?


GOSTEI 0
Aldus

Aldus

23/10/2008

Bom dia amigos,
consegui finalmente com a preciosa ajuda a vcs a solucionar esse problema.

Ficou assim:

ParamByName(´cadastro´).asdate         := Tabela1.Fieldbyname(´_datcadcli´).asdatetime


Agradeço a atenção.

Mario


GOSTEI 0
POSTAR