Autor Tema: [DUDA] Error en ADO al poner un WHERE en la consulta  (Leído 1190 veces)

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

Psyke1

  • Megabyte
  • ***
  • Mensajes: 130
  • Reputación: +11/-7
  • VBManiac
    • Ver Perfil
    • h-Sec
[DUDA] Error en ADO al poner un WHERE en la consulta
« 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:



¿Qué se me está escapando?
Muchas gracias.

DoEvents! :P
« última modificación: Febrero 02, 2015, 01:08:18 am por Psyke1 »

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:[DUDA] Error en ADO al poner un WHERE en la consulta
« Respuesta #1 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
Me encuentras en YAcosta.com

Psyke1

  • Megabyte
  • ***
  • Mensajes: 130
  • Reputación: +11/-7
  • VBManiac
    • Ver Perfil
    • h-Sec
Re:[DUDA] Error en ADO al poner un WHERE en la consulta
« Respuesta #2 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.
« última modificación: Febrero 02, 2015, 03:31:27 pm por Psyke1 »

ssccaann43

  • Terabyte
  • *****
  • Mensajes: 970
  • Reputación: +97/-58
    • Ver Perfil
    • Sistemas Nuñez, Consultores y Soporte, C.A.
Re:[DUDA] Error en ADO al poner un WHERE en la consulta
« Respuesta #3 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
Miguel Núñez.