
28/05/2008, 12:01
|
| | Fecha de Ingreso: julio-2006
Mensajes: 150
Antigüedad: 18 años, 6 meses Puntos: 0 | |
Respuesta: Error Hashtable El codigo es este
public List<Hashtable> leerCargaTxt(configuracion estrucTablas)
{
Singleton.Instance.progreso.PerformStep();
Singleton.Instance.resultados.Items.Add(DateTime.N ow + ": Lectura del Archivo de Carga " + estrucTablas.nombArchOrigen.ToString());
int numeroColumnas = estrucTablas.tipoAtr.Count; //Numero de columnas que hay en el archivo config
List<Hashtable> columnas = new List<Hashtable>();
for (int i = 0; i < numeroColumnas; i++) //Aqui se agregan el numero de HashTables que hay dentro de cada tabla (una por atributo)
{
columnas.Add(new Hashtable());
}
try
{
//Lectura de archivo de data
StreamReader lectCarga = new StreamReader(Singleton.Instance.rutaDataFuente.Tex t + "\\" + estrucTablas.nombArchOrigen);
string Linea = "";
int fila = 0;//Filas que se van recorriendo del archivo de lectura
Linea = lectCarga.ReadLine();
while (Linea != null)//Aqui se lee linea a linea el archivo donde viene la data para ser guardado en el vector lineas
{
//Creacion de Lista de Hashtables en el orden especificado con Will
string[] atributos = Linea.Split('|');
for (int columna = 0; columna < atributos.Length; columna++)
{
try
{
//valida el numero de columnas corresponda con el numero de atributos
if (atributos.Length > numeroColumnas) throw new ExceptionNumeroColumnas(fila, estrucTablas.nombArchOrigen.ToString());
//valida el largo de cada atributo corresponda con el largo de la configuracion
if (atributos[columna].Length > Convert.ToInt32(estrucTablas.tipoAtr[columna].tamano)) throw new ExceptionLongCampos(fila, columna, estrucTablas.nombArchOrigen.ToString());
//valida el tipo de dato
bool tipo = validaTipo(atributos[columna], estrucTablas.tipoAtr[columna].tipoAtr);
if (tipo == false) throw new ExceptionTipoAtributo(fila, columna, estrucTablas.nombArchOrigen.ToString());
else//Aqui se agregan las filas
{
if (columnas[columna].Contains(atributos[columna]))//Aqui se agrega la fila en la que se encuentra ese registro esto si el atributo ya esta cargado en el hash
{
List<int> posiciones = (List<int>)columnas[columna][atributos[columna]];
posiciones.Add(fila);
columnas[columna][atributos[columna]] = posiciones;
}
else//Aqui se agrega la fila en la que se encuentra ese registro y el valor del registro como tal esto si el atributo NO esta cargado en el hash
{
List<int> posiciones = new List<int>();
posiciones.Add(fila);
columnas[columna].Add(atributos[columna], posiciones);
}
}
}
catch (ExceptionLongCampos ex)
{
ControlInterfaz.log.Add(DateTime.Now + " : " + ex);
Singleton.Instance.resultados.Items.Add(" ERROR: por tanto NO se ha podido cargar el archivo " + estrucTablas.nombArchOrigen.ToString());
return null;
}
catch (ExceptionTipoAtributo ex)
{
ControlInterfaz.log.Add(DateTime.Now + " : " + ex);
Singleton.Instance.resultados.Items.Add(" ERROR: por tanto NO se ha podido cargar el archivo " + estrucTablas.nombArchOrigen.ToString());
return null;
}
catch (ExceptionNumeroColumnas ex)
{
ControlInterfaz.log.Add(DateTime.Now + " : " + ex);
Singleton.Instance.resultados.Items.Add(" ERROR: por tanto NO se ha podido cargar el archivo " + estrucTablas.nombArchOrigen.ToString());
return null;
}
}
fila++;
Linea = lectCarga.ReadLine();
}
estrucTablas.numRegis = fila;
lectCarga.Close();
}
catch (FileNotFoundException ex)
{
ControlInterfaz.log.Add(DateTime.Now + " : " + ex);
Singleton.Instance.resultados.Items.Add("ERROR : El archivo " + estrucTablas.nombArchOrigen.ToString() + " NO se pudo encontrar");
return null;
}
return columnas;
}
Aqui es donde leo el archivo y lo vacio dentro de cada hashtable incluida en el vector de columnas |