Duvida Gravar Campo Data usando SqlDataSet

Delphi

30/05/2006

Ola Pessoal

Delphi7 + DbExpress + Firebird 1.5

Estou com o seguinte problema, ao gravar um campo data passando o valor como 0 no bd esta ficando como 30/12/1899, como posso fazer para deixar como null utilizando o SQLDataSet

segue uma parte da rotina

with dtmPrincipal.SQLDataSetPG do
begin
dtmPrincipal.SQLDataSetPG.CommandText:= ´insert into APAGAR(codigo, fornecedor, aquisicao, vencimento, documento, valor, historico, pagamento, valorpago, desconto, juros, pagocom ) values (:codigo, :fornecedor, :aquisicao, :vencimento, :documento, :valor, :historico, :pagamento, :valorpago, :desconto, :juros, :pagocom )´;
if edtpagamento.text = ´ / / ´ then
ParamByName(´pagamento´).AsDate := 0
else
ParamByName(´pagamento´).AsDate := strtodate(edtPagamento.text);

Obrigado


Doni

Doni

Curtidas 0

Respostas

Adriano Santos

Adriano Santos

30/05/2006

with dtmPrincipal.SQLDataSetPG do
begin
  dtmPrincipal.SQLDataSetPG.CommandText:= ´insert into APAGAR(codigo, fornecedor, aquisicao, vencimento, documento, valor, historico, pagamento, valorpago, desconto, juros, pagocom )  values (:codigo, :fornecedor, :aquisicao, :vencimento, :documento, :valor, :historico, :pagamento, :valorpago, :desconto, :juros, :pagocom )´;
if edtpagamento.text = ´  /  /    ´ then
   ParamByName(´pagamento´).AsDateTime := Null;
else
   ParamByName(´pagamento´).AsDateTime := StrToDate(Edit1.Text);



Cara, não fiz o exemplo pra testar, mas creio que funcione. passe Null para o campo igual eu fiz no seu exemplo acima. Embora, vc não necessite passar a informação para o campo se o edit estiver vazio isso se vc deixou o campo na tabela como NOT NULL.


GOSTEI 0
Doni

Doni

30/05/2006

Ola Adriano,

tentei passar neste exemplo

ParamByName(´pagamento´).AsDateTime := Null;

mas ocorreu o seguinte erro.

raised exception class EVariantTypeCastError with message ´Could not convert variant of type (Null) into type (Double)´

e se eu nao passar nada

//ParamByName(´pagamento´).AsDateTime := Null;

ocorre o seguinte erro

no value for parameter ´pagamento´

a tabela foi criada assim pagamento DATE,

ou estou trabalhando errado com o SQLSDataSet para dar INSERT e UPDATE nas tabelas.

Obrigado


GOSTEI 0
Beppe

Beppe

30/05/2006

Acho que seria algo assim:

ParamByName(´pagamento´).DataType := dtDate;
ParamByName(´pagamento´).Clear;


GOSTEI 0
Adriano Santos

Adriano Santos

30/05/2006

Acho que seria algo assim: ParamByName(´pagamento´).DataType := dtDate; ParamByName(´pagamento´).Clear;


Nossa [b:17641c18d5]Beppe[/b:17641c18d5] quanto tempo não ´vejo´ vc no fórum... :wink:
Mano, nunca testei isso, mas acho que funciona de boas, pq estará limpando o conteúdo direto no campo.

Dá um toque pra gente se funcionar ok?


GOSTEI 0
Doni

Doni

30/05/2006

Ola Pessoal, muito obrigado pela dica

Fiz apenas uma alteracao inclui a Unit DB e alterei dtDate para ftDate e ai foi show de bola.

ParamByName(´pagamento´).DataType := ftDate;
ParamByName(´pagamento´).Clear;

Até mais :D


GOSTEI 0
Beppe

Beppe

30/05/2006

[quote:3b27b70f5d=´Adriano Santos´]Nossa [b:3b27b70f5d]Beppe[/b:3b27b70f5d] quanto tempo não ´vejo´ vc no fórum... :wink: [/quote:3b27b70f5d]
Capaz, eu tow sempre aqui :lol:

Fiz apenas uma alteracao inclui a Unit DB e alterei dtDate para ftDate e ai foi show de bola.

Verdade, ft vem de TFieldType, e não TDataType. :wink:


GOSTEI 0
POSTAR