Visual Basic.NET - Urgente! Error al leer archivos...

 
Vista:

Urgente! Error al leer archivos...

Publicado por Carolina (19 intervenciones) el 21/01/2008 22:07:12
Hola a todos, espero que estén bien. Escribo por el siguiente problema: tengo un sistema que tiene que leer unos archivos largos de formato CSV (delimitados por comas).
El problema surge porque hay ciertos campos que no lee, dice que son Null pero en realidad sí hay un dato.

EJ: Tengo un archivo así:

Colum1, Colum2, Colum3, Colum4
1 , 2 , 3 , 4
5 , 6 , 7 , 8

Cuando lee el archivo lo introduzco en vectores y el resultado es el siguiente:

Vec1: Colum1 - NULL -Colum3 - Colum4
Vec2: 1 - 2 - NULL - 4
Vec3: 5 - NULL - 7 - 8

No hay ninguna diferencia entre los datos que lee y no lee....No logro entender por qué está pasando esto...Alguien podría ayudarme?
Es urgente, es para mi tesis =´(

Gracias y saludos.
Caro...
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Urgente! Error al leer archivos...

Publicado por hector (78 intervenciones) el 22/01/2008 12:58:25
Hola
Bueno aqui alguien me enseño algo importante, algo que tenemos que poner en los avisos para que nos ayuden, bueno lo importante es que necesitamos ver tu codigo para que alguien te puedad ayudar =), puede que algo este mal ahi.
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Urgente! Error al leer archivos...

Publicado por Carolina (19 intervenciones) el 22/01/2008 14:17:31
Hola jeje...ok...Les voy a copiar el código con el que paso el archivo un arrayList.
Gracias!

OJO: Ruta es el string del path donde se encuentra el archivo

Dim info As New FileInfo(ruta)
Dim mPath As String = info.DirectoryName & ""

Dim sConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & mPath & ";Extended Properties=" & Chr(34) & "text;HDR=No;Format=(,)" & Chr(34)

objConn = New OleDbConnection(sConnectionString)
objConn.Open()

Try

Dim objCmdSelect As New OleDbCommand("SELECT * FROM " & info.Name, objConn)
Dim objAdapter1 As New OleDbDataAdapter
objAdapter1.SelectCommand = objCmdSelect

objAdapter1.Fill(objDataset1, info.Name)

Dim i As Integer = 0
Dim n = objDataset1.Tables(0).Rows.Count()
Dim Filas as New ArrayList

While i < n
Filas.Add(objDataset1.Tables(0).Rows(i).ItemArray())
i = i + 1
End While

Catch ex As Exception

MsgBox(ex.Message)

Finally

objConn.Close()

End Try

* Por cierto conseguí otra forma de hacerlo pero no se si funcione bien, si alguien sabe se lo agradecería mucho (lo que más me preocupa es que no sé como cerrar la conexión con el archivo):


Dim fso = CreateObject("Scripting.FileSystemObject")
Dim stream = fso.OpenTextFile(ruta)

Dim Filas As New ArrayList
Dim i = 0

Do While stream.AtEndOfStream = False
Dim strRec = stream.ReadLine
Filas.Add(Split(strRec, ","))
Loop

GRACIAS!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Urgente! Error al leer archivos...

Publicado por hector (78 intervenciones) el 22/01/2008 14:48:47
Mira, error no lo entiendo, pero prueba de lasegunda manera:

If Dir("C:PRODUCCION", vbDirectory) = "" Then
MkDir("C:PRODUCCION")
End If
'HASTA AQUI CREAS UNA CARPETA PARA GUARDAR TU ARCHIVO
'Y LUEGO LO CREAS
Dim archivo As New StreamWriter("c:PRODUCCIONProducciones.txt"
'AQUI AGREGAS DATOS CADA.WRITE ES UNA LINEA
'SI ES UNA VARIABLE SIN COMILLAS, SI ES UNA CADENADE CARACTERES
'CON COMILLAS, Y LOS PUEDES SEPARAR POR ESPACIOS
archivo.Write("DATO")
archivo.Write(" ")
archivo.Write(VARIABLE)
'Y LUEGO LO CIERRAS
archivo.close

y para leer:
'PREGUNTAS SI EXISTE LACARPETA O ELA RCHIVO
If Dir("C:PRODUCCION", vbDirectory) = "" Then
Dim mensaje As String
mensaje = "Debe descargar la carpeta denominada PRODUCCION del servidor y guardarla en la unidad C:"
MsgBox("El archivo que se busca no se encuentra en este Computador: " + mensaje, MsgBoxStyle.Critical, ".:|Control de Producciones|:.")
Else
Dim archivo As New StreamReader("C:PRODUCCIONProducciones.txt")
Dim archivo1 As String
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Urgente! Error al leer archivos...

Publicado por hector (78 intervenciones) el 22/01/2008 14:59:11
Mira, error no lo entiendo, pero prueba de lasegunda manera:

If Dir("C:PRODUCCION", vbDirectory) = "" Then
MkDir("C:PRODUCCION")
End If
'HASTA AQUI CREAS UNA CARPETA PARA GUARDAR TU ARCHIVO
'Y LUEGO LO CREAS
Dim archivo As New StreamWriter("c:PRODUCCIONProducciones.txt"
'AQUI AGREGAS DATOS CADA.WRITE ES UNA LINEA
'SI ES UNA VARIABLE SIN COMILLAS, SI ES UNA CADENADE CARACTERES
'CON COMILLAS, Y LOS PUEDES SEPARAR POR ESPACIOS
archivo.Write("DATO")
archivo.Write(" ")
archivo.Write(VARIABLE)
archivo.Write(TEXTBOX.TEXT)
'Y LUEGO LO CIERRAS
archivo.close

y para leer:
'PREGUNTAS SI EXISTE LACARPETA O ELA RCHIVO
If Dir("C:PRODUCCION", vbDirectory) = "" Then
MSGBOX("ERROR")
Else
'ABRES ELARCHIVO Y CREAS UNA VARIABLEEN DONDE
'PODAMOS GUARDAR CADA LINEA A LEER (ARCHIVO1)
Dim archivo As New StreamReader("C:PRODUCCIONProducciones.txt")
Dim archivo1 As String
'LE ASIGNAS A LA VARIABLE ARCHIVO1 LA LECTURA DE CADA LINEA
'Y RECORRES ELARCHIVO
archivo1 = archivo.ReadLine()
Do While Not archivo1 Is Nothing
Console.WriteLine(archivo1)
'AQUI PUEDES IR GUARDANDO TUS DATOS EN UN ARREGLO
ARREGLO...
'SE SALTA A LA LINEA SIGUIENTE
archivo1 = archivo.ReadLine()
Loop
'TERMINA EL CICLO Y CIERRAS EL ARCHIVO
archivo.close

NOTA:
Bueno por lo que vi tu separas con espacios cada dato que quieres almacenar en un arreglo, yo tengo que hacer lo mismo pero lo mio no es tan apurado y estoy en otras cosas pero si puedes leer hasta donde lea un espacio y luego seguir del espacio hasta otro espacio, creo que en vez de .readline es .read o .readblock para busques.

Espero que te sirva
Saludos y Suerte si te resulta me avisas a mi correo [email protected]
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar