FindTable (DAO):
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
Argumento | Descripción |
---|---|
TableName | Requerido. Nombre de la tabla a buscar |
Pwd | Opcional. Contraseña de la base de datos |
DBPath | Opcional. 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)
Pregunta Sé cómo imprimir un informe mediante código y sé cómo hacer para que aparezca el cuadro de diálogo imprimir,…
Cómo conseguir en un informe calcular sólo el total para cada página