Wenn kein Netzwerk, dann Verküpfungspfad ändern

09/09/2007 - 22:26 von Andreas Kugel | Report spam
Hallo,
ich habe eine Datenbank die auf verknüpfte Tabellen einer Datenbank im
Netzwerk zugreift.
Die Verknüpfumg stelle ich mit folgendem VbA-Code her.

Option Compare Database
Option Explicit

Function Tabellen_verknüpfen() As Boolean
On Error GoTo Tabellen_verknüpfen_Error

Dim db As DAO.Database
Dim strdaten As String
Dim i As Integer

Set db = CurrentDb()
'Pfad wo die verknüpften Tabellen liegen
strdaten = "\\Nasrv003\Datentechnik\DeKonfigurator\Compounts.mdb"

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=" & strdaten
db.TableDefs(i).RefreshLink
End If
End If
Next i

Tabellen_verknüpfen_Exit:
Exit Function

Tabellen_verknüpfen_Error:
MsgBox "Bei der Installation ist eine Ausnahme aufgetreten. ", 16,
"Ausnahme"
Resume Tabellen_verknüpfen_Exit
End Function


Nun muß ich hàufiger mit dem Laptop im Unternehmen unterschiedliche
Arbeitsplàtze nutzen,
leider nicht immer mit einer funktionierenden Verbindung zum obigen Pfad
"strdaten".
Daher möchte ich nun auf dem Laptop eine Sicherungsdatei im Pfad
"C:\DeConfiguratot\Compounts.mdb" anlegen.
Beim Start der Datenbank soll geprüft werden, ob eine Verbindung zum obigen
Pfad hergestellt werden kann,
wenn nicht, dann soll mit der Sicherungsdatenbank auf einem Laufwerk des
Laptops verbunden werden.

Es ist bei diesen Meetings nicht immer wichtig, den aktuellen Stand zu
haben,
dahr kann ich auch auf àltere Daten zugreifen, da es zumeist um Stücklisten
geht.

Leider habe ich keine Ahnung, wie ich dies anstellen soll,
weil ich mit VBA nicht sehr bewandert bin, kann mir jemand dabei helfen.

Gruß und Danke
Andreas
 

Lesen sie die antworten

#1 Enrico
10/09/2007 - 07:50 | Warnen spam
Andreas Kugel schrieb:
Hallo,
ich habe eine Datenbank die auf verknüpfte Tabellen einer Datenbank im
Netzwerk zugreift.
Die Verknüpfumg stelle ich mit folgendem VbA-Code her.

Option Compare Database
Option Explicit

Function Tabellen_verknüpfen() As Boolean
On Error GoTo Tabellen_verknüpfen_Error

Dim db As DAO.Database
Dim strdaten As String
Dim i As Integer

Set db = CurrentDb()
'Pfad wo die verknüpften Tabellen liegen
strdaten = "\\Nasrv003\Datentechnik\DeKonfigurator\Compounts.mdb"

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=" & strdaten
db.TableDefs(i).RefreshLink
End If
End If
Next i

Tabellen_verknüpfen_Exit:
Exit Function

Tabellen_verknüpfen_Error:
MsgBox "Bei der Installation ist eine Ausnahme aufgetreten. ", 16,
"Ausnahme"
Resume Tabellen_verknüpfen_Exit
End Function


Nun muß ich hàufiger mit dem Laptop im Unternehmen unterschiedliche
Arbeitsplàtze nutzen,
leider nicht immer mit einer funktionierenden Verbindung zum obigen Pfad
"strdaten".
Daher möchte ich nun auf dem Laptop eine Sicherungsdatei im Pfad
"C:\DeConfiguratot\Compounts.mdb" anlegen.
Beim Start der Datenbank soll geprüft werden, ob eine Verbindung zum obigen
Pfad hergestellt werden kann,
wenn nicht, dann soll mit der Sicherungsdatenbank auf einem Laufwerk des
Laptops verbunden werden.



Hallo Andreas,

die einfachste Lösung (ohne großen Aufwand): Der Aufruf db.RefreshLink
erzeugt ein Fehler wenn eine Verbindung nicht hergestellt werden kann.
Also einfach das Err-Objekt abfragen und darauf reagieren.

...
err.clear 'Err zurücksetzen

db.TableDefs(i).Connect = ";database=" & strdaten
db.TableDefs(i).RefreshLink

If err<>0 then
'Fehler bei Verbindung herstellen
' Verbindung mit der lokalen Datenbank herstellen.
else
'Kein Fehler --> RefreshLink wurde erfolgreich ausgeführt
end if
.

Diese Variante dauert unter Umstànden recht lange.
Erstens versucht dieser Aufruf aufs Netzwerk zuzugreifen und hört erst
nach einem Timeout auf. Zweitens: In deinem Codeaufbau würde er das für
jede Tabelle feststellen.

Also nehme dir eine beliebige Tabelle und àndere 1 Mal den "Connect":
db.TableDef("Tabelle1").Connect = Netzwerkpfad

Tritt ein Fehler auf, àndere alle Tabellen.Connects auf die lokale DB
ansonsten auf die Netzwerk DB.

Gruß Enrico

Ähnliche fragen