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
Featured Replies
Archivado
Este tema está ahora archivado y está cerrado a más respuestas.
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