Excel - Consulta ODBC desde Excel

   
Vista:

Consulta ODBC desde Excel

Publicado por Eduardo Rivero Barranco (1 intervención) el 03/05/2010 22:57:05
Buenas noches a todos!

Tengo un problemilla con una macro que no consigo resolver. El caso es que tengo una hoja de excel en la que quiero extraer información de una base de datos.

El funcionamiento es el siguiente;

Tengo dos ComboBox, Uno de los cuales (combobox1) tiene como rango una serie de valores que sirven en la base de datos para clasificar los registros. El otro tiene como rango un rango de celdas en el que tengo metida una consulta a ese archivo de access por medio de una ODBCConnection.

Mi idea es que al modificar el combobox1, se cambien los parámetros de filtro de la conexión ODBCConnection para que únicamente se desplieguen en el combobox2 los que corresponden con dicho combobox1. (vamos, como una lista de validación de datos dependiente de otra, solo que obteniendo los datos de un archivo access y minimizando las celdas con datos vinculados).

La cosa es que me aparece, al seleccionar un valor del combobox1 (y únicamente en algunos casos, sin lógica aparente) un mensaje del tipo "Se ha producido un error 1004 en el tiempo de ejecución, error definido por la aplicación o el objeto". Además, si le doy a finalizar a la ventana de error, se me queda como yo quería el combobox2.

El depurador se me queda en la linea: ActiveWorkbook.Connections("Conexión1").Refresh, pero si borro esta linea se me queda en el siguiente y me da el mismo mensaje......

Adjunto aquí el código:

Private Sub ComboBox1_Change()
Dim filtro As String
filtro = ComboBox1.Value
With ActiveWorkbook.Connections("Conexión1").ODBCConnection
.BackgroundQuery = True
.CommandText = Array( _
"SELECT `Consulta completa de productos`.`Nombre del producto`, `Consulta completa de productos`.Tipo" & Chr(13) & "" & Chr(10) & "FROM `C:\visu" _
, _
"al basic\empresas_temp.mdb`.`Consulta completa de productos` `Consulta completa de productos`" & Chr(13) & "" & Chr(10) & "WHERE (`Consulta com" _
, "pleta de productos`.Tipo='" & filtro & "')")
.CommandType = xlCmdSql
.Connection = Array(Array( _
"ODBC;DSN=MS Access Database;DBQ=C:\visual basic\empresas_temp.mdb;DefaultDir=C:\visual basic\;DriverId=25;FIL" _
), Array("=MS Access;MaxBufferSize=2048;PageTimeout=50;"))
.RefreshOnFileOpen = False
.SavePassword = False
.SourceConnectionFile = ""
.SourceDataFile = ""
.ServerCredentialsMethod = xlCredentialsMethodIntegrated
.AlwaysUseConnectionFile = False
End With
ActiveWorkbook.Connections("Conexión1").Refresh
Range("A1").Select
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder