Autor Tema: Conectar excel a base de datos access... "Recordset"  (Leído 1540 veces)

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

mauricio23co

  • Bit
  • Mensajes: 1
  • Reputación: +0/-0
    • Ver Perfil
Conectar excel a base de datos access... "Recordset"
« en: Julio 30, 2015, 04:48:11 pm »
Estoy haciendo una macro que se conecte a una base de datos de Access y me traiga la información por SQL, que tome como filtros ciertos campos que estan en excel.  Necesito que se vayan actualizando ciertas celdas a medida que se va encontrando la información, el código que utilizo es el siguiente:

Esto lo tengo en un combobox que al seleccionar de una lista este busque la información correspondiente:

Hasta ahora el código funciona, pero es realmente lento, no se si la conexión la deba crear dentro del ciclo, o si se puede hacer afuera.  Pero cuando lo hago por fuera me sale un error la siguiente vez que va a ejecutar el "recSet.Open strSQL, datConnection"

Código: (VB) [Seleccionar]
Private Sub ComboBox1_Change()

Dim datConnection As ADODB.Connection
Dim recSet As ADODB.Recordset
Dim strDB, strSQL As String
Dim strTabla, Delegacion, Mes As String
Dim lngTablas As Long
Dim i As Long

strDB = "C:\CMO.accdb"
strTabla = "Base"

Delegacion = "'" & ComboBox1.Value & "'"
Mes = "'" & ComboBox2.Value & "'"
'plan = "'1. Protección de redes'"
Origen = "'R2015'"

Set datConnection = New ADODB.Connection
Set recSet = New ADODB.Recordset

datConnection.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & _
"Data Source =" & strDB & ";"

For i = 12 To 40

plan = "'" & ActiveSheet.Cells(i, 3).Value & "'"

If ComboBox1.Value = "ECA" Then
strSQL = "Select * from " & strTabla
Else
strSQL = "Select Acciones from " & strTabla & " where Delegación = " & Delegacion & " and Mes = " & Mes & " and Plan = " & plan & " and Clasificación = " & Origen
End If

recSet.Open strSQL, datConnection

ActiveSheet.Cells(i, 14).CopyFromRecordset recSet

recSet.NextRecordset

Next

'desconectar
recSet.Close: Set recSet = Nothing
datConnection.Close: Set datConnection = Nothing

End Sub

Alquien sabe si puedo hacer esto de otra forma?? o como puedo hacer más eficiente el código?

Gracias