Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Saber si existe una tabla dentro de una BD

Estas en el tema de Saber si existe una tabla dentro de una BD en el foro de Visual Basic clásico en Foros del Web. Quisiera saber si hay una instruccion en visual que me permita saber si existe una TABLA dentro de una base de datos, pregunte en el ...
  #1 (permalink)  
Antiguo 15/02/2005, 07:46
Avatar de netorres  
Fecha de Ingreso: marzo-2004
Ubicación: 32 kms de Santiago a la costa
Mensajes: 132
Antigüedad: 20 años, 1 mes
Puntos: 0
Saber si existe una tabla dentro de una BD

Quisiera saber si hay una instruccion en visual que me permita saber si existe una TABLA dentro de una base de datos, pregunte en el foro "de bases de datos", pero en access solo se puede insertar, borrar, updatear y hacer procedures... no se si en visual se podrá hacer una consulta a traves de una funcion, porque cuando se hace una consulta sql por una tabla que no existe manda un error, obvio...

Por cualquier respuesta gracias!!!!
__________________
Contento Señor contento :-) (Sto. Padre Alberto Hurtado)
  #2 (permalink)  
Antiguo 15/02/2005, 08:33
Avatar de GeoAvila
Colaborador
 
Fecha de Ingreso: diciembre-2003
Ubicación: Antigua Guatemala
Mensajes: 4.032
Antigüedad: 20 años, 4 meses
Puntos: 53
entonces podrías dentifiacar el numero de error para cuanto te falte una tabla por el ejemplo el Ado simpre te da la descripción de error donde por lo regular dice que es lo que esta fallando

si utilizas el

On loca error resume next

y esto

if err <> 0 then
msgbox error
end if

creo podrías identificar elerror de la tabla faltante..

nos vemos..
__________________
* Antes de preguntar lee las FAQ, y por favor no hagas preguntas en las FAQ
Sitio http://www.geoavila.com twitter: @GeoAvila
  #3 (permalink)  
Antiguo 15/02/2005, 13:45
Avatar de Skalitiko  
Fecha de Ingreso: febrero-2005
Mensajes: 81
Antigüedad: 19 años, 2 meses
Puntos: 0
Puedes utilizar la referncia ADOX. Para agregar la referencia, debes ir al menu proyecto, referencias y ahi seleccionar Microsoft Ado Ext. 2.5 for Dll and security.

Aqui tienes un pequeño ejemplo.

Private Sub Command1_Click()
Dim Cat As New ADOX.Catalog
Dim Tbl As New Table
Dim TablaABuscar As String
Cat.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\paso\Base.mdb;Persist Security Info=False"
TablaABuscar = "Tabla1" 'Nombre de la tabla que quero verificar
For Each Tbl In Cat.Tables
If Tbl.Name = TablaABuscar Then
MsgBox "La tabla " & TablaABuscar & " Existe en la bd", vbInformation
End If
Next Tbl
End Sub
  #4 (permalink)  
Antiguo 05/10/2010, 16:52
 
Fecha de Ingreso: octubre-2010
Mensajes: 6
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Saber si existe una tabla dentro de una BD

Skalitiko mil gracias !!!!!
El codigo anda a la perfección y me permitió ahorrarme muchisimas lineas y consultas a funciones que habia elaborado para verificar
Sos un genio !!

Gracias de nuevo :)
  #5 (permalink)  
Antiguo 05/10/2010, 16:55
 
Fecha de Ingreso: octubre-2010
Mensajes: 6
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: Saber si existe una tabla dentro de una BD

Mirá lo que había hecho yo:

Cita:
Option Explicit

'************************************************* **************************
' Ejemplo para verificar si una tabla se encuentra en la base de datos _
Nota: Agregar la Referencia a -->> Microsoft Activex Data Objects
'************************************************* **************************

Private Function Tabla_Existe(ByVal Path_BD As String, _
ByVal La_Tabla As String) As Boolean


On Error GoTo Err_Sub

Const Cadena As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="

Dim datos() As String
Dim i As Integer
Dim cnn As Connection

'Nueva conexión Ado
Set cnn = New Connection

'Abre la base de datos
cnn.Open Cadena & Path_BD

'Declara y abre el recordset
Dim RS As Recordset
Set RS = cnn.OpenSchema(adSchemaTables)

datos = Split(RS.GetString, vbTab)


For i = 0 To UBound(datos)
'Compara el valor,( la tabla )
If Trim(UCase(datos(i))) = Trim(UCase(La_Tabla)) Then
Tabla_Existe = True ' La tabla existe
Exit For
End If
Next

'cierra el recordset y la base de datos
On Error Resume Next
RS.Close
Set RS = Nothing
cnn.Close
Set cnn = Nothing
Exit Function
'error
Err_Sub:
MsgBox Err.Description, vbCritical
On Error Resume Next
RS.Close
Set RS = Nothing
cnn.Close
Set cnn = Nothing
End Function

Private Sub Command1_Click()
Dim ret As Boolean
Dim Path As String

' Path de la base de datos Biblio.mdb de visual basic
Path = "C:\Archivos de programa\Microsoft Visual Studio\VB98\biblio.mdb"

'verifica si la tabla Authors existe
ret = Tabla_Existe(Path, "Authors")

If ret Then
MsgBox "La tabla existe", vbInformation 'Si
Else
MsgBox "La tabla NO existe", vbInformation 'No
End If


End Sub

Private Sub Form_Load()
Command1.Caption = " Verificar tabla "
End Sub
era una cagada enorme y horrrrrrrrible!!!!!

Gracias Skalitiko !!!!!
  #6 (permalink)  
Antiguo 06/10/2010, 06:20
Avatar de culd  
Fecha de Ingreso: noviembre-2003
Mensajes: 959
Antigüedad: 20 años, 5 meses
Puntos: 19
Respuesta: Saber si existe una tabla dentro de una BD

Desconozco como seria en access

Pero en MySQL pones usar "show tables;" y te muestra todas las tablas, y para conocer especificamente la estructura de una tabla "describe tabla;"
  #7 (permalink)  
Antiguo 20/01/2011, 10:13
Avatar de chalena32  
Fecha de Ingreso: enero-2011
Ubicación: a 15 minutos en moto de Madrid.
Mensajes: 1
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Saber si existe una tabla dentro de una BD

Si por ejemplo quieres ver si existe una tabla para borrarla de la misma BD en la que estas tirando el codigo, te sugiero estas 10 lineas.

Dim db As Database
Set db = CurrentDb
db.TableDefs.Refresh
For i = 0 To db.TableDefs.Count - 1
If db.TableDefs(i).Name = "NombreTablaParaBorrar" Then
'La tabla EXISTE
DoCmd.DeleteObject acTable, "NombreTablaParaBorrar"
Exit For
End If
Next i
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 16:20.