PAGUE 6 MESES
LEVE 12 MESES
GARANTIR DESCONTO

Fórum Problema com transação no TDataSetProvider (BeforeUpdateRecord) e Sequence #451969

14/08/2013

0

Galera

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

Huelbert Oliveira

Responder

Posts

19/08/2013

Huelbert Oliveira

Alguém poderia ajudar
Responder

Gostei + 0

02/09/2013

Huelbert Oliveira

Bom dia

Existe alguma propriedade que na transação muda o campo para null.

Está dando esse erro comigo.


Aguardo
Responder

Gostei + 0

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

Aceitar