Visual Basic Foro
Programación => Visual Basic 6 => Mensaje iniciado por: Psyke1 en Febrero 02, 2015, 12:37:17 am
-
Tengo un fichero csv con la siguiente información:
NOMBRE,EDAD,FECHA
MARIO,30,24/12/2002
MARIA,90,24/12/2001
PEDRO,10,24/12/2004
Y quiero hacer una consulta de la siguiente manera:
Dim oConn As New ADODB.Connection
Dim oRS As New ADODB.Recordset
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & Environ("temp") & ";" _
& "Extended Properties=""text;HDR=Yes;FMT=Delimited(;)"";Persist Security Info=False"
Set oRS = oConn.Execute("select * from datos.csv")
Dim ofield As ADODB.Field
Do Until oRS.EOF
For Each ofield In oRS.Fields
Debug.Print "Field Name = " & ofield.Name & " Field Value = " & ofield.Value
Next ofield
oRS.MoveNext
Loop
Esto devuelve:
Field Name = NOMBRE Field Value = MARIO
Field Name = EDAD Field Value = 30
Field Name = FECHA Field Value = 24/12/2002
Field Name = NOMBRE Field Value = MARIA
Field Name = EDAD Field Value = 90
Field Name = FECHA Field Value = 24/12/2001
Field Name = NOMBRE Field Value = PEDRO
Field Name = EDAD Field Value = 10
Field Name = FECHA Field Value = 24/12/2004
Pero si intento hacer una consulta del tipo:
select EDAD from datos.csv where NOMBRE='MARIO'
Me devuelve esto:
(http://i57.tinypic.com/mvotc3.png)
¿Qué se me está escapando?
Muchas gracias.
DoEvents! :P
-
Y has intentado no con
Set oRS = oConn.Execute("SELECT EDAD FROM datos.csv WHERE NOMBRE='MARIO'")
sino con
oRS.Open "SELECT EDAD FROM datos.csv WHERE NOMBRE='MARIO'", oConn, 1, 1
Saludos
-
Buenas amigo,
La primera solución que propones era la que estaba poniendo.
La segunda da el siguiente error:
Dim oConn As New ADODB.Connection
Dim oRS As New ADODB.Recordset
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=" & Environ("temp") & ";" _
& "Extended Properties=""text;HDR=Yes;FMT=Delimited(,)"";Persist Security Info=False"
oRS.Open "SELECT EDAD FROM [datos.csv] WHERE NOMBRE='MARIO'", oConn, adOpenDynamic, adLockReadOnly
Dim ofield As ADODB.Field
Do Until oRS.EOF
For Each ofield In oRS.Fields
MsgBox "Field Name = " & ofield.Name & " Field Value = " & ofield.Value
Next ofield
oRS.MoveNext
Loop
Devuelve
-2147467259 (800040005) Error in 'Open' method of '_Recordset' object.
Gracias.
-
Rana, tiempo sin saber de ti...
Una consulta, necesariamente debes usar el archivo csv? No puedes pasar esa data a Access y luego de alli poder tratarla?
Saludos