Saltar al contenido

Vba Excel - Access error: valor BOF - EOF


Recommended Posts

Hola a tod@s

De antemano agradecer por su tiempo en leer este tema que me complica.

La siguiente macro se conecta a una base de datos de Access, realiza la consulta, me extrae la primera linea (encabezado); pero no el resultado. Aparece un mensaje de error " El valor de BOF o EOF es True, o el actual registro se eliminó; la operación solicitada requiere un registro actual" cuando esta en la siguiente linea: "Recordset.MoveFirst" . Hasta donde pude observar el problema esta en LIKE '801-??-88????-???'  ya que si no tomo en cuenta esa parte la informacion extrae sin problemas. He intentado reemplazarlo con LIKE '801-**-88****-***' y de otras formas y siempre me da el mismo error. 

Sub ExportSystemDSK()

'Unload UserForm3
Application.ScreenUpdating = False

Dim conexion As Object
Dim cadenaConexion As String
Dim consulta As String
Set conexion = CreateObject("ADODB.connection")

	cadenaConexion = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\Srvmultiem\mgalpon\BODEGA-DSK\A2021\INGRESOS2021.mdb"
    
    Linea17 = "SELECT STOCKS.CODIGO, SUM(STOCKS.SALDOINICIAL + STOCKS.ENTRADA - STOCKS.EMPACANDO - STOCKS.[SALDO DISPONIBLE] - STOCKS.SALIDA) AS [(P)R Cont 88], SUM(STOCKS.[SALDO DISPONIBLE]) AS [(P)D Cont 88] " & Chr(10)
    Linea18 = "FROM STOCKS " & Chr(10)
    Linea19 = "WHERE STOCKS.ESTADO = ""E"" AND STOCKS.ZETA LIKE '801-??-88????-???' "& Chr(10)
    Linea20 = "GROUP BY STOCKS.CODIGO"
    Debug.Print Linea17 & Linea18 & Linea19 & Linea20
    consulta = Linea17 & Linea18 & Linea19 & Linea20

    conexion.Open cadenaConexion
    Set Recordset = conexion.Execute(consulta)
    columnas = Recordset.Fields.Count

    For I = 0 To columnas - 1
    Cells(1, I + 1) = Recordset.Fields(I).Name
    Next I
    'Pegamos los datos de la tabla en la nueva hoja
    Recordset.MoveFirst
    Range("A2").CopyFromRecordset Recordset
    'Damos formato a las columnas, ajustando contenidos
    Recordset.Close
    Set Recordset = Nothing
    conexion.Close
    Set conexion = Nothing

Espero haberme hecho entender.

 

Saludos

Enlace a comentario
Compartir con otras webs

Hola a tod@s

Pensé haber intentado lo suficiente, no fue así.

Leyendo en otros foros lo resolví con lo siguiente

Reemplazo el comodín ? por % o _ (subrayado)

 LIKE '801-??-88????-???' por LIKE '801-%%-88%%%%-%%%' o LIKE '801-__-88____-___'

Link que me ayudo : https://stackoverflow.com/questions/6037290/use-of-like-works-in-ms-access-but-not-vba

Al parecer el operador Like de Vba Excel con respecto al operador Like de Access trabajan distinto con respecto a los comodines.

Doy terminado el tema

Saludos

 

 

 

Enlace a comentario
Compartir con otras webs

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.