Fórum Duvida Gravar Campo Data usando SqlDataSet #322568

30/05/2006

0

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

Responder

Posts

30/05/2006

Adriano Santos

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.


Responder

Gostei + 0

01/06/2006

Doni

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


Responder

Gostei + 0

03/06/2006

Beppe

Acho que seria algo assim:

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


Responder

Gostei + 0

04/06/2006

Adriano Santos

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?


Responder

Gostei + 0

05/06/2006

Doni

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


Responder

Gostei + 0

10/08/2006

Beppe

[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:


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar