'***************************************************************
'The DoesTblExist function validates the existence of a TableDef
'object in the current database. The result determines if an
'object should be appended or its Connect property refreshed.
'***************************************************************
Function DoesTblExist(strTblName As String) As Boolean
On Error Resume Next
Dim db As Database, tbl As TableDef
Set db = CurrentDb
Set tbl = db.TableDefs(strTblName)
If Err.Number = 3265 Then ' Item not found.
DoesTblExist = False
Exit Function
End If
DoesTblExist = True
End Function
Function CreateODBCLinkedTables(frm As Form) As Boolean
On Error GoTo CreateODBCLinkedTables_Err
Dim strTblName As String
Dim strConn As String
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim tbl As DAO.TableDef
CreateODBCLinkedTables = False
Set db = CurrentDb
Set rs = db.OpenRecordset("tblODBCDataSources")
With rs
While Not .EOF
DBEngine.RegisterDatabase frm.txtDSN, _
"SQL Server", _
True, _
"Description=" & frm.txtODBCDatabaseName & _
Chr(13) & "Server=" & frm.txtServer & _
Chr(13) & "Database=" & frm.txtODBCDatabaseName
' ---------------------------------------------
' Link table
' ---------------------------------------------
strTblName = rs("LocalTableName")
strConn = "ODBC;"
strConn = strConn & "DSN=" & frm.txtDSN & ";"
strConn = strConn & "Trusted_Connection=Yes;"
strConn = strConn & "APP=Microsoft Access;"
strConn = strConn & "DATABASE=" & frm.txtODBCDatabaseName
If (DoesTblExist(strTblName) = False) Then
Set tbl = db.CreateTableDef(strTblName, _
dbAttachSavePWD, rs("ODBCTableName"), _
strConn)
db.TableDefs.Append tbl
Else
Set tbl = db.TableDefs(strTblName)
tbl.Connect = strConn
tbl.RefreshLink
End If
rs.MoveNext
Wend
End With
CreateODBCLinkedTables = True
MsgBox "Refreshed ODBC Data Sources", vbInformation
If IsLoaded("frmCheckLink") Then
Forms!frmCheckLink!txtLinkComplete = "True"
End If
rs.Close
CreateODBCLinkedTables_End:
Exit Function
CreateODBCLinkedTables_Err:
Select Case Err.Number
Case 3146, 3059
Resume CreateODBCLinkedTables_End
Case Else
MsgBox Err.Number & "--" & Err.Description, vbCritical, "DEA Application"
Resume CreateODBCLinkedTables_End
Resume
End Select
End Function