PREGUNTA ======== como le podría hacer para verificar por código si el nombre de una tabla existe en la BD, si no existe crearla y posteriormente cómo le podré hacer para que esa misma tabla que creé la pueda borrar. RESPUESTAS ========== Dim db As Database Dim tdf As TableDef Dim Existe As Boolean ' Abrimos la base de datos Set db = OpenDatabase("C:\Mis documentos\Base97.mdb") ' Recorremos la colección TableDefs, para ' comprobar si existe la tabla ' For Each tdf In db.TableDefs If LCase(tdf.Name) = "prueba" Then Existe = True Exit For End If Next ' Si no existe la tabla, la creamos ' If Not Existe Then db.Execute _ "CREATE TABLE Prueba(" & _ "Campo1 INT," & _ "Campo2 TEXT (25))" ' La tabla ya existe Existe = True End If ' Eliminamos la tabla ' If Existe Then If MsgBox("¿Deseas eliminar la tabla?", _ vbYesNo) = vbYes Then db.Execute "DROP Table Prueba" End If End If OTRO METODO =========== Dim fExiste As Boolean Dim oBD As DAO.Database Dim oTabla As DAO.TableDef Dim oField As DAO.Field fExiste = False Set oBD = DBEngine.OpenDatabase("C:\bd1.mdb") For Each oTabla In oBD.TableDefs If oTabla.Name = "NombreTabla" Then fExiste = True Exit For End If Next If Not fExiste Then Set oTabla = New DAO.TableDef With oTabla .Name = "NombreTabla" Set oField = New DAO.Field With oField .Type = dbText .Size = 100 .Name = "NombreCampo" End With .Fields.Append oField End With oBD.TableDefs.Append oTabla End If oBD.TableDefs.Delete "NombreTabla" oBD.Close MEDIANTE ADO ============ Si no quieres utilizar el método «OpenSchema» del objeto «Connection» para averiguar si existe la tabla, puedes ejecutar una consulta de selección y comprobar si se ha producido un error. De producirse el error, significa que la tabla no existe: Dim cnn As ADODB.Connection Dim Existe As Boolean Set cnn = New ADODB.Connection With cnn .Provider = "Microsoft.Jet.OLEDB.4.0" .ConnectionString = "Data Source=C:\Mis documentos\bd1.mdb" .Open End With On Error Resume Next ' Comprobamos si existe la tabla, efectuando una ' simple consulta de selección. ' cnn.Execute "SELECT * From Clientes", , adCmdText ' Si no se ha producido un error, es porque la ' tabla existe ' If cnn.Errors.Count = 0 Then Existe = True Else ' La tabla no existe, la creamos cnn.Execute _ "CREATE TABLE Prueba(" & _ "Campo1 INT," & _ "Campo2 TEXT (25))" ' La tabla ya existe Existe = True End If ' Eliminamos la tabla ' If Existe Then If MsgBox("¿Deseas eliminar la tabla?", _ vbYesNo) = vbYes Then cnn.Execute "DROP Table Prueba" End If End If Si quieres utilizar el método «OpenSchema» consulta el siguiente enlace: http://groups.google.com/groups?hl=es&lr=&ie=UTF-8&threadm=e8ZT06KGCHA.1744%40tkmsftngp13&rnum=3&prev=/groups%3Fas_q%3DOpenSchema%26ie%3DUTF-8%26as_ugroup%3Dmicrosoft.public.es.vb%26as_uauthors%3DSoftjaen%2520%26lr%3D%26hl%3Des Sobre la rapidez de estos metodos ================================= Aunque no he realizado una prueba para ver la diferencia existente, entiendo que sí es más rápido mediante consultas SQL, porque para empezar no tienes que trabajar más que con un objeto «Database» (DAO) o «Connection» (ADO) previamente abierto. Pero claro, con los nuevos procesadores y memoria RAM instalada actualmente en los nuevos equipos, lo mismo la diferencia es insignificante. Todo consiste en utilizar los métodos con los que cada uno se adapte o se desenvuelva mejor. Para bien o para mal, yo me he adaptado al lenguaje SQL, y todo lo que sea crear tablas lo haga mediante CREATE TABLE.