Fórum Valor nul em PARAMBYNAME #393581
10/01/2011
0
while not Cds.eof do
begin
sUpdate := ' UPDATE PARCELASAPAGAR set DTVENC_PARCELASAPAGAR ' +
' = :DTVENCPARCELASAPAGAR,' +
' DTPAGTO_PARCELASAPAGAR = :DTPAGTOPARCELASAPAGAR, ' +
' VLPARCELA_PARCELASAPAGAR = :VLPARCELA, ' +
' VLPAGO_PARCELASAPAGAR = :VLPAGO, ' +
' VLJUROS_PARCELASAPAGAR = :VLJUROS, ' +
' VLMULTA_PARCELASAPAGAR = :VLMULTA, ' +
' NDOC_PARCELASAPAGAR = :NDOC, ' +
' SITUACAO_PARCELASAPAGAR = :SITUACAO, ' +
' CD_FORMPAGAMENTO = :CD_FORMPAGTO ' +
' WHERE CDITEM_PARCELASAPAGAR = :CDITEM ' +
' AND CDCONTA_CONTASAPAGAR = :CDCONTA '; tUpdate.Close;
tUpdate.CommandText := '';
tUpdate.CommandText := sUpdate; tUpdate.ParamByName('DTVENCPARCELASAPAGAR').AsDateTime := Cds.FieldByName('DTVENCCDS')
.AsDateTime;
if Cds.FieldByName('DTPAGTOCDS').AsString <> '' then
tUpdate.ParamByName('DTPAGTOPARCELASAPAGAR').asDatetime :=
Cds.FieldByname('DTPAGTOCDS').asDatetime else tUpdate.ParamByName('DTPAGTOPARCELASAPAGAR').asDatetime := null // Como faço para jogar um valor nulo quando é executado o comando update caso não tenha dt de pagto.. ASVARIANT, não está disponível em ParamByName....
tUpdate.ParamByName('VLPARCELA').AsFloat :=
Cds.FieldByName('VLPARCELACDS').AsFloat; tUpdate.ParamByName('VLPAGO').AsFloat :=
Cds.FieldByName('VLPAGOCDS').AsFloat; tUpdate.ParamByName('VLJUROS').AsFloat :=
Cds.FieldByName('VLJUROSCDS').AsFloat; tUpdate.ParamByName('VLMULTA').AsFloat :=
Cds.FieldByName('VLMULTACDS').AsFloat; tUpdate.ParamByName('NDOC').AsString :=
Cds.FieldByName('NDOCCDS').AsString; tUpdate.ParamByName('SITUACAO').AsString :=
Cds.FieldByName('SITUACAOCDS').AsString; tUpdate.ParamByName('CD_FORMPAGTO').AsInteger :=
Cds.FieldByName('CDFORMPAGTO').asInteger; tUpdate.ParamByName('CDITEM').AsInteger :=
Cds.FieldByName('CDSITEMCDS').AsInteger; tUpdate.ParamByName('CDCONTA').AsInteger :=
Cds.FieldByName('CDCONTA').AsInteger; tUpdate.ExecSQL;
dmConexao.comit; Cds.Next;
end;
tUpdate.Free;
end;
Estou usando Delphi 2010 e Firebird 2.1 Fico no aguardo Rogério
Rogerio Santos
Curtir tópico
+ 0Posts
11/01/2011
Alan Souza
if Cds.FieldByName('DTPAGTOCDS').IsNull then
tUpdate.ParamByName('DTPAGTOPARCELASAPAGAR').Clear
else
tUpdate.ParamByName('DTPAGTOPARCELASAPAGAR').AsDateTime := Cds.FieldByname('DTPAGTOCDS').AsDateTime;
ou:
if Cds.FieldByName('DTPAGTOCDS').IsNull then
tUpdate.ParamByName('DTPAGTOPARCELASAPAGAR').Value := Null
else
tUpdate.ParamByName('DTPAGTOPARCELASAPAGAR').AsDateTime := Cds.FieldByname('DTPAGTOCDS').AsDateTime;
Gostei + 0
11/01/2011
Rogerio Santos
tUpdate.ParamByName('DTPAGTOPARCELASAPAGAR').Clear
else
tUpdate.ParamByName('DTPAGTOPARCELASAPAGAR').AsDateTime := Cds.FieldByname('DTPAGTOCDS').AsDateTime;
mas apresenta msg de erro: Estou usando o Firebird 2.1 e o Delphi 10 + dbx
Gostei + 0
12/01/2011
Alan Souza
se não der certo, tenta com o Null no Value.
Gostei + 0
12/01/2011
Rogerio Santos
begin if FormatDateTime('dd/mm/yyyy',
Cds.FieldByName('DTPAGTOCDS').AsDateTime) = '30/12/1899' then
tUpdate.ParamByName('DTPAGTOPARCELASAPAGAR').DataType := ftDateTime
else tUpdate.ParamByName('DTPAGTOPARCELASAPAGAR').asDatetime :=
Cds.FieldByName('DTPAGTOCDS').AsDateTime;
end
else tUpdate.ParamByName('DTPAGTOPARCELASAPAGAR').asDatetime :=
Cds.FieldByName('DTPAGTOCDS').AsDateTime;
Agora, está funcionando certinho, como eu queria Mas obrigado pela ajuda Rogério
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)