Duvida Gravar Campo Data usando SqlDataSet
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
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
Curtidas 0
Respostas
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
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
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
30/05/2006
Acho que seria algo assim:
ParamByName(´pagamento´).DataType := dtDate;
ParamByName(´pagamento´).Clear;
ParamByName(´pagamento´).DataType := dtDate;
ParamByName(´pagamento´).Clear;
GOSTEI 0
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
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
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
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:
Verdade, ft vem de TFieldType, e não TDataType. :wink:
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