Juanjo Luna

MVP Microsoft 365 Apps & Services 2023

LinkedIn Learning Instructor

Presidente de Access User Groups España

CEO Luna-Soft

Desarrollador

Consultor Informático

Juanjo Luna

MVP Microsoft 365 Apps & Services 2023

LinkedIn Learning Instructor

Presidente de Access User Groups España

CEO Luna-Soft

Desarrollador

Consultor Informático

Blog Post

FindTable (DAO):

15 de febrero de 2024 ACCESS, El rincón de Happy, Tablas

Pregunta

¿Cómo puedo saber por código si una tabla existe o no dentro de una base de datos?

Respuesta

 La función FindTable verifica si una tabla existe dentro de una base de datos. Puede buscar en la base de datos actual o en una base de datos externa, incluso aunque tenga contraseña (ver más abajo en “Argumentos”)

FindTable devolverá -1 si ha encontrado la tabla especificada o, en caso contrario, devolverá el número de error que se haya producido.

Argumentos

ArgumentoDescripción
TableNameRequerido. Nombre de la tabla a buscar
PwdOpcional. Contraseña de la base de datos
DBPathOpcional. Ruta y nombre de la base de datos donde se buscará la tabla. Si este argumento se omite o está vacío (“”), la función buscará en la base de datos actual

Ejemplo de uso

(busca en la base de datos actual)
Dim ret As Long

    ret = FindTable("MiTabla")
    If ret = -1 Then
        MsgBox "La tabla existe"
    Else
        MsgBox "Se ha producido el error " & ret
    End If

(busca en una base de datos con contraseña)
Dim ret As Long

    ret = FindTable("MiTabla", "123456", "C:\MiBd.mdb")
    If ret = -1 Then
        MsgBox "La tabla existe"
    Else
        MsgBox "Se ha producido el error " & ret
    End If

Código

'---------------------------------------------------------
'
' FindTable
'
' Código escrito originalmente por Juan M Afán de Ribera.
' Estás autorizado a utilizarlo dentro de una aplicación
' siempre que esta nota de autor permanezca inalterada.
' En el caso de querer publicarlo en una página Web,
' por favor, contactar con el autor en
'
'     accessvbafaq@ya.com
'
' Este código se brinda por cortesía de
' Juan M. Afán de Ribera
'
Function FindTable( _
                  TableName As String, _
                  Optional Pwd As String, _
                  Optional DBPath As String) As Long
                 
Dim db As Object 'DAO.Database
Dim tdf As Object 'DAO.Tabledef

    On Error GoTo err_FindTable
    If DBPath = "" Then
        Set db = CurrentDb
    Else
        If Pwd <> "" Then
            Set db = DBEngine.OpenDatabase( _
                DBPath, True, False, ";pwd=" & Pwd)
        Else
            Set db = DBEngine.OpenDatabase(DBPath)
        End If
    End If
    
    Set tdf = db.TableDefs(TableName)
    Set tdf = Nothing
    FindTable = -1
    
exit_Function:

    If Not db Is Nothing Then db.Close
    Set db = Nothing
    
    Exit Function

err_FindTable:

    FindTable = Err.Number
    Resume exit_Function

End Function
'---------------------------------------------------------

Créditos

con el fin de dar a conocer el trabajo de uno de los más grandes en el mundo de Access en español, y tras solicitar su permiso, replico este artículo de Juan M Afán de Ribera. Todos los derechos y autoría corresponden a él. Access & VBA FAQ – FindTable (DAO) (archive.org)

Taggs:
Related Posts
Opciones de impresión a través de código

Pregunta Sé cómo imprimir un informe mediante código y sé cómo hacer para que aparezca el cuadro de diálogo imprimir,…

Totales por página

Cómo conseguir en un informe calcular sólo el total para cada página

Write a comment