Logo_Access_global_380x114Favicon_Access_global_180x180Logo_Access_global_380x114Logo_Access_global_380x114
  • Home
  • University
    • Destellos formativos
  • Labs
  • TV
  • Secciones
    • El mundo de Access
    • Explorando VBA
      • Artículos sobre VBA
      • Un trocito de código
    • Entrevistas
      • Profesionales de Access
    • El rincón de Excel
    • Bases de datos
      • MS SQL
      • MySQL
      • postgreSQL
      • SQLite
    • Clases magistrales
    • Utilidades hechas con Access
  • Access en el mundo
  • ¿Quiénes somos?
  • Cómo colaborar
  • Eventos
✕
            No hay resultados Mostrar todos los resultados
            VBA: Assert
            10/03/2022
            Diseño: mover formulario
            11/03/2022
            Mostrar todos

            Actualizar una conexión ODBC en tiempo de ejecución

            Publicado por Luis Viadel
            Categorías
            • postgreSQL
            • Un trocito de código
            Etiquetas
            • Conexión
            • ODBC
            • postgreSQL

            Esta función te permitirá conectar a una base de datos en tiempo de ejecución, sustituyendo la conexión actual de las tablas que deseemos por otra conexión


            Nivel: Avanzado

            ¿Cómo funciona?
            Bien pasando los parámetros de la cadena de conexión en la propia función como argumentos, bien buscando esos datos en alguna tabla, al ejecutarse reconecta las tablas que seleccionemos en tiempo de ejecución. Nos puede resultar muy útil para realizar conexiones rápidas a otras bases de datos para consultar información en tiempo real.

            Elementos que necesitas para poder ejecutar el código:

            1. Módulo estándar


            Código:
            Public Function PruebaConexion() As Boolean
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Fuente            : https://access-global.net/actualizar-una-conexion-odbc-en-tiempo-de-ejecucion
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Título            : PruebaConexion
            ' Autor original    : Luis Viadel
            ' Actualizado       : 10/03/2022
            ' Propósito         : actualizar una conexión
            ' Retorno           : Verdadero / falso según el resultado obtenido
            ' Argumento/s       : Si es una única conexión, no sería necesario pasar ningún argumento. Pero se puede pasar la cuenta de donde viene,
            '                     por ejemplo, incluso se pueden pasar todos los elementos de la cadena de conexión (dsn, pass, ...)
            '                     Parte                      Modo                    Descripción
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            '                     NOMBRE_DEL_ARGUMENTO       Obligatorio
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            ' Importante        : la cadena de conexión es para una base de datos de PostgreSQL. Para adaptar la cadena a la base da datos consultar la URL
            ' Más información   : https://www.connectionstrings.com/
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            'Test:              : Para adaptar este código en tu aplicación puedes basarte en este procedimiento test. Copiar el bloque siguiente al
            '                    portapapeles y pega en el editor de VBA. Descomentar la línea que nos interese y pulsar F5 para ver su funcionamiento.
            '
            'Sub pruebaconexion_test()
            'Dim funciona as boolean
            '
            '
            '   funciona=PruebaConexion
            '
            'End Sub
            '-----------------------------------------------------------------------------------------------------------------------------------------------
            Dim tdfCurrent As DAO.TableDef
            Dim tdfLinked As TableDef
            Dim strConnectionString As String, NombreDSN As String
            Dim tableOld As String, tableNew As String
            Dim I As Integer
            
            On Error GoTo LinErr
            
             strConnectionString = "ODBC;DSN=" & Midsn & ";" & _
                                      "DATABASE=" & Mibd & ";" & _
                                      "SERVER=" & Miserver & ";" & _
                                      "PORT=" & Miport & ";" & _
                                      "UID=" & Miuser & ";" & _
                                      "PWD=" & Mipass
            
            'Debug.Print strConnectionString
            'Conectamos las tablas
            For Each tdfCurrent In CurrentDb.TableDefs
                If Len(tdfCurrent.Connect) > 0 Then
                    If UCase$(Left$(tdfCurrent.Connect, 5)) = "ODBC;" Then
                        If Left(tdfCurrent.NAME, 1) = "~" Then GoTo LinNext
            'Revisamos todas las tablas de la matriz
                        For I = LBound(TableName) To UBound(TableName)
                            If LCase(tdfCurrent.NAME) = TableName(I) Then GoTo LinGraba
                        Next I
                        GoTo LinNext
            LinGraba:
                        tableOld = LCase(tdfCurrent.NAME)
                        TableError = tableOld
            'Siel nombre de la tabla contiene el schema, lo incluimos. En el ejemplo es "public"
                        tableNew = "public_" & LCase(tableOld)
            'Se puede incluir una pequeña pausa de código si no se ejecuta correctamente
                        Set tdfLinked = CurrentDb.CreateTableDef(tableNew)
                            tdfLinked.Connect = strConnectionString
                            tdfLinked.SourceTableName = tableOld
                            CurrentDb.TableDefs.Append tdfLinked
                        Set tdfLinked = Nothing
               
                        DoCmd.DeleteObject acTable, tableOld
                        DoCmd.Rename tableOld, acTable, tableNew
                    End If
                End If
            LinNext:
            Next
            
            PruebaConexion = True
            
            Exit Function
            
            LinErr:
            'Aquí tu tratamiento de errores
            PruebaConexion = False
            
            End Function
            Ver en el repositorio
            Compartir
            2
            Luis Viadel
            Luis Viadel

            Entradas relacionadas

            19/03/2023

            Función que convierte cualquier carácter a texto puramente ASCII (Access VBA)


            Leer más
            24/03/2022

            Obtener la fecha del primer día de la semana o último día de la semana en Access VBA


            Leer más
            28/02/2022

            Crear un acceso directo personalizado en el escritorio


            Leer más

            2 Comments

            1. Alexander Silva dice:
              08/07/2022 a las 8:39 pm

              necito habilitar alguna referencia para que funciones??

              Responder
              • Luis Viadel dice:
                10/07/2022 a las 7:11 pm

                Microsoft Office x.x Object Library, (x.x= tu versión de Office)

                Responder

            Deja una respuesta Cancelar la respuesta

            Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

            ETIQUETAS

            Access API BD Botones ComboBox Consultas CountOfLines CStr Diseño DoCmd Excel Exportar Fecha FileSystemObject Filtros For Each...Next Formulario Formularios Funciones Funciones de dominio GetFolder GetWindowRect Google maps Informes InStr Jose Bengoechea Kill Left Listbox Mid Módulos Node ProcCountLines Procedimientos ProcOfLine References Ribbon RunCommand Seguridad Split SysCmd Tablas TreeView VBA VBIDE

            ÚLTIMAS ENTRADAS

            • 0
              ¿Mis procedimientos tienen tratamiento de errores?
              21/03/2023
            • 0
              Moda, mediana y algo más
              20/03/2023

            ¿QUIERES PUBLICITAR TU EMPRESA AQUÍ?

            SUSCRÍBETE A NUESTRO
            NEWSLETTER

            Recibirás información puntual sobre el mundo de Access y VBA

            ¡Próximamente!

            Promovemos el uso de Access y de la programación en VBA en todo el mundo

            Centro de conocimiento


            Toda la sabiduría de los mejores programadores de Access y VBA a tu alcance.

            Legal

            Política de privacidad

            Condiciones de uso

            Condiciones del redactor

            ®Access Global 2021 | All right reserved
                      No hay resultados Mostrar todos los resultados