Fórum Duvida Gravar Campo Data usando SqlDataSet #322568
30/05/2006
0
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
Curtir tópico
+ 0Posts
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.
Gostei + 0
01/06/2006
Doni
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
03/06/2006
Beppe
ParamByName(´pagamento´).DataType := dtDate;
ParamByName(´pagamento´).Clear;
Gostei + 0
04/06/2006
Adriano Santos
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
05/06/2006
Doni
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
10/08/2006
Beppe
Capaz, eu tow sempre aqui :lol:
Verdade, ft vem de TFieldType, e não TDataType. :wink:
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)