Desplegar un archivo en forma de tabla con c# en windows aplicattion

Iniciado por nico56, 2 Enero 2010, 19:13 PM

0 Miembros y 1 Visitante están viendo este tema.

seba123neo

pues claro, en el archivo debe faltar ese campo y al hacer el split solo quedan los campos que hay y ese indice no existe.o sea si en el archivo tenes 5 campos por ejemplo asi:

jose;san martin;pepe;seba;pipo

y en otra linea tenes:

jose;maria;martin

llega hasta el indice 2 y los otros no existe y ahi el error, para evitar eso se me ocurre que cada vez que en el while se haga el split, hagas un For, algo asi:

Código (vbnet) [Seleccionar]
        private void button1_Click(object sender, EventArgs e)
        {
            string[] campos;
            char[] x ={ ';' };//delimitador

            string vLinea = "";

            FileStream fs = new FileStream("C:\\ejemplo.txt", FileMode.Open);
            StreamReader sr = new StreamReader(fs);

            listView1.Columns.Add("FECHA ", 75);
            listView1.Columns.Add("CLIENTE", 100);
            listView1.Columns.Add("NUMERO", 75);
            listView1.Columns.Add("BANCO", 100);
            listView1.Columns.Add("VENCIMIENTO", 75);
            listView1.Columns.Add("IMPORTE", 75);
            listView1.Columns.Add("TENEDOR", 100);

            while (!sr.EndOfStream)
            {
                vLinea = sr.ReadLine();

                campos = vLinea.Split(x);

                ListViewItem oReg = new ListViewItem(campos[0]);

                listView1.View = View.Details;

                for (int i=1; i< campos.Length -1 ; i++)
                {
                    oReg.SubItems.Add(campos[i]);
                }

                listView1.Items.Add(oReg);
            }

            fs.Close();
            sr.Close();
        }


lo que hace es hacer un For desde el indice 0 hasta el mayor indice que tenga la matriz y lo agrega, y funciona por mas que no tengas algunos campos, pero no es lo que se deberia hacer, porque hay un problema por ejemplo ¿ como vos te aseguras que el dato que esta en la columna 2 es realmente de la columna 2 ?

ejemplo:

supongamos que en la columan 2 solo van los nombres

una linea normal:

01/01/2000;josesito;banco nacion

una linea sin la columna 1 te quedaria:

josesito;banco nacion

el codigo te va a funcionar, pero  te va a insertar la columna 2 como si fuera la 1 porque falta un campo....a no ser que te asegures que realmente cuando falta un campo este el separador ";" exista, por ejemplo en el ejemplo anterior deberia quedar asi:

;josesito;banco nacion

pregunta ¿quien genera ese archivo? ¿ no es mejor trabajarla con una base de datos?

saludos.
La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

MANULOMM

ya es un poco tarde pero hubiese sido muy sencillo con un dataGridView y un DataSet....

Atentamente,

Juan Manuel Lombana
Medellín - Colombia