Forums Últimos mensajes - Powered by IBM
 

Problema con Microsoft.Jet.OLEDB.4.0

09/02/2007 - 15:02 por Brian | Informe spam
Buenos Días,

Tengo un problema leyendo un archivo separado por comas (.csv)

Declaré un Proveedor para leer el número de columnas que tiene un archivo
csv, dependiendo del número de columnas, se determina el tipo de carga que se
está haciendo:

strProvider = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Application("PathFilesHV") & ";" & _
"Extended Properties=""text;HDR=NO;FMT=Delimited;"";"
objConnection.Open strProvider

strSQL = "SELECT * FROM " & varFileName & ";"

objRecordset.Open strSQL, objConnection, adOpenStatic, adLockOptimistic,
adCmdText

Pero el archivo tiene 23 Columnas y cuando hago el select solamente me
retorna 1 campo, o sea no está separando por comas el Archivo, toma como un
solo campo toda la primera fila del archivo.

Comprobé la versión del proveedor y es la última.

Muchas gracias por su colaboración

Brian Garnica </B>
Bogotá, Colombia
bamgar@gmail.com
bamgar@hotmail.com
brian.garnica@hotmail.com
 

Leer las respuestas

#1 Dani Castillo
09/02/2007 - 17:12 | Informe spam
la verdad es que no he probado a leer asi archivos de texto :-| ¿no te seria
mas rapido y comodo tratarlo como texto?, depende del numero de filas a
tratar pero con archivos normales yo he usado funciones de texto normales y
va de lujo, y mas si lo que requieres es una carga directa

en cualquier caso una vez leida una fila, puedes obtener rapido las
columnas:

vectorcolumnas= split ( fila, "," )
numerocolumnas=ubound(vectorcolumnas)
elemento5=vectorcolumnas[5]

etc

para cargas de texto yo suelo hacer:
1) Abrir como fichero de texto de textstream
2a) Si el fichero es pequeñito (unas pocas filas) uso un readall
3a) hago un split de la variable que contiene todo el readall con
filas=split(todo,vbcrlf)
4a) recorro con un for fila=0 to ubound(filas)
2b) Si el fichero es grande lo recorro con un bucle con readline para evitar
consumir mucha memoria si el proceso es algo comun, si es puntualmente el
readall es rapido

referencias sobre textstream
http://www.w3schools.com/asp/asp_re...stream.asp

no se si eso te soluciona algo, pero personalmente prefiero tratar los
archivos de texto "a mano", me da mas confianza (puedes hacer un parser
mucho mas versatil, por ejemplo que sea capaz de "ignorar" lineas que
comienzen con un caracter para permitir incluir comentarios, o tratar lineas
de distinto numero de columnas, etc , en definitiva tratar linea por linea
en lugar de confiar en el jet )

"Brian" escribió en el mensaje
news:
Buenos Días,

Tengo un problema leyendo un archivo separado por comas (.csv)

Declaré un Proveedor para leer el número de columnas que tiene un archivo
csv, dependiendo del número de columnas, se determina el tipo de carga que
se
está haciendo:

strProvider = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Application("PathFilesHV") & ";" & _
"Extended Properties=""text;HDR=NO;FMT=Delimited;"";"
objConnection.Open strProvider

strSQL = "SELECT * FROM " & varFileName & ";"

objRecordset.Open strSQL, objConnection, adOpenStatic, adLockOptimistic,
adCmdText

Pero el archivo tiene 23 Columnas y cuando hago el select solamente me
retorna 1 campo, o sea no está separando por comas el Archivo, toma como
un
solo campo toda la primera fila del archivo.

Comprobé la versión del proveedor y es la última.

Muchas gracias por su colaboración

Brian Garnica </B>
Bogotá, Colombia



Preguntas similares