Saltar al contenido

Recommended Posts

publicado (editado)

Hola tengo unas conexiones con una base de datos. Mediante consultas a través de ODBC que realicé con la opción microsoft Query, y donde se ve perfectamente la conexión. Después intento en ejecución que me haga una determinada consulta sobre esa conexión, pero siempre me vuelve a pedir que indique base de datos, y en una segunda pregunta que indique el usuario y la contraseña. Lo que me resulta extraño es si este proceso lo planteo de manera manual y en propiedades de la conexión le pongo la SELECT de Mysql directamente, entonces si funciona sin solicitar credenciales. Pongo el código que uso para conectar con la BBDD.

Sub actualiza_datos_T(NOMBRE_CONEXION, SQL, NOMBRE_BASE_DE_DATOS As String)
    With ActiveWorkbook.Connections(NOMBRE_CONEXION).ODBCConnection
        .BackgroundQuery = False 'Realizará la consulta en primer plano
        .CommandText = SQL
        .CommandType = xlCmdSql
        .Connection = "ODBC;DSN=" & NOMBRE_BASE_DE_DATOS & ";"
        .RefreshOnFileOpen = False
        .SavePassword = True
        .SourceConnectionFile = ""
        .SourceDataFile = ""
        .ServerCredentialsMethod = xlCredentialsMethodIntegrated
        .AlwaysUseConnectionFile = False
        .Refresh
    End With
End Sub

Entiendo que en alguno de los pasos lo he configurado mal, o cualquier otra cuestión. Lo que estoy buscando es que esas conexiones funciones en ejecución con las consultas (SELECT) que vaya proponiendo sin que cada vez me pida que indique la BBDD, ni el usuario, ni la contraseña.

Editado el por José María Aguilar
  • José María Aguilar changed the title to CONEXIÓN ODBC. EN EJECUCIÓN SIEMPRE SOLICITA QUE BASE DE DATOS USAR Y DEPUES EL USUARIO Y LA CONTRASEÑA.
publicado (editado)

¿Antes de que te traiga los datos tienes habilitada que guarde la contraseña?

image.png.54debf084422c668b22691460a8bb0a6.png

image.thumb.png.6c18b5b4f9f1b3fa3a72ca9086e1982c.png

Error mío, conectas por VBA

Editado el por Israel Cassales
publicado

En ese caso debes definir y guardar la conexión en tu código, algo así:

Sub ejecutarConsulta()

   
    Dim servidor As String
    Dim basedatos As String
    Dim usuario As String
    Dim contrasena As String
    
    servidor = "TUSERVER"
    basedatos = "TU BASE"
    usuario = "usuario"
    contrasena = "********"
    
    ' Definir la consulta
    Dim consulta As String
    consulta = "CONSULTA DE EJEMPLO"

 

publicado

Gracias Israel, lo de Guardar Contraseña lo active. No obstante hace unos años tenía un excel también con conexiones que funcionaba sin pedir nada,  he ido a verlo ese antiguo excel y no tengo activado el Guardar Contraseña, y aquella conexión también la definí diciendo que BBDD era y usuario y contraseña.

Debe ser algo de cuando he creado las conexiones desde mi ordenador,  o supongo que algo de permisos, pero no doy con el  asunto.

Por otra parte es extraño que si le pongo la consulta sobre "Texto de Comando"  en la definición de propiedades de conexión, no me pide nada, y la realiza perfectamente. Aunque tampoco se tanto de esto para saber si eso es normal o no.

Voy a intentar implementar con el código que me propones y cuento.

Lo dicho, muchas gracias.

Conéctate para comentar

Podrás dejar un comentario después de conectarte



Conéctate ahora
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.