Hola a todos.
Mi consulta es la siguiente. Hace tiempo encontré el siguiente código
que me trae información de una base de datos en access. Se supone que
al digitar un código en A1, lo busca en la tabla y me lo trae a excel.
El código es el siguiente:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
If Target.Cells.Count <> 1 Then Exit Sub
Dim cnn1 As New ADODB.Connection
Dim rsProductos As New ADODB.Recordset
Dim strSentenciaSQL As String
'Crear una conexión a la base de datos.
cnn1.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=C:
\Boris Durango\Tablas Base HL\Bases93-2006.mdb;" & "User Id=admin;" &
"Password="
'Establecer la propiedad Source del Recordset
strSentenciaSQL = "SELECT * FROM Basica WHERE " & "Cedula = " &
Target.Value & ";"
'Crear el recordset
rsProductos.Open Source:=strSentenciaSQL, ActiveConnection:=cnn1,
CursorType:=adOpenKeyset, LockType:=adLockOptimistic
Application.EnableEvents = False
If rsProductos.RecordCount = 0 Then
ActiveSheet.Range("A2").Value = "Código de producto no
encontrado."
Else
ActiveSheet.Range("A2").Value = rsProductos!Nombre
'ActiveSheet.Range("B2").Value = reProductos!Sexo
End If
Application.EnableEvents = True
'Cerrar y liberar objetos
cnn1.Close
Set cnn1 = Nothing
Set rsProductos = Nothing
End Sub
El problema es que no siempre realiza los cambios, o sea, digito un
código en A1 que está en la tabla de access y no trae información a
excel. No tengo idea a que se deba.
Lo otro es que (cuando funciona) no me trae más registros de la tabla,
por ejemplo, quisiera traer a B2 el campo sexo, pero me genera error
en la línea. Supongo que es porque la asignación no permite sino un
campo.
He tratado de hacerlo por msquery, pero cada vez que quiero filtrar
por código me toca ingresar a la consulta, y no es muy práctico.
Agradezco cualquier aporte.
Gracias
Boris
Leer las respuestas