Jump to content
mangelperu

ANSWERED Contar Registros de una tabla Access desde formulario Excel vba

Recommended Posts

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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.

Edited by Héctor Miguel

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.

×
×
  • Create New...

Important Information

Privacy Policy

Ayuda Excel - Madrid, Madrid, ES - Valorada por 6254 personas - Aprender Excel - Total: 4.7 / 5