lo que necesito saber si la tabla existe en la base de
datos.
gracias!
En el caso de que la tabla no este vacía, podías contar los registros que
tiene, y si tienes valores mayores que cero es que existe
--
SALUDOS.
julian-valencia-españa
http://www.access-sin-codigo.tk
http://www.mvp-access.com
"Leandro" <anon...@discussions.microsoft.com> escribió en el mensaje
news:99d001c478ca$8f980c90$a601...@phx.gbl...
'***************************************************************************
****
'* ExisteTabla
'* comprueba si existe la tabla pasada como parámetro, devolviendo Verdadero
/ Falso
'* si así se solicita elimina la tabla
'* Argumentos: strTabla => nombre de la tabla
'* bolBorrar => Opcional borrar la tabla (Si/No)
'* uso: ExisteTabla(strTabla, True) elimina la tabla en el caso de que
exista
'* ExisteTabla(strTabla) devuelve Verdadero
'* ESH 09/12/03 11:11 cambio el planteamiento, usando TableDef, en lugar de
'* buscar en la tabla MSysObjects
'* ESH 08/04/00 18:55
'***************************************************************************
****
Public Function ExisteTabla(strTabla As String, Optional bolBorrar As
Boolean = 0) As Boolean
Dim tdf As TableDef
' hago un bucle en la colección TableDefs para buscar la tabla
On Error GoTo ExisteTabla_TratamientoErrores
For Each tdf In CurrentDb.TableDefs
If tdf.name = strTabla Then
' si existe devuelvo "Verdadero"
ExisteTabla = True
' si se ha solicitado la eliminación, la borro
If bolBorrar Then CurrentDb.TableDefs.Delete tdf.name
' salgo
Exit Function
End If
Next tdf
ExisteTabla_Salir:
On Error GoTo 0
Exit Function
ExisteTabla_TratamientoErrores:
MsgBox "Error " & Err.Number & " en proc.: ExisteTabla de Módulo:
Módulo1 (" & Err.Description & ")"
GoTo ExisteTabla_Salir
End Function ' ExisteTabla
--
Saludos a tod@s desde Huelva
Emilio
miliuco56 ALGARROBA hotmail.com
Reglas de conducta de los grupos de noticias:
http://support.microsoft.com/default.aspx?scid=fh;ES-ES;newsreglas
"Leandro" <anon...@discussions.microsoft.com> escribió en el mensaje
news:99d001c478ca$8f980c90$a601...@phx.gbl...
gracias de todas maneras
>-----Mensaje original-----
>.
>
gracias!
>-----Mensaje original-----
>.
>
Public Function ExistTable(sTableName As String) As Boolean
On Error GoTo ErrHandlerNoExiste
Dim stmp As String
stmp = CurrentDb.TableDefs(sTableName).Name
ExistTable = True
ErrHandlerNoExiste:
End Function
Nos vemos,
--
Lluís Franco i Montanyés
[MS-MVP-MCP Visual Basic]
FIMARGE, S.A.
Principat d'Andorra
lfranco@ODIO_EL_SPAMfimarge.ad
Tel.: +376 805 100
Fax: +376 824 500
--
(Guía de netiquette del foro)
http://www.mvp-access.com/rubenvigon/foro/
Function ExisteTablaADO(ByVal NombreTabla As String) As Boolean
Dim Catalogo As New ADOX.Catalog
Dim ObjetoTabla As ADOX.Table
Catalogo.ActiveConnection = CurrentProject.Connection
For Each ObjetoTabla In Catalogo.Tables
If ObjetoTabla.Name = NombreTabla Then
ExisteTablaADO = True
Exit For
End If
Next
Set Catalogo = Nothing
End Function
y...todo un placer leerte por estos lares de Access... :-)
--
Saludos desde Valladolid
Francisco Javier García Aguado
buho...@mvp-access.com
---
http://www.mvp-access.com/buho
http://www.mvp-access.com/foro
http://groups.msn.com/Access2000VisualBasic/
Mi Perfil de MVP en Microsoft:
http://tinyurl.com/6ysvu
---
---
Este correo ha sido testeado y no tiene virus (Al menos conocidos). Saludos
de Francisco Javier García Aguado (Buho)
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.733 / Virus Database: 487 - Release Date: 02/08/2004
Public Function ExistTable(sTableName As String) As Boolean
On Error GoTo ErrHandlerNoExiste
Dim oRs As New ADODB.Recordset
oRs.Open "SELECT * FROM [" & sTableName & _
"] WHERE 1=0", CurrentProject.Connection
If oRs.State = adStateOpen Then
ExistTable = True
oRs.Close
End If
ErrHandlerNoExiste:
End Function
> y...todo un placer leerte por estos lares de Access... :-)
El placer es mío Búhito...
Saludos andorranos!
:-D
Function ExisteTabla(NombreTabla As String) As Boolean
If Len(Nz(DLookup("Name", "msysobjects", _
"type=1 and Name= '" & NombreTabla & "'"), "")) <> 0 Then
ExisteTabla = True
End If
End Function
--
Victor Delgadillo [MVP Access]
Miami, Florida
Consultas al grupo, asi todos nos beneficiamos.
Vea los MVP: http://www.microsoft.com/communities/mvp/mvp.mspx
"Leandro" <anon...@discussions.microsoft.com> wrote in message
news:9cb201c478d0$2c6936c0$a501...@phx.gbl...
Me descubro Búho, plas, plas!!!
Sólo me queda adaptarla también a SQL Server (pocas ganas de currar tengo
hoy :-D)
Y todavía se puede mejorar... por ejemplo, buscando en otra BD de Access,
no?
Saludos!
Option Compare Database
Option Explicit
Public Enum EnumDBType
MSAccess = 0
MSSQL = 1
End Enum
Public Type EventArgs
TipoBD As EnumDBType
ServerName As String
DataDaseName As String
User As String
PWD As String
End Type
Public Function ExistsTable(sTableName As String, e As EventArgs) As Boolean
Dim oCon As ADODB.Connection, oRs As ADODB.Recordset, sTmp As String
If e.TipoBD = MSAccess Then
If Len(Nz(DLookup("Name", "msysobjects", _
"type=1 and Name= '" & sTableName & "'"), "")) <> 0 Then
ExistsTable = True
End If
ElseIf e.TipoBD = MSSQL Then
Set oCon = New ADODB.Connection
sTmp = "Provider=SQLOLEDB.1;" & _
"Password=" & e.PWD & _
";Persist Security Info=True" & _
";User ID=" & e.User & _
";Initial Catalog=" & e.DataDaseName & _
";Data Source=" & e.ServerName
oCon.Open sTmp
sTmp = "SELECT name FROM sysobjects " & _
"WHERE (xtype = 'U') AND (uid = 1) AND (name = N'" & sTableName &
"')"
Set oRs = New ADODB.Recordset
oRs.Open sTmp, oCon
If oRs.State = adStateOpen Then
If Not oRs.EOF Then ExistsTable = True
End If
oRs.Close
Set oRs = Nothing
oCon.Close
Set oCon = Nothing
End If
End Function
Public Sub Test()
Dim ea As EventArgs
'Test access
ea.TipoBD = MSAccess
MsgBox ExistsTable("Clientes", ea), vbInformation
'Test SQL
ea.TipoBD = MSSQL
ea.ServerName = "LFRANCO"
ea.DataDaseName = "Northwind"
ea.User = "sa"
ea.PWD = ""
MsgBox ExistsTable("Customers", ea), vbInformation
End Sub
Excelente! muchas gracias
Leandro
>-----Mensaje original-----
>.
>