Fórum Problemas com Firebird. #348889

13/11/2007

0

Opa pessoal,

Todas as vezes que mando executar o meu software, ele da o seguinte erro: ´Unsusccessful execution caused by system error that does not preclude successful execution of subsequent statements. Invalid transaction Handle. (expecting explicit start transaction).

Bem, e isso ai, pessoal. Abaixo esta a sintaxe da procedure.

Outra coisa, eu devo criar um transaction por Operacao (update, etc) ou um transaction por banco?
Grato!

procedure TFPrincipal.Migrar();
var
  I, J: Integer;
  TabelaAntiga:string;
  arTabelas:array of string;
  TamArray:integer;

Begin
  DSMigra.First;
  for I := 0 to DSMigra.RecordCount - 1 do
  Begin
    if TabelaAntiga <> DSMigra.FieldByName(´TB_ANTIGO´).AsString then
      Begin
       TamArray:=Length(arTabelas) + 1;
       setLength(arTabelas,TamArray); //Aumento o tamanho do array
       arTabelas[TamArray-1]:=DSMigra.FieldByName(´TB_ANTIGO´).AsString;
      End;
   TabelaAntiga:=DSMigra.FieldByName(´TB_ANTIGO´).AsString;
   DSMigra.Next;
end;
   DSMigra.First;
   TabelaAntiga:=DSMigra.FieldByName(´TB_ANTIGO´).AsString;
    for I := 0 to Length(arTabelas) - 1 do
   begin
         AbreTabela(DataSetBDANTIGO,arTabelas[I]);//Tabela antiga
         DSMigra.Locate(´TB_ANTIGO´,arTabelas[I],[]);//Posiciona o ponteiro na tabela de dicionario
         AbreTabela(DataSetBDNOVO,DsMigra.FieldByName(´TB_NOVO´).AsString);
         while not DataSetBDANTIGO.EOF do
         begin
            DataSetBDNOVO.Insert;
            for j := 0 to DataSetBDANTIGO.FieldCount - 1 do
            begin
                  DSMigra.Locate(´TB_ANTIGO,CA_ANTIGO´,VarArrayOf([DSMigra.FieldByName(´TB_ANTIGO´).AsString,DSMigra.FieldByName(´CA_ANTIGO´).AsString]),[]);
                //Fazer testes do tipo aqui
                //?????????
                DataSetBDNOVO.FieldByName(DSMigra.FieldByName(´TB_NOVO´).AsString).AsString:=DataSetBDANTIGO.FieldByName(DSMigra.FieldByName(´TB_ANTIGO´).AsString).AsString;
            end;
            DataSetBDNOVO.Post;
            DataSetBDANTIGO.Next;
   end;
  end;
end;



Sergiofigueras

Sergiofigueras

Responder

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

Aceitar