Fórum Problema com transação no TDataSetProvider (BeforeUpdateRecord) e Sequence #451969
14/08/2013
0
Trabalho com Firebird 2.5 e Delphi 2010, codifico as transações como irei demonstrar abaixo:
TSQLDataSet, TDataSetProvider, TClientDataSet e TDataSource.
Para inserção no BD utilizo SEQUECE para o ID das tabelas, por isso seto -1 para o IDMaster, e vou diminuindo 1 para os demais ID das tabelas detalhe.
No Options do TDataSetProvider habilito as opções
[poCascadeDeletes,
poCascadeUpdates,
poAllowMultiRecordUpdates,
poPropogateChanges,
poRetainServerOrder,
poUseQuoteChar]
No BeforeUpdateRecord do TDataSetProvider :
if (SourceDS = cdsFaturamento) and (UpdateKind = ukInsert) then
begin
IDMaster := ProximoValor('MOVFATURAMENTO', 'ID_FATURAMENTO', 'SEQ_ID_FATURAMENTO');
DeltaDS.FieldByName('ID_FATURAMENTO').NewValue := IDMaster;
end
else
begin
if (IDMaster = '') and (cdsFaturamento.FieldByName('ID_FATURAMENTO').AsInteger > 0) then
IDMaster := TClientDataSet.FieldByName('ID_FATURAMENTO').AsString;
end;
if (SourceDS = sdsItens) and (UpdateKind = ukInsert) then
begin
DeltaDS.FieldByName('ID_FATURAMENTO_ITEM').NewValue := ProximoValor('MOVFATURAMENTO_ITENS', 'ID_FATURAMENTO_ITEM', 'SEQ_ID_FATURAMENTO_ITEM');
DeltaDS.FieldByName('ID_FATURAMENTO').NewValue := IDMaster;
end;
Depois do 2 faturamento o IDMaster fica igual a -1 e da erro.
Alguém sabe me informar o que posso estar fazendo de errado.
Huelbert Oliveira
Curtir tópico
+ 0Posts
19/08/2013
Huelbert Oliveira
Gostei + 0
02/09/2013
Huelbert Oliveira
Existe alguma propriedade que na transação muda o campo para null.
Está dando esse erro comigo.
Aguardo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)