Comprobar si existe una tabla en una base de datos cualquiera
Por Enrique Martínez Montejo
Última revisión: 26/03/2004
 

Mediante el método OpenSchema de un objeto Connection de la biblioteca de ADO, podemos abrir un Recordset especificando un criterio de restricción, el cuál deberá de incluir el nombre y el tipo de la tabla cuya existencia se desea conocer. Si el Recordset no contiene registros, significa que la tabla no se encuentra en la base de datos.

El siguiente ejemplo implementa una función que devolverá un valor Boolean dependiendo de si la tabla existe (True) o no (False) en la base de datos. Para ello, deberá de pasar a la función un objeto Connection abierto, y el nombre de la tabla que se desea comprobar.

A continuación, copie y pegue el siguiente código en la sección Declaraciones del formulario de inicio del proyecto.

Option Explicit

Private
Sub Form_Load()

    Dim cnn As ADODB.Connection

    ' Abrimos una conexión con una base de datos SQL Server
    '

    Set cnn = New ADODB.Connection
    With cnn
        .Provider = "SQLOLEDB.1"
        .ConnectionString = "Data Source=Nombre_Servidor_SQL;" & _
                            "Initial Catalog=Northwind;" & _
                            "Integrated Security=SSPI;"
        .Open
    End With

    ' Comprobamos si existe la tabla
    MsgBox ExisteTabla (cnn, "Employees")

End Sub

Private Function ExisteTabla(ByVal cnn As ADODB.Connection, _
                             ByVal strTableName As String) As Boolean

    Dim rsTablas As ADODB.Recordset
    Dim vCriterio As Variant

    ' Abandonamos la función, si ...
    '
    ' ... el objeto Connection no es válido, ...

    If (cnn Is Nothing) Then Exit Function

    ' ... o si la conexión está cerrada
    If (cnn.State = adStateClosed) Then Exit Function

    ' Establecemos el criterio, indicando el nombre y tipo de la tabla
    vCriterio = Array(Empty, Empty, strTableName, "TABLE")

    ' Abro un recordset cuyo registros contienen
    ' las tablas existentes en la base de datos
    '

    Set rsTablas = cnn.OpenSchema(adSchemaTables, vCriterio)

    ' Si el Recordset no tiene registros, es porque la tabla
    ' no existe.
    '

    ExisteTabla = IIf(rsTablas.EOF, False, True)

End Function
 

 

Otros enlaces de interés:

Indice de Ejemplos de ADO


Enrique Martínez Montejo - 2004

NOTA: La información contenida en este artículo, así como el código fuente incluido en el mismo, se proporciona COMO ESTÁ, sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo explicado, recomendado o sugerido en el presente artículo.

NOTE: The information contained in this article and source code included therein, is provided AS IS without warranty of any kind, and confers no rights. You assume any risk to implement, use or run it explained, recommended or suggested in this article.