PDA

Vollständige Version anzeigen : Datenbank Verknüpfung gibt einen Fehler?


andreas_a
08.01.2002, 10:27
Guten morgen hab da doch noch ein kleines Problemchen, und ich finde keine lösung!

fogender code

Private Sub Form_Open(Cancel As Integer)
Dim db As Database
Dim Daten As String
Dim i As Integer

On Error GoTo FehlerMeldung

Set db = CurrentDb()

Daten = Left(db.Name, Len(db.Name) - Len(Dir(db.Name))) & "\user\user.mdb"

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

Exit Sub

FehlerMeldung:
MsgBox "Bei der Installation ist ein Fehler aufgetreten. ", 16, "FEHLER !"
Exit Sub

End Sub

Es sollte eigentlich klappen, das macht es auch aber irgendwie bekomm ich nach dem aufruf dieses teils die MsgBox der fehlermeldung und ich habe keine ahnung warum eigentlich?

Wenn ich die Fehler meldung rausnheme gibt er mir dann ein Debug fehler in der Zeile db.TableDefs(i).RefreshLink an, warum?

Ich hatte das script auf einer access XP db draufgehabt und dort lief es ohne probleme und ich denke das es auch mit a2000 laufen sollte.

TXH für Antworten

Kurt aus Kienitz
08.01.2002, 10:43
Hallo,

Ich habe in einer meiner (A97) Datenbanken folgenden Code gefunden:

On Error Resume Next
For I = 0 To GloDb.TableDefs.Count - 1
Set Mytable = GloDb.TableDefs(I)
If Mytable.Connect <> "" And GloDb.TableDefs(I).Name <> "Sprachumsetzungstabelle" Then
FileName = GloDatenDatenbank
Mytable.Connect = ";DATABASE=" & FileName
Err = 0
Mytable.RefreshLink
If Err = NONEXISTENT_TABLE Then
FileName = GloQDMDatenDatenbank
Mytable.Connect = ";DATABASE=" & FileName
Err = 0
Mytable.RefreshLink
End If
Wenn es beim RefreshLink den Fehler 3011 (NONEXISTENT_TABLE) gibt, dann wird einfach der komplette RefreshLink nochmal gemacht und dann geht's.

Habe zwar keine Ahnung warum, aber es tut.

Anne Berg
08.01.2002, 11:15
Zunächst einmal solltest Du feststellen, welcher Fehler überhaupt auftritt. Dann hat man ja schon mal einen Anhaltspunkt, nicht wahr? :)

Dann scheint es mir, dass der Pfad einen Doppel-Backslash enthält, durch die Verkettung mit '\user...'. Ist das beabsichtigt??

andreas_a
08.01.2002, 14:22
Hallo,
ich konnte das Problem lösen, thx für die meldung ich sollte mal die fehlermeldung genau betrachten.

Vorher wurde die debug meldung nicht angezeigt das sie unterdrückt war, nach dem ich den Fehlercode rausgenommen hatte und access den fehler brachte kamm mir ein licht auf, das teil suchte eine tabelle die nicht mehr vorhanden im datenmodell aber im verweis denoch drin war.

Dazu hab ich jetzt denoch eine Frage:

Ja es muss so sein das die daten im verzeichniss \user drin sind, somit ist alles ein bisschen getrennt :-)

Jetzt zur Frage, wie ist das, wenn ich mit dem Code die Tabellen verknüpfe werden die tabellen danach verknüpft bleiben oder muss ich bei jedem aufruf durch access wieder neu einesen?
Ich habe daher ein Splashscreen und dort ist der code drin der Bneutzer kann aber sagen das er den Bildschirm nicht mehr haben möchte aber es wird minimum einmal angezeigt, reicht das oder muss ich den code erst nach dem Splash einschalten?

Grüsschen und THX schon mal

PS: wer nicht lesen kann, der soll halt warten *Bg* damit bin ich gemeint :-)

Anne Berg
09.01.2002, 09:20
Hallo Andreas,

was bitte ist ein 'SplashScreen'??

Zu Deiner Frage: wenn Du eine Verknüpfung zu lokalen Access-Tabellen herstellst, so bleibt die erhalten, solange der Zugriffspfad zur Datenbank sich nicht ändert. Um die Einbindung variabel zu halten, solltest Du die Möglichkeit der Wiedereinbindung auf jeden Fall 'auf Abruf' bereitstellen.