A00 : Links zu externen Tabellen (BE)

From: Thomas Mohr (dethalheim2001_at_compuserve.de)
Date: 01/12/05


Date: Wed, 12 Jan 2005 19:42:59 +0100

Hallo NG,

noch einmal ein Problem zum Linkrefresh per VBA.

Folgende Situation:

3 DB

DB1 = StartDB
DB2 = von der DB1 gestartete FE DB
DB3 = BE DB von DB2

DB2 ist mit Passwort geschützt.
1.
Nach dem Starten der DB2 (und Eingabe des Passw) können die Links zu den
Tab's in der DB3 mit dem LinkManager aktualisiert werden.
2.
Aktualisierung der Links zur DB3 mit VBA von der DB2 aus ist ebenfalls
möglich.
'----------------------
Daten = strDB_BE_PathName & "\" & strDB_BE_FileName
For I = 0 To db.TableDefs.Count - 1
        If db.TableDefs(I).Connect <> "" Then
            If Mid(db.TableDefs(I).Connect, 11) <> Daten Then
                db.TableDefs(I).Connect = ";database=" & Daten & ";pwd=123"
                db.TableDefs(I).RefreshLink
            End If
        End If
Next I
'----------------------
3.
Jetzt wird DB3 mit einem Passwort geschützt und die Links von DB2 zur DB3
sollen mit folgendem Code, allerdings von der DB1 aus (!), gesetzt werden
(Code befindet sich in der DB1 !!)

Public Function tablink_refresh(SET_DB_FE_FileName As String)
Dim ws As DAO.Workspace
Dim db As DAO.Database
Dim strDaten As String
Dim strDB_BE_PathName As String
Dim strDB_BE_FileName As String
Dim strDB_FE_PathName As String
Dim strDB_FE_FileName As String

Dim test1 As Variant
Dim dbtolink As String

On Error GoTo fehlermeldung

dbtolink = SET_DB_FE_FileName

strDB_BE_PathName = DLookup("[DB_BE_PathName]", "tbl_database_settings",
("DB_FE_FileName=" & "'" & dbtolink & "'"))
strDB_BE_FileName = DLookup("[DB_BE_FileName]", "tbl_database_settings",
("DB_FE_FileName=" & "'" & dbtolink & "'"))
strDB_FE_PathName = DLookup("[DB_FE_PathName]", "tbl_database_settings",
("DB_FE_FileName=" & "'" & dbtolink & "'"))

dbtolink = strDB_FE_PathName & "\" & dbtolink
Set ws = CreateWorkspace("DBOUTSIDE", "Admin", "")
Set db = DBEngine.Workspaces("DBOUTSIDE").OpenDatabase(dbtolink, False,
False, ";PWD=123")

strDaten = strDB_BE_PathName & "\" & strDB_BE_FileName

For I = 0 To db.TableDefs.Count - 1
        If db.TableDefs(I).Connect <> "" Then
            If Mid(db.TableDefs(I).Connect, 11) <> strDaten Then
                db.TableDefs(I).Connect = ";database=" & Daten & ";pwd=123"
                db.TableDefs(I).RefreshLink
            End If
        End If
Next I

Exit Function
fehlermeldung:
    dim i_nummer
    i_nummer = err.Number
    If i_nummer = 3024 Then
      MsgBox "Bei der Installation ist ein Fehler aufgetreten. ", 16,
"FEHLER !"
    End If
Exit Function
End Function

Ergebnis:

Die Links in der DB2 zur DB3 werden aktualisiert. Die Verlinkten Tabs in der
DB2 lassen sich öffnen und beinhalten auch die Daten bzw. zeigen die DS an.
Wenn ich eine Form starte welches auf diese gelinkten tabs zugreift, stürzt
Access ohne Fehlermeldung ab. Daraufhin habe ich mit Linkmanager mir die
verlinkten Tabs angesehen. Dabei stellte ich fest, dass vor dem Pfad zu der
DB3 ein Fragezeichen angezeigt wird.

Also : Checkbox / Pfeil / Fragezeichen / Tabellenname mit Pfad

Der Sinn des Ganzen ist folgender :

DB1 und mehrere DB2's befinden sich auf jeder WS und die entsprechenden
DB3's im Net. (also die DB2's sind verschiedene).
Mit der DB1 werden alle DB2's gestartet und gleichzeitig Updates der DB2 /
DB3 verwaltet, nachgeladen und eben auch die Links untereinander hergestellt
sowie Datensicherung vorgenommen.
Um nicht auf jeder WS die DB3's neu einbinden zu müssen, wollte ich das
alles von der DB1 aus erledigen.

Kann mir eventuell jemand helfen wo hier das Problem ist.

mfg
Tom



Relevant Pages

  • waiting for user response
    ... Set adoRecordset = New ADODB.Recordset ... Dim db1 As ADODB.Connection ... Dim db2 As ADODB.Connection ...
    (microsoft.public.excel.programming)
  • Requery auf Formulardaten
    ... Formular besteht aus: ... >Db2 verknüpft Db1 ... > Dim db As Database ...
    (microsoft.public.de.access)
  • Re: Transactional replication: Deadlock issue
    ... subscirber, allow subscriber changes)-->DB3 ... System2 with DB3's as database). ... intermediate db server DB2 and set up merge replication between DB2 ... affected then won't there be non-convergence with DB3? ...
    (microsoft.public.sqlserver.replication)
  • How to Hide Visual Basic Editor (VBE) Window Programmatically
    ... I create in a module from db1 a new database db2 by the instruction: ... objAccess.DoCmd.Save acModule, objAccess.Modules.name ... I would like to know if it's possible to hide this VBE Window. ... Dim objAccess As New Access.Application ...
    (microsoft.public.access.formscoding)
  • Re: comparing Queries / Fields in 2 databases
    ... Note Queries that only exist in db2 are not resolved, ok if db2 is a version ... Dim WS As DAO.Workspace ... > Sub CompareDB() ...
    (microsoft.public.access.formscoding)