Lyckas ej hitta något sätt att från VB få reda på om en viss tabell finns Använder du ADO eller DAO? Kalas! Men - måste jag använda objektet con, jag är ju redan i databasen (VB Acess)? Eftersom du utelämnade den informationen så antog jag att du använde ADO Genom VB i VB. Sorry Andreas! Jag använder en liknande funktion men jag kollar om det finns en fråga. Du kan snickra om den och kolla tabeller istället. Testade att ta bort deklarationen av db och tabledef då funkar det!! Men undrar ändå var som krävs för att kunna deklarera som Database resp. TabelDef?? Det är en bugg i Access 2000 (tror även senare versioner lider av det).Finns tabell??
i databasen. Någon som kan mer än mig??
Mvh
MiZSv: Finns tabell??
Har gjort en funktion åt dig för ADO:
<code>
Public Function FindTable(Connection As ADODB.Connection, TableName As String)
Dim rs As ADODB.Recordset
'TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE
Set rs = Connection.OpenSchema(adSchemaTables, Array(Empty, Empty, TableName, Empty))
If rs.EOF Then
FindTable = False
Else
FindTable = True
End If
rs.Close
End Function
</code>
Du anropar den så här:
<code>
Public Sub Test()
Dim con As ADODB.Connection
Set con = New ADODB.Connection
con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Persist Security Info=False;" & _
"Data Source=c:\test.mdb"
If FindTable(con, "User") Then
Debug.Print "User finns!"
Else
Debug.Print "User saknas!"
End If
If FindTable(con, "Users") Then
Debug.Print "Users finns!"
Else
Debug.Print "Users saknas!"
End If
con.Close
End Sub
</code>Sv: Finns tabell??
Sv: Finns tabell??
Inte DAO genom VB i Access. Då kan du istället skriva:
<code>
Public Function FindTable(TableName As String) As Boolean
Dim db As DAO.Database
Dim TableDef As DAO.TableDef
Set db = CurrentDb
For Each TableDef In db.TableDefs
If TableDef.Name = TableName Then
FindTable = True
Exit For
End If
Next
End Function
</code>
Eller den lite fulare varianten:
<code>
Public Function FindTable(TableName As String) As Boolean
Dim db As DAO.Database
Dim TableDef As DAO.TableDef
On Error Resume Next
Set db = CurrentDb
Set TableDef = db.TableDefs(TableName)
FindTable = Not TableDef Is Nothing
End Function
</code>Sv: Finns tabell??
Får nu felmeddelande "User defined type not defined" på dimensioneringen av db (Dim db As DAO.Database)??
Mvh
MiZSv: Finns tabell??
Function ExistQry(strQryName As String) As Boolean
Dim db As Database
Dim i As Integer
Set db = CurrentDb
db.QueryDefs.Refresh
ExistQry = False
For i = 0 To db.QueryDefs.Count - 1
If strQryName = db.QueryDefs(i).Name Then
'Frågan finns
ExistQry = True
Exit For
End If
Next i
Set db = Nothing
End FunctionSv: Finns tabell??
Tack för hjälpen!!
Mvh
MiZSv: Finns tabell??
Lägg till en referens till "Microsoft DAO X.XX Object Library". Versionsnummer (X.XX) är beroende av vilken Access du använder. Har för mig att det är Access 97 = 3.51, Access2000 = 3.6 osv...