Transaction is active - Error
Ola Pessoal,
A algum tempo ja estou com esse problema e ainda nao foi solucionado, ja tentei de tudo, mas nada adianta. Mas como nao custa tentar uma outra vez. Ai vai.
Tenho o seguinte codigo. Que e responsavel pela migracao de dois bancos de dados Firebird.
Tudo bem, compila normal e na teoria funcionaria. Mas o fato e que toda vez que compilo, quando ele vai abrir o DataBaseBDANTIGO no primeiro While, relativo a tabela PACIENTE, ele simplesmente da ´Transaction is active´.
Ou seja, ele diz que a transaction esta ativada em algum lugar, mas nao esta tendo nada disso no source. Tenho um transaction para cada banco.
Os DB e os DS estao com os transactions correspondentes assinalados. A propriedade Active dos transactions esta FALSE.
Bem, e isso, caso alguem possa me dar uma luz.
Grato!
A algum tempo ja estou com esse problema e ainda nao foi solucionado, ja tentei de tudo, mas nada adianta. Mas como nao custa tentar uma outra vez. Ai vai.
Tenho o seguinte codigo. Que e responsavel pela migracao de dois bancos de dados Firebird.
////////// Procedures //////////// procedure TFPrincipal.LerIni(var CaminhoBDANTIGO: string); // Procedure para ler o arquivo INI. // Variaveis globais usadas sao: // CaminhoBDANTIGO : String; // CaminhoArquivoIni : TIniFile; begin CaminhoArquivoIni := TIniFile.Create(´E:\BD\consultorio.ini´); //Atribuindo o caminho a variavel. CaminhoBDANTIGO := CaminhoArquivoIni.ReadString(´BancoDados´, ´local_Text´, CaminhoBDANTIGO); //Assimilando o valor a Variavel CaminhoDBANTIGO. CaminhoArquivoIni.Free; //Liberando... if (CaminhoBDANTIGO = ´´) then //Caso nao ache o Local_text... begin RichLog.Lines.Add(´Banco de dados nao encontrado no diretorio padrao.´); Application.CreateForm(TFOpenBox, FOpenBox); FopenBox.Show(); end else RichLog.Lines.Add(´ANTIGO:´+CaminhoBDANTIGO); //Coloca o valor no Label. //Procedure para pegar endereco no registro do Windows. LerRegistro(); end; procedure TFPrincipal.LerRegistro(); //Procedure para ler o Registro do Windows em busca do caminho do Banco de Dados. var Reg: TRegistry; Begin Reg := TRegistry.Create(); with Reg Do Begin rootkey := HKEY_LOCAL_MACHINE; OpenKey(´SOFTWARE\Notoriun\´,FALSE); CaminhoBDNOVO := ReadString(´LocalBancoTeste´); RichLog.Lines.Add(´NOVO:´+CaminhoBDNOVO); Closekey; End; Migrar(); End; procedure TFPrincipal.GeraLOG(); var ArquivoLOG : TextFile; begin AssignFile(ArquivoLOG, ´C:\Log Notoriun.txt´); Rewrite(ArquivoLOG); WriteLn(ArquivoLOG, RichLOG.Lines.Text); Flush(ArquivoLOG); end; procedure TFPrincipal.Migrar(); var I, J: Integer; TabelasMIGRAR : TStringList; Begin with DataBaseBDANTIGO, ConnectParams do begin DBName := ´localhost:´+CaminhoBDANTIGO; UserName := ´SYSDBA´; ConnectParams.Password := ´masterkey´; SQLDialect := 3; try Open; except on E: Exception do begin MessageDlg(´Impossivel conectar com Banco antigo.´#13 + E.Message, mtError, [mbOk], 0); end; end; end; with DataBaseBDNOVO, ConnectParams do begin DBName := ´localhost:´+CaminhoBDNOVO; ConnectParams.UserName := ´SYSDBA´; Password := ´masterkey´; SQLDialect := 3; try Open; except on E: Exception do begin MessageDlg(´Impossivel conectar com Banco NOVO.´#13 + E.Message, mtError, [mbOk], 0); end; end; DataBaseBDANTIGO.Connected; DataBaseBDNOVO.Connected; TabelasMIGRAR := TStringList.Create; //Ordenando as tabelas, por ordem correta de migracao. TabelasMIGRAR.Insert(0,´PACIENTE´); TabelasMIGRAR.Insert(1,´PATOLOGIA´); TabelasMIGRAR.Insert(2,´PROCEDIMENTO´); TabelasMIGRAR.Insert(3,´TIPO_TEXTO´); TabelasMIGRAR.Insert(4,´TEXTO´); TabelasMIGRAR.Insert(5,´CONVENIO´); TabelasMIGRAR.Insert(6,´MEDICO´); TabelasMIGRAR.Insert(7,´CORRECAO´); TabelasMIGRAR.Insert(8,´MODELO´); TabelasMIGRAR.Insert(9,´CONSULTA´); TabelasMIGRAR.Insert(10,´DOCUMENTO´); TabelasMIGRAR.Insert(11,´IMAGEM´); for I := 0 to TabelasMIGRAR.Count - 1 do Begin DataSetBDNOVO.Close; DataSetBDANTIGO.Close; while (TabelasMIGRAR[I] = ´PACIENTE´) do Begin DataSetBDANTIGO.Open; DataSetBDNOVO.Open; DataSetBDNOVO.FieldByName(´PAC_CODIGO´).AsCurrency := DataSetBDANTIGO.FieldByName(´PAC_CODIGO´).AsCurrency; DataSetBDNOVO.FieldByName(´PAC_NOME´).AsCurrency := DataSetBDANTIGO.FieldByName(´PAC_NOME´).AsCurrency; DataSetBDNOVO.FieldByName(´PAC_ENDERECO´).AsCurrency := DataSetBDANTIGO.FieldByName(´PAC_ENDERECO´).AsCurrency; DataSetBDNOVO.FieldByName(´PAC_BAIRRO´).AsCurrency := DataSetBDANTIGO.FieldByName(´PAC_BAIRRO´).AsCurrency; DataSetBDNOVO.FieldByName(´PAC_CIDADE´).AsCurrency := DataSetBDANTIGO.FieldByName(´PAC_BAIRRO´).AsCurrency; DataSetBDNOVO.FieldByName(´PAC_UF´).AsCurrency := DataSetBDANTIGO.FieldByName(´PAC_UF´).AsCurrency; DataSetBDNOVO.FieldByName(´PAC_RG´).AsCurrency := DataSetBDANTIGO.FieldByName(´PAC_RG´).AsCurrency; DataSetBDNOVO.FieldByName(´PAC_CPF´).AsCurrency := DataSetBDANTIGO.FieldByName(´PAC_CPF´).AsCurrency; DataSetBDNOVO.FieldByName(´PAC_CEP´).AsCurrency := DataSetBDANTIGO.FieldByName(´PAC_CEP´).AsCurrency; DataSetBDNOVO.FieldByName(´PAC_FONE_RESIDENCIAL´).AsCurrency := DataSetBDANTIGO.FieldByName(´PAC_FONE_RESIDENCIAL´).AsCurrency; DataSetBDNOVO.FieldByName(´PAC_FONE_COMERCIAL´).AsCurrency := DataSetBDANTIGO.FieldByName(´PAC_FONE_COMERCIAL´).AsCurrency; DataSetBDNOVO.FieldByName(´PAC_CELULAR´).AsCurrency := DataSetBDANTIGO.FieldByName(´PAC_CELULAR´).AsCurrency; DataSetBDNOVO.FieldByName(´PAC_EMAIL´).AsCurrency := DataSetBDANTIGO.FieldByName(´PAC_EMAIL´).AsCurrency; DataSetBDNOVO.FieldByName(´PAC_SEXO´).AsCurrency := DataSetBDANTIGO.FieldByName(´PAC_SEXO´).AsCurrency; DataSetBDNOVO.FieldByName(´PAC_PROFISSAO´).AsCurrency := DataSetBDANTIGO.FieldByName(´PAC_PROFISSAO´).AsCurrency; DataSetBDNOVO.FieldByName(´PAC_NASCIMENTO´).AsCurrency := DataSetBDANTIGO.FieldByName(´PAC_NASCIMENTO´).AsCurrency; DataSetBDNOVO.FieldByName(´PAC_NATURAL´).AsCurrency := DataSetBDANTIGO.FieldByName(´PAC_NATURAL´).AsCurrency; DataSetBDNOVO.FieldByName(´PAC_ESTADO_CIVIL´).AsCurrency := DataSetBDANTIGO.FieldByName(´PAC_ESTADO_CIVIL´).AsCurrency; DataSetBDNOVO.FieldByName(´PAC_EMISSOR´).AsCurrency := DataSetBDANTIGO.FieldByName(´PAC_EMISSOR´).AsCurrency; DataSetBDNOVO.FieldByName(´PAC_OBS´).AsCurrency := DataSetBDANTIGO.FieldByName(´PAC_OBS´).AsCurrency; DataSetBDNOVO.Post; End; while (TabelasMIGRAR[I] = ´PATOLOGIA´) do Begin DataSetBDANTIGO.Open; DataSetBDNOVO.Open; DataSetBDNOVO.FieldByName(´PAT_CODIGO´).AsInteger := DataSetBDANTIGO.FieldByName(´PAT_CODIGO´).AsInteger; DataSetBDNOVO.FieldByName(´PAT_NOME´).AsCurrency := DataSetBDANTIGO.FieldByName(´PAT_NOME´).AsCurrency; DataSetBDNOVO.FieldByName(´PAT_SIGLA´).AsCurrency := DataSetBDANTIGO.FieldByName(´PAT_SIGLA´).AsCurrency; DataSetBDNOVO.Post; End; while (TabelasMIGRAR[I] = ´PROCEDIMENTO´) do Begin DataSetBDANTIGO.Open; DataSetBDNOVO.Open; DataSetBDNOVO.FieldByName(´PRO_CODIGO´).AsInteger := DataSetBDANTIGO.FieldByName(´PRO_CODIGO´).AsInteger; DataSetBDNOVO.FieldByName(´PRO_CODIGO_PROCEDIMENTO´).AsCurrency := DataSetBDANTIGO.FieldByName(´PRO_CODIGO_PROCEDIMENTO´).AsCurrency; DataSetBDNOVO.FieldByName(´PRO_ANO´).AsCurrency := DataSetBDANTIGO.FieldByName(´PRO_ANO´).AsCurrency; DataSetBDNOVO.FieldByName(´PRO_PROCEDIMENTO´).AsCurrency := DataSetBDANTIGO.FieldByName(´PRO_PROCEDIMENTO´).AsCurrency; DataSetBDNOVO.FieldByName(´PRO_CH´).AsCurrency := DataSetBDANTIGO.FieldByName(´PRO_CH´).AsCurrency; DataSetBDNOVO.Post; End; while (TabelasMIGRAR[I] = ´TIPO_TEXTO´) do Begin DataSetBDANTIGO.Open; DataSetBDNOVO.Open; DataSetBDNOVO.FieldByName(´TIP_TEX_CODIGO´).AsCurrency := DataSetBDANTIGO.FieldByName(´PRO_CODIGO´).AsCurrency; DataSetBDNOVO.FieldByName(´TIP_TEX_TIPO´).AsCurrency := DataSetBDANTIGO.FieldByName(´PRO_CODIGO_PROCEDIMENTO´).AsCurrency; DataSetBDNOVO.Post; End; while (TabelasMIGRAR[I] = ´TEXTO´) do Begin DataSetBDANTIGO.Open; DataSetBDNOVO.Open; DataSetBDNOVO.FieldByName(´TEX_CODIGO´).AsCurrency := DataSetBDANTIGO.FieldByName(´TEX_CODIGO´).AsCurrency; DataSetBDNOVO.FieldByName(´TEX_TIP_TEX_CODIGO´).AsCurrency := DataSetBDANTIGO.FieldByName(´TEX_TIP_TEX_CODIGO´).AsCurrency; DataSetBDNOVO.FieldByName(´TEX_TEXTO´).AsCurrency := DataSetBDANTIGO.FieldByName(´TEX_TEXTO´).AsCurrency; DataSetBDNOVO.FieldByName(´TEX_TITULO´).AsCurrency := DataSetBDANTIGO.FieldByName(´TEX_TITULO´).AsCurrency; DataSetBDNOVO.Post; End; while (TabelasMIGRAR[I] = ´CONVENIO´) do Begin DataSetBDANTIGO.Open; DataSetBDNOVO.Open; DataSetBDNOVO.FieldByName(´CON_CODIGO´).AsCurrency := DataSetBDANTIGO.FieldByName(´CON_CODIGO´).AsCurrency; DataSetBDNOVO.FieldByName(´CON_NOME´).AsCurrency := DataSetBDANTIGO.FieldByName(´CON_NOME´).AsCurrency; DataSetBDNOVO.FieldByName(´CON_RESPONSAVEL´).AsCurrency := DataSetBDANTIGO.FieldByName(´CON_RESPONSAVEL´).AsCurrency; DataSetBDNOVO.FieldByName(´CON_FONE´).AsCurrency := DataSetBDANTIGO.FieldByName(´CON_FONE´).AsCurrency; DataSetBDNOVO.FieldByName(´CON_INSTRUCAO´).AsCurrency := DataSetBDANTIGO.FieldByName(´CON_INSTRUCAO´).AsCurrency; DataSetBDNOVO.FieldByName(´CON_VALOR_CH´).AsCurrency := DataSetBDANTIGO.FieldByName(´CON_US´).AsCurrency; DataSetBDNOVO.Post; End; while (TabelasMIGRAR[I] = ´MEDICO´) do Begin DataSetBDANTIGO.Open; DataSetBDNOVO.Open; DataSetBDNOVO.FieldByName(´MED_CODIGO´).AsCurrency := DataSetBDANTIGO.FieldByName(´MED_CODIGO´).AsCurrency; DataSetBDNOVO.FieldByName(´MED_NOME´).AsCurrency := DataSetBDANTIGO.FieldByName(´MED_NOME´).AsCurrency; DataSetBDNOVO.FieldByName(´MED_CRM´).AsCurrency := DataSetBDANTIGO.FieldByName(´MED_CRM´).AsCurrency; DataSetBDNOVO.FieldByName(´MED_ENDERECO´).AsCurrency := DataSetBDANTIGO.FieldByName(´MED_ENDERECO´).AsCurrency; DataSetBDNOVO.FieldByName(´MED_BAIRRO´).AsCurrency := DataSetBDANTIGO.FieldByName(´MED_BAIRRO´).AsCurrency; DataSetBDNOVO.FieldByName(´MED_CIDADE´).AsCurrency := DataSetBDANTIGO.FieldByName(´MED_CIDADE´).AsCurrency; DataSetBDNOVO.FieldByName(´MED_UF´).AsCurrency := DataSetBDANTIGO.FieldByName(´MED_UF´).AsCurrency; DataSetBDNOVO.FieldByName(´MED_CEP´).AsCurrency := DataSetBDANTIGO.FieldByName(´MED_CEP´).AsCurrency; DataSetBDNOVO.FieldByName(´MED_CELULAR´).AsCurrency := DataSetBDANTIGO.FieldByName(´MED_CELULAR´).AsCurrency; DataSetBDNOVO.FieldByName(´MED_FONE´).AsCurrency := DataSetBDANTIGO.FieldByName(´MED_FONE´).AsCurrency; DataSetBDNOVO.FieldByName(´MED_MAIL´).AsCurrency := DataSetBDANTIGO.FieldByName(´MED_MAIL´).AsCurrency; DataSetBDNOVO.FieldByName(´MED_TIPO´).AsCurrency := DataSetBDANTIGO.FieldByName(´MED_TIPO´).AsCurrency; DataSetBDNOVO.Post; End; while (TabelasMIGRAR[I] = ´CORRECAO´) do Begin DataSetBDANTIGO.Open; DataSetBDNOVO.Open; DataSetBDNOVO.FieldByName(´COR_CODIGO´).AsCurrency := DataSetBDANTIGO.FieldByName(´COR_CODIGO´).AsCurrency; DataSetBDNOVO.FieldByName(´COR_PALAVRA´).AsCurrency := DataSetBDANTIGO.FieldByName(´COR_PALAVRA´).AsCurrency; DataSetBDNOVO.FieldByName(´COR_CORRECAO´).AsCurrency := DataSetBDANTIGO.FieldByName(´COR_CORRECAO´).AsCurrency; DataSetBDNOVO.FieldByName(´COR_TIPO´).AsCurrency := DataSetBDANTIGO.FieldByName(´COR_TIPO´).AsCurrency; DataSetBDNOVO.Post; End; while (TabelasMIGRAR[I] = ´MODELO´) do Begin DataSetBDANTIGO.Open; DataSetBDNOVO.Open; DataSetBDNOVO.FieldByName(´MOD_CODIGO´).AsCurrency := DataSetBDANTIGO.FieldByName(´MOD_CODIGO´).AsCurrency; DataSetBDNOVO.FieldByName(´MOD_MODELO´).AsCurrency := DataSetBDANTIGO.FieldByName(´MOD_MODELO´).AsCurrency; DataSetBDNOVO.FieldByName(´MOD_DESCRICAO´).AsCurrency := DataSetBDANTIGO.FieldByName(´MOD_DESCRICAO´).AsCurrency; DataSetBDNOVO.FieldByName(´MOD_CATEGORIA´).AsCurrency := DataSetBDANTIGO.FieldByName(´MOD_CATEGORIA´).AsCurrency; DataSetBDNOVO.Post; End; while (TabelasMIGRAR[I] = ´CONSULTA´) do Begin DataSetBDANTIGO.Open; DataSetBDNOVO.Open; DataSetBDNOVO.FieldByName(´CON_CODIGO´).AsCurrency := DataSetBDANTIGO.FieldByName(´CON_CODIGO´).AsCurrency; DataSetBDNOVO.FieldByName(´CON_PAC_CODIGO´).AsCurrency := DataSetBDANTIGO.FieldByName(´CON_PAC_CODIGO´).AsCurrency; DataSetBDNOVO.FieldByName(´CON_CID_CODIGO´).AsCurrency := DataSetBDANTIGO.FieldByName(´CON_CID_CODIGO´).AsCurrency; DataSetBDNOVO.FieldByName(´CON_CON_CODIGO´).AsCurrency := DataSetBDANTIGO.FieldByName(´CON_CON_CODIGO´).AsCurrency; DataSetBDNOVO.FieldByName(´CON_MED_CODIGO´).AsCurrency := DataSetBDANTIGO.FieldByName(´CON_MED_CODIGO´).AsCurrency; DataSetBDNOVO.FieldByName(´CON_DATA_HORA´).AsCurrency := DataSetBDANTIGO.FieldByName(´CON_DATA_HORA´).AsCurrency; DataSetBDNOVO.Post; End; while (TabelasMIGRAR[I] = ´DOCUMENTO´) do Begin DataSetBDANTIGO.Open; DataSetBDNOVO.Open; DataSetBDNOVO.FieldByName(´DOC_CODIGO´).AsCurrency := DataSetBDANTIGO.FieldByName(´DOC_CODIGO´).AsCurrency; DataSetBDNOVO.FieldByName(´DOC_CON_CODIGO´).AsCurrency := DataSetBDANTIGO.FieldByName(´DOC_CON_CODIGO´).AsCurrency; DataSetBDNOVO.FieldByName(´DOC_PRO_CODIGO´).AsCurrency := DataSetBDANTIGO.FieldByName(´DOC_PRO_CODIGO´).AsCurrency; DataSetBDNOVO.FieldByName(´DOC_DOCUMENTO´).AsCurrency := DataSetBDANTIGO.FieldByName(´DOC_DOCUMENTO´).AsCurrency; DataSetBDNOVO.Post; End; while (TabelasMIGRAR[I] = ´IMAGEM´) do Begin DataSetBDANTIGO.Open; DataSetBDNOVO.Open; DataSetBDNOVO.FieldByName(´IMG_CODIGO´).AsCurrency := DataSetBDANTIGO.FieldByName(´IMG_CODIGO´).AsCurrency; DataSetBDNOVO.FieldByName(´IMG_PAC_CODIGO´).AsCurrency := DataSetBDANTIGO.FieldByName(´IMG_PAC_CODIGO´).AsCurrency; DataSetBDNOVO.FieldByName(´IMG_PAT_CODIGO´).AsCurrency := DataSetBDANTIGO.FieldByName(´IMG_PAT_CODIGO´).AsCurrency; DataSetBDNOVO.FieldByName(´IMG_CON_CODIGO´).AsCurrency := DataSetBDANTIGO.FieldByName(´IMG_CON_CODIGO´).AsCurrency; DataSetBDNOVO.FieldByName(´IMG_IMAGEM´).AsCurrency := DataSetBDANTIGO.FieldByName(´IMG_IMAGEM´).AsCurrency; DataSetBDNOVO.FieldByName(´IMG_DATA´).AsCurrency := DataSetBDANTIGO.FieldByName(´IMG_DATA´).AsCurrency; DataSetBDNOVO.Post; End; End; End; DataSetBDNOVO.ApplyUpdates; End; procedure TFPrincipal.FormClose(Sender: TObject; var Action: TCloseAction); Begin Application.Terminate(); End; procedure TFPrincipal.FormCreate(Sender: TObject); begin LerIni(CaminhoBDANTIGO); end; end.
Tudo bem, compila normal e na teoria funcionaria. Mas o fato e que toda vez que compilo, quando ele vai abrir o DataBaseBDANTIGO no primeiro While, relativo a tabela PACIENTE, ele simplesmente da ´Transaction is active´.
Ou seja, ele diz que a transaction esta ativada em algum lugar, mas nao esta tendo nada disso no source. Tenho um transaction para cada banco.
Os DB e os DS estao com os transactions correspondentes assinalados. A propriedade Active dos transactions esta FALSE.
Bem, e isso, caso alguem possa me dar uma luz.
Grato!
Sergiofigueras
Curtidas 0
Respostas
Sergiofigueras
16/11/2007
Up!
GOSTEI 0
Sergiofigueras
16/11/2007
Up!
GOSTEI 0