public override void PostImportar() { if (ConexionExterna != null) { if (ConexionExterna.State == System.Data.ConnectionState.Open) { ConexionExterna.Close(); } ConexionExterna.Dispose(); ConexionExterna = null; } base.PostImportar(); }
public override void PreImportar() { if (ConexionExterna != null) { if (ConexionExterna.State == System.Data.ConnectionState.Open) { ConexionExterna.Close(); } ConexionExterna.Dispose(); } ConexionExterna = new System.Data.Odbc.OdbcConnection(); ConexionExterna.ConnectionString = @"dsn=" + this.Dsn + ";"; ConexionExterna.Open(); base.PreImportar(); }
public virtual void ImportarTabla(MapaDeTabla mapa) { Progreso.Value = 0; Progreso.ChangeStatus("Leyendo la tabla " + mapa.ToString()); string SqlSelect = @"SELECT * FROM " + mapa.TablaExterna; if (mapa.Where != null) { SqlSelect += " WHERE " + mapa.Where; } // Hago un SELECT de la tabla System.Data.IDbCommand TableCommand = ConexionExterna.CreateCommand(); TableCommand.CommandText = SqlSelect; System.Data.DataTable ReadTable = new System.Data.DataTable(); ReadTable.Locale = System.Globalization.CultureInfo.CurrentCulture; ReadTable.Load(TableCommand.ExecuteReader()); if (mapa.AutoSaltear) { mapa.Saltear = Lfx.Workspace.Master.CurrentConfig.ReadGlobalSetting <int>("Importar.RegistrosImportados." + this.Nombre + "." + mapa.Nombre, 0); if (mapa.Saltear > 1) { mapa.Saltear--; } } System.Data.IDbTransaction Trans = this.Connection.BeginTransaction(); // Navegar todos los registros Progreso.ChangeStatus("Incorporando " + ReadTable.Rows.Count.ToString() + " registros de la tabla " + mapa.ToString()); Progreso.Max = ReadTable.Rows.Count; int RowNumber = 0; foreach (System.Data.DataRow OriginalRow in ReadTable.Rows) { ++RowNumber; if (mapa.Saltear == 0 || RowNumber > mapa.Saltear) { Lfx.Data.Row ProcessedRow = this.ProcesarRegistro(mapa, OriginalRow); this.ImportarRegistro(mapa, ProcessedRow); } if ((RowNumber % 200) == 0) { Progreso.Advance(200); Lfx.Workspace.Master.CurrentConfig.WriteGlobalSetting("Importar.RegistrosImportados." + this.Nombre + "." + mapa.Nombre, RowNumber); Trans.Commit(); Trans.Dispose(); Trans = this.Connection.BeginTransaction(); } if (mapa.Limite > 0 && RowNumber > mapa.Limite) { break; } } Trans.Commit(); Trans.Dispose(); Trans = null; Lfx.Workspace.Master.CurrentConfig.WriteGlobalSetting("Importar.RegistrosImportados." + this.Nombre + "." + mapa.Nombre, RowNumber); }