Jump to content
Sign in to follow this  
Herbert Leitner

AccessDB aufteilen in Frontend und Backend

Recommended Posts

Hallo!

 

Ich arbeite an einer meiner Datenbanken gerade sehr intensiv rum an den Formularen und Berichten.

 

Um bei einem Versehen nicht auch die Daten/Tabellen zu zerstören habe ich die Datenbank aufgeteilt in eine Backend (mit den Tabellen) und dem Frontend mit den Abfragen/Formularen/Berichten.

 

Im Frontend habe ich die Tabellen vom Backend eingebunden.

Das geht super, damit kann ich am Frontend rumspielen, meine Foromulare, Berichte und Programme testen und mit "echten" Daten arbeiten.

 

Wenn das funktioinert, hole ich mir die Sicherung des Backends zurück und arbeite damit weiter.

 

 

Wie gesagt, das funktioniert super. Frontend und Backend liegen im gleichen Verzeichnis.

Nur habe ich das Problem, das ich die Datenbank auf den Server legen muss. Leider speichert sich der Frontend beim Einbinden der Tabellen den absoluten Pfad in die Datenbank und greift dann partout auf die lokale Platte zu.

 

Nun meine Frage: Wo kann ich im Frontend einstellen, daß die Datenbank mit den Tabellen (Backend) im gleichen Verzeichnis liegt.

Dann würde das immer funktionieren, gleich wo ich das "hinlege"!

 

Gruß und Dank!

Herbert

Share this post


Link to post

So in der Art sollte es funktionieren.

Die Prozedur "Relinktables" beim Start ausführen lassen.

Die Konstante "conBackendMDB muss noch angepasst werden.

 

Private Function RefreshLinks(strFileName As String) As Boolean
' Verknüpfungen mit der angegebenen Datenbank aktualisieren. Bei Erfolg True zurückgeben.

   Dim dbs As Database
   Dim tdf As TableDef

   ' Alle Tabellen in der Datenbank durchlaufen.
   Set dbs = CurrentDb
   For Each tdf In dbs.TableDefs
       ' Wenn die Tabelle eine Connect-Zeichenfolge enthält, ist sie verknüpft.
       If Len(tdf.Connect) > 0 Then
           tdf.Connect = ";DATABASE=" & strFileName
           Err = 0
           On Error Resume Next
           tdf.RefreshLink         ' Tabelle neu verknüpfen.
           If Err <> 0 Then
               RefreshLinks = False
               Exit Function
           End If
       End If
   Next tdf

   RefreshLinks = True        ' Neuverknüpfen abgeschlossen.

End Function

Public Function RelinkTables() As Boolean
' Versucht, die Verknüpfungen mit der Backend-Datenbank zu aktualisieren.
' Gibt bei Erfolg True zurück.
   Dim ComDlgOpenPath As Object
   Dim strAccDir As String
   Dim strSearchPath As String
   Dim strFileName As String
   Dim intError As Integer
   Dim strError As String

   Const conBackendMDB = "Backend.mdb"
   Const conMaxTables = 8
   Const conNonExistentTable = 3011
   Const conNotAdr = 3078
   Const conAdrNotFound = 3024
   Const conAccessDenied = 3051
   Const conReadOnlyDatabase = 3027

   strFileName = Currentproject.Path & "\" & conBackendMDB

   ' Verknüpfungen reparieren.
   If RefreshLinks(strFileName) Then
       RelinkTables = True
       Exit Function
   End If

   ' Bei Mißerfolg Fehler melden.
   Select Case Err
   Case conNonExistentTable, conNotAdr
       strError = "Datei '" & strFileName & "' enthält die erforderlichen Tabellen nicht."
   Case Err = conAdrNotFound
       strError = "Sie können " & conAppTitle & " erst ausführen, nachdem Sie die Datenbank Adr_Data gefunden haben."
   Case Err = conAccessDenied
       strError = "Die Datei " & strFileName & " konnte nicht geöffnet werden, da sie schreibgeschützt ist oder sich in einem schreibgeschützten freigegebenen Verzeichnis befindet."
   Case Err = conReadOnlyDatabase
       strError = "Tabellen können nicht neu verknüpft werden, da " & conAppTitle & " schreibgeschützt ist oder sich in einem schreibgeschützten freigegebenen Verzeichnis befindet."
   Case Else
       strError = Err.Description
   End Select

Exit_Failed:
   MsgBox strError, vbCritical
   RelinkTables = False

End Function

Share this post


Link to post

Hallo!

 

Ich bewundere Leute die sowas (so schnell) hinkriegen!

 

Wenn ich da anfange zu programmieren dann schaffe ich meist 0,74 Zeilen pro Tag. ;-)

 

Ich werde das Programm gleich ausprobieren.

 

Danke!

Herbert

Share this post


Link to post

Na ja... das hab ich mir vor langer Zeit mal zusammengesucht aus div. MS-Scripting-Quellen und jetzt nur noch ein bissle zusammengekürzt. Daher kanns sein, dass der ein oder andere kl. Fehler noch drin ist. Ggf. einfach melden.

Share this post


Link to post

Einfachste Variante: die Verknüpfungen zu den Tabellen löschen und neu verknüpfen. Dabei den Haken setzten der so ähnlich heisst wie " ... immer nach dem Speicherort fragen" oder einfach kurz die Backend umbenennen, dann fragt Access selber.

Share this post


Link to post
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte überlege Dir, ob es nicht sinnvoller ist ein neues Thema zu erstellen.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

Werbepartner:



×
×
  • Create New...