Visual Basic Foro

Programación => Visual Basic 6 => Mensaje iniciado por: Psyke1 en Febrero 02, 2015, 12:37:17 am

Título: [DUDA] Error en ADO al poner un WHERE en la consulta
Publicado por: Psyke1 en Febrero 02, 2015, 12:37:17 am
Tengo un fichero csv con la siguiente información:

Código: [Seleccionar]
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:

Código: (vb) [Seleccionar]
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:
Código: [Seleccionar]
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:
Código: (sql) [Seleccionar]
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
Título: Re:[DUDA] Error en ADO al poner un WHERE en la consulta
Publicado por: YAcosta en Febrero 02, 2015, 03:22:44 am
Y has intentado no con
Código: (VB) [Seleccionar]
Set oRS = oConn.Execute("SELECT EDAD FROM datos.csv WHERE NOMBRE='MARIO'")
sino con

Código: (VB) [Seleccionar]
oRS.Open "SELECT EDAD FROM datos.csv WHERE NOMBRE='MARIO'", oConn, 1, 1
Saludos
Título: Re:[DUDA] Error en ADO al poner un WHERE en la consulta
Publicado por: Psyke1 en Febrero 02, 2015, 02:00:03 pm
Buenas amigo,

La primera solución que propones era la que estaba poniendo.

La segunda da el siguiente error:
Código: [Seleccionar]
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
Código: [Seleccionar]
-2147467259 (800040005) Error in 'Open' method of '_Recordset' object.
Gracias.
Título: Re:[DUDA] Error en ADO al poner un WHERE en la consulta
Publicado por: ssccaann43 en Febrero 02, 2015, 04:53:52 pm
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