Saltar al contenido
View in the app

A better way to browse. Learn more.

Ayuda Excel

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Contar Registros de una tabla Access desde formulario Excel vba

publicado

Buenas tardes, tengo una procedimiento que estoy modificando para contar los registros de una tabla access y verlos en un textbox de un formulario excel vba, pero el resultado siempre me sale -1 y en la tabla hay 4 registros.

Sub Consulta_Registros()
    Dim conexion As ADODB.Connection
    Dim recordset As ADODB.recordset
    Dim Consulta As String
    Dim MiBase As String
    
    Set conexion = New ADODB.Connection
    
    MiBase = "\DBClientes.accdb"
    conexion.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & Application.ThisWorkbook.Path & Application.PathSeparator & MiBase
    
        Consulta = "SELECT * FROM TClientes "
        Consulta = "SELECT COUNT(Razon_Social) FROM TClientes "
    
     Set recordset = New ADODB.recordset
    recordset.Open Consulta, conexion
    
    Dim total_reg As Integer
    recordset.MoveNext
    UserForm1.TextBox1.Value = recordset.RecordCount

    
    total_reg = 0
      Set recordset = Nothing
      Set conexion = Nothing
End Sub
 

Espero me puedan apoyar, gracias.

ContarRegistros.rar

Featured Replies

publicado

no descargué tu adjunto, pero para corregir el error de -1 en ".RecordCount", ANTES de esta línea:

Hace 2 horas, mangelperu dijo:

conexion.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & .......

antecede con la siguiente:

conexion.CursorLocation = adUseClient

saludos,
hector.

publicado
  • Autor
Hace 1 hora, Héctor Miguel dijo:

conexion.CursorLocation = adUseClient

Hola Hector, gracias por responder, realice lo que me indicaste, y el resultado es que del valor -1 lo vuelve positivo a 1, pero en la tabla tengo 4 registros, por lo que no esta contando todos los registros. haber si me pueden ayudar

 

Captura.JPG

DBClientes.rar

publicado
Hace 1 hora, mangelperu dijo:

lo que me indicaste... del valor -1 lo vuelve positivo a 1, pero en la tabla tengo 4 registros, por lo que no esta contando todos los registros

si no te funciona del lado de la conexión (que "debería"), cámbialo al lado del recordset:

recordset.CursorLocation = adUseClient
recordset.Open Consulta, conexion

otras alternativas al abrir el recordset (OJO: usa solo una de las alternativas) :

recordset.Open consulta, conexion, adOpenKeyset
recordset.Open consulta, conexion, adOpenKeyset And recordset.CursorLocation = adUseClient
recordset.Open consulta, conexion, adOpenStatic And recordset.CursorLocation = adUseClient
recordset.Open consulta, conexion, adOpenStatic

saludos,
hector.

Editado el por Héctor Miguel

publicado

Hola, el problema es que estas sobreescribiendo el  recordset en esta linea  recordset.MoveNext y despues no estas contando nada en esta linea UserForm1.TextBox1.Value = recordset.RecordCount ya que la forma en que realizas la consulta no devuelve "filas" para contar si no un valor.

Prueba asi:

Sub Consulta_Registros()
    Dim conexion As ADODB.Connection
    Dim recordset As ADODB.recordset
    Dim Consulta As String
    Dim MiBase As String
    
    Set conexion = New ADODB.Connection
    
    MiBase = "\DBClientes.accdb"
    conexion.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & Application.ThisWorkbook.Path & Application.PathSeparator & MiBase
    
        Consulta = "SELECT * FROM TClientes "
        Consulta = "SELECT COUNT(Razon_Social) FROM TClientes "
    
     Set recordset = New ADODB.recordset
    recordset.Open Consulta, conexion
    
    Dim total_reg As Integer
    
    UserForm1.TextBox1.Value = recordset.GetString

    total_reg = 0
      Set recordset = Nothing
      Set conexion = Nothing
End Sub

Saludos.

publicado
  • Autor

Gracias Alexhanders, me funciono tu aporte, igualmente gracias por tu apoyo Hector Miguel.

publicado
Sub Consulta_Registros()
    Dim conexion As ADODB.Connection
    Dim recordset As ADODB.recordset
    Dim Consulta As String
    Dim MiBase As String
    
    Set conexion = New ADODB.Connection
    
    MiBase = "\DBClientes.accdb"
    conexion.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & Application.ThisWorkbook.Path & Application.PathSeparator & MiBase
    
        Consulta = "SELECT * FROM TClientes "
        
    
     Set recordset = New ADODB.recordset
    recordset.Open Consulta, conexion, adOpenKeySet, adLockOptimistic, adCmdTableDirect
    
    Dim total_reg As Integer
    
    UserForm1.TextBox1.Value = recordset.RecordCount

    
    total_reg = 0
      Set recordset = Nothing
      Set conexion = Nothing
End Sub

Hola a todos, 

mangelperu, así también puede funciona.

Saludos,

 

César

Archivado

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.