Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Verknüpfte Tabellen in Front-/Backend prüfen/aktualisieren
zurück: SQL-Abfrage mit Parameterübergabe ausführen weiter: Excel-Funktion MAX, MIN, ... Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Tutorial Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen

Bringt die Datenbankaufteilung entscheidende Vorteile?
im Netzwerk: ja
61%
 61%  [ 57 ]
im Netzwerk: nein
0%
 0%  [ 0 ]
als lokale Anwendung: ja
2%
 2%  [ 2 ]
als lokale Anwendung: nein
1%
 1%  [ 1 ]
nie
0%
 0%  [ 0 ]
immer
34%
 34%  [ 32 ]
Stimmen insgesamt : 92

Autor Nachricht
Robsl
Unmögliches wollen, um Mögliches zu erreichen


Verfasst am:
24. Feb 2004, 12:55
Rufname:
Wohnort: München

Verknüpfte Tabellen in Front-/Backend prüfen/aktualisieren - Verknüpfte Tabellen in Front-/Backend prüfen/aktualisieren

Nach oben
       

Hallo Gemeinde,

weil ich mir dabei so schwer getan habe, hier der Code für die Prüfung. Vielleicht habt ihr es dann ein bisschen leichter:
Code:
Public Function Frontend_Aktualisieren()
    Dim i           As Integer
    Dim i1          As Integer
    Dim dbc         As DAO.Database
    Dim dbf         As DAO.Database
    Dim tdfc        As DAO.TableDef
    Dim tdff        As DAO.TableDef
    Dim appTDF      As New TableDef
    Dim strConnect  As String

    Set dbc = CurrentDb
    Set dbf = OpenDatabase("D:\Daten\DB Statistiken Frontend - " & _
                           "Backend\Statistiken\Test\Statistiken_be.mdb")
'1. Check, ob alle verknüpften Datentabellen in der externen DB noch vorhanden
    On Error GoTo TabLinkDelete
    For i = 0 To dbc.TableDefs.Count - 1
        Set tdfc = dbc.TableDefs(i)
        If Left$(tdfc.Connect, 9) = ";DATABASE" And _
           Left(tdfc.Name, 3) = "imp" Then
            Set tdff = dbf.TableDefs(tdfc.Name)
        End If
    Next i
'2. Check, ob alle Verknüpft-Datentabellen der externen DB verknüpft sind
    On Error GoTo NewTabLink
    For i1 = 0 To dbf.TableDefs.Count - 1
        Set tdff = dbf.TableDefs(i1)
        If Left(tdff.Name, 3) = "imp" Then
            Set tdfc = dbc.TableDefs(tdff.Name)
        End If
    Next i1
    dbf.Close
    Exit Function
   
TabLinkDelete:
' Löschen, wenn verknüpfte Tabelle nicht mehr vorhanden
    DoCmd.DeleteObject acTable, tdfc.Name
    Resume Next
   
NewTabLink:
' Neue Verknüpfung
    Set appTDF = dbc.CreateTableDef(tdff.Name)
    appTDF.Connect = ";DATABASE=" & dbf.Name
    appTDF.SourceTableName = tdff.Name
    dbc.TableDefs.Append appTDF
    Resume Next
End Function
strPROGRVERZ ist eine public-Variable (String) in der ich das Datenbankverzeichnis beim Datenbankstart initialisiere. ACCESS hat mir da im Netzwerk durch Umstellen des "currentproject.path" schon manchen Streich gespielt.

Das war's. Nochmal vielen Dank an Willi Wipp

PS: Mich interessiert eure Meinung zu Datenbankaufteilungen (s. Umfrage "Bringt die DB-Aufteilung entscheidende Vorteile?")

Nachfragen zum Thema bitte hier Verknüpfte Tabellen in Front-/Backend prüfen {Nachgefragt} stellen.

_________________
Grüße, Robsl (Office 2003)
Einen guten Programmierer erkennt man am Datendrang
Willi Wipp
Moderator


Verfasst am:
06. März 2004, 13:06
Rufname:
Wohnort: Raum Wiesbaden


Re: Verknüpfte Tabs in Front-/Backend prüfen/aktualisieren - Re: Verknüpfte Tabs in Front-/Backend prüfen/aktualisieren

Nach oben
       

Hi Robsl, und wieder ein netter Beitrag.

{Dieser Beitrag nimmt das Thema aus den unbeantworteten Themen heraus}
Gunjar
Gast


Verfasst am:
08. Okt 2004, 15:17
Rufname:

Datenbankaufteilung - Datenbankaufteilung

Nach oben
       

Lass mal die Finger von der Datenbankaufteilung.
Wenn du im Nachhinein neue Beziehungen setzen willst oder alte ändern,
dann wirst du sehen, was passiert.
Die Datenbankaufteilung lohnt sich erst, wenn die Datenbank wirklich fertig ist.
Robsl
Unmögliches wollen, um Mögliches zu erreichen


Verfasst am:
11. Okt 2004, 10:18
Rufname:
Wohnort: München

Datenbankaufteilung - Datenbankaufteilung

Nach oben
       

Hallo Gunjar,

was die Programmseite einer Datenbank betrifft, sollte sie wohl vor der Aufteilung fertig sein, sonst kann ich sie gar nicht rausgeben, aufgeteilt oder nicht. Die Daten jedoch werden sich ständig ändern und wenn mehr als 1 Stand gepflegt werden soll, braucht's logischerweise auch andere Namen, die neu hinzugefügt werden und alte, die dann eben gelöscht werden.

Hat man jetzt eine aufgeteilte Lösung, dann sind das in der Regel verknüpfte Tabellen, deren Verknüpfung gelöst oder neu hergestellt werden muss. Dies geschieht mit dem obigen Programmvorschlag.

Also stimm ich mit dir generell überein, aber "nach Fertigstellung" ist einfach zu allgemein und nicht ganz genau festzulegen. Deshalb diese kleine Ergänzung.

_________________
Grüße, Robsl (Office 2003)
Einen guten Programmierer erkennt man am Datendrang
@c1d
Im Profil kannst Du frei den Rang ändern


Verfasst am:
10. Mai 2005, 11:54
Rufname:
Wohnort: Essen


Halte die DB aufteilung für sinnvoll - Halte die DB aufteilung für sinnvoll

Nach oben
       

Erstens hat man den großen Vorteil das mann bei Änderungen am Backend den Benutzern die Möglichkeit bietet weiterzuarbeiten.

Zweitens kann sich jeder Mitarbeiter eine lokale Kopie vom Backend machen was die Netzwerklast erheblich reduziert.

Zu dem Punkt mit den Beziehungen bzw. Änderungen an den Tabellen kann ich aus meiner Erfahrung sagen gehopst wie gesprungen.

Änderst Du Beziehungen in einer Nichtaufgeteilten DB kommt es in Berichten Formularen etc. zu den gleichen Fehlern wie in einer aufgeteilten DB.

Ist ja auch nur logisch, da wenn ein Bericht von einer Beziehung ausgeht die nicht mehr vorhanden oder geändert ist.

Ansonsten sollte mann auch stets eine Sicherungskopie der Ursprungsdatenbank haben. Exestiert diese nicht. Besteht immer noch die Möglichkeit die Verknüpften Tabellen aus der Datenbank zu löschen.
Danach legt man die einfach neu an und holt sich die Daten mit STRG+C / STRG+V einfach in die Neu angelegten Tabellen und Fertig.
Willi Wipp
Moderator


Verfasst am:
25. Mai 2005, 12:22
Rufname:
Wohnort: Raum Wiesbaden

Re: Verknüpfte Tabs in Front-/Backend prüfen/akt. (II) - Re: Verknüpfte Tabs in Front-/Backend prüfen/akt. (II)

Nach oben
       

Hi Leute,

da das Problem doch von Zeit zu Zeit wieder auftaucht,
hier nochmal die Loesung die nur die gesetzten Verknuepfungen aktualisiert.
Code:
Option Compare Database
Option Explicit

Public Sub Set_Connection(Optional vDBPath As Variant)
On Error GoTo FehlerMeldung
    Dim i       As Integer
    Dim s       As String
    Dim db      As DAO.Database
    Dim sDBPath As String
   
    If IsMissing(vDBPath) Then
        sDBPath$ = FnsSeparatedPath$(CurrentDb.Name)
      Else
        sDBPath$ = CStr(Nz(vDBPath, ""))
    End If
    Set db = CurrentDb()
    For i% = 0 To db.TableDefs.Count - 1
        If db.TableDefs(i%).Connect <> "" Then
            s$ = FnsSeparatedPath$(Mid$(db.TableDefs(i%).Connect, 11))
            If s$ <> sDBPath$ Then
'                Debug.Print "Ist:  " & s$                'Nur zum Testen nötig
'                Debug.Print "Soll: " & sDBPath$          'Nur zum Testen nötig
                db.TableDefs(i%).Connect = ";database=" & sDBPath$ & _
                  FnsSeparatedPath$(Mid$(db.TableDefs(i%).Connect, 11), False)
                db.TableDefs(i%).RefreshLink
            End If
        End If
    Next i%
    db.Close
    Set db = Nothing
    Exit Sub
FehlerMeldung:
    s$ = "Bei der Installation ist ein Fehler aufgetreten!"
    MsgBox s$, vbCritical, "Achtung {Installation (DB)}"
    Exit Sub
End Sub

Public Function FnsSeparatedPath(sFilename As String, _
                                 Optional bPath As Boolean = True) As String
    Dim l   As Long
    Dim s   As String
   
    s$ = sFilename$
    l& = 1
    While InStr(l& + 1, s$, "\")
        l& = InStr(l& + 1, s$, "\")
    Wend
    If bPath Then
        FnsSeparatedPath$ = Left$(s$, l&)
      Else
        FnsSeparatedPath$ = Mid$(s$, l& + 1)
    End If
End Function
Die Prozedur Set_Connection ruft man beim Oeffnen der FrontEnd-DB auf.
Code:
' BackEnd-DB im gleichen Verzeichnis wie die FrontEnd-DB
    Set_Connection

' BackEnd-DB in anderem Verzeichnis wie die FrontEnd-DB
    Set_Connection CurrentProject.Path & "\BackEnds\"

Hinweis:
Die Prozedur Set_Connection ist allerdings nur fuer Standard Access-Verknuepfungen geschrieben!
=> .Connect fangt mit ";database=" an

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)


Zuletzt bearbeitet von Willi Wipp am 03. März 2008, 14:19, insgesamt einmal bearbeitet
Heinzw
Gast


Verfasst am:
30. Mai 2005, 11:35
Rufname:

Datenbankaufteilung - Datenbankaufteilung

Nach oben
       

Hallo, das Problem wird dann außer Frage gestellt, wenn man für andere porgrammiert und das Programm weiter entwickelt, bzw. auch nur pflegt. Ohne Trennung der Backend mit den Datenbeständen, gäbe es jedes mal einen großen Aufwand die vorhandenen Daten vor dem Überspielen einer neuen Programmversion zu retten und wieder zu installieren.
Änderungen, die auch die Datenstrukturen betreffen sind gleich aufwendig für aufgeteilte Datenbanken bzw. nicht aufgeteilte.
So die richtige Lösung habe ich nur noch nicht für ein eigenständiges Setup mit Abfrage des Pfades für die Backend-DB und automatischer Verknüpfung der Tabellen aus der Backend an die Frontend entsprechend dem eingegebenem Pfad. Aber dazu vieleicht mal eine eigenständige Frage.
Viel Spaß und Freude beim programmieren.
Heinz Welters
Willi Wipp
Moderator


Verfasst am:
17. Mai 2006, 17:03
Rufname:
Wohnort: Raum Wiesbaden

Re: Verknüpfte Tabs in Front-/Backend prüfen/akt. (III) - Re: Verknüpfte Tabs in Front-/Backend prüfen/akt. (III)

Nach oben
       

Hi Leute,

Nachfragen zum Thema bitte hier Verknüpfte Tabellen in Front-/Backend prüfen {Nachgefragt} stellen.

Und hier noch eine Version zum wieder verknuepfen von Text- und Excel-Tabellen
Code:
Public Sub Set_Connection(Optional varDBPath As Variant)
On Error GoTo FehlerMeldung
    Dim intCount    As Integer
    Dim intPart     As Integer
    Dim intType     As Integer
    Dim strConnect  As String
    Dim strConnectN As String
    Dim strDBFile   As String
    Dim strDBPath   As String
    Dim strMsgBox   As String
    Dim strPart()   As String
    Dim db          As DAO.Database
   
    If IsMissing(varDBPath) Then
        strDBPath = FnstrSeparatedPath$(CurrentDb.Name)
      Else
        strDBPath = CStr(Nz(varDBPath, ""))
    End If
    Set db = CurrentDb()
    For intCount = 0 To db.TableDefs.Count - 1
        If db.TableDefs(intCount).Connect <> "" Then               'verknüpft?
            strConnect = db.TableDefs(intCount).Connect
Debug.Print db.TableDefs(intCount).Name                  'Nur zum Testen nötig
Debug.Print "Alt:  " & strConnect                        'Nur zum Testen nötig
            strPart() = Split(strConnect, ";")
            Select Case Left$(strPart(LBound(strPart())), 4)
              Case "":     intType = 0                                 'Access
              Case "Exce": intType = 1                                  'Excel
              Case "Text": intType = 2                                   'Text
              Case Else:   intType = -1      'Noch nicht definiert, z.B. DBase
            End Select
            If intType <> -1 Then
                strConnectN = strPart(LBound(strPart()))
                For intPart = LBound(strPart()) + 1 To UBound(strPart())
                    Debug.Print "- " & strPart(intPart)
                    If InStr(strPart(intPart), "DATABASE") Then
                        Select Case intType
                          Case 0, 1                  'Access, Excel: Mit Datei
                            strDBFile _
                                 = FnstrSeparatedPath(strPart(intPart), False)
                          Case Else                       'Text etc.: Nur Pfad
                            strDBFile = ""
                        End Select
                        strPart(intPart) = "DATABASE=" & strDBPath & strDBFile
                        ' Ergaenzt wegen Problemen (siehe {Nachgefragt})
                        If Right$(strPart(intPart), 1) = "\" And _
                           Len(strPart(intPart)) > 3 Then
                            strPart(intPart) = Left$(strPart(intPart) _
                                                  , Len(strPart(intPart)) - 1)
                        End If
                    End If
                    strConnectN = strConnectN & ";" & strPart(intPart)
                Next intPart
Debug.Print "Neu:  " & strConnectN                       'Nur zum Testen nötig
                If strConnectN <> strConnect Then
Debug.Print "Ist:  " & strConnect                        'Nur zum Testen nötig
Debug.Print "Soll: " & strConnectN;                      'Nur zum Testen nötig
                    db.TableDefs(intCount).Connect = strConnectN
                    db.TableDefs(intCount).RefreshLink
                End If
            End If
        End If
    Next intCount
    db.Close
    Set db = Nothing
    Exit Sub
FehlerMeldung:
    strMsgBox = "Bei der Installation ist ein Fehler aufgetreten!"
    MsgBox strMsgBox, vbCritical, "Achtung {Installation (DB)}"
    Exit Sub
End Sub

Public Function FnstrSeparatedPath(strFilename As String _
                                 , Optional blnPath As Boolean = True) _
                                  As String
    Dim lngPos As Long
   
    lngPos = 1
'    While InStr(lngPos + 1, strFilename, "\")
'        lngPos = InStr(lngPos + 1, strFilename, "\")
'    Wend
' Mit InStrRev entfällt die Schleife
    lngPos = InStrRev(strFilename, "\")
    If blnPath Then
        FnstrSeparatedPath = Left$(strFilename, lngPos)
      Else
        FnstrSeparatedPath = Mid$(strFilename, lngPos + 1)
    End If
End Function

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)


Zuletzt bearbeitet von Willi Wipp am 23. Jan 2011, 08:57, insgesamt 3-mal bearbeitet
derArb
getting better


Verfasst am:
11. März 2007, 03:12
Rufname: derArb
Wohnort: Berlin

meine backend ist verschoben oder umbenannt..kompl. Hilfe - meine backend ist verschoben oder umbenannt..kompl. Hilfe

Nach oben
       Version: Office XP (2002)

{Themen zusammengefuehrt by Willi Wipp}

Hallo,

Der Unterschied zu vielen super guten vorhandenen Vorschlägen ist eine
komplette Steuerung inkl. des Abspeichern und Auslesen
in/aus einer Tabelle, wodurch nur einmal das backend gesucht werden muss und danach alles wieder problemlos bei jedem Aufruf der DB sich wiederfindet.

Ein "Trick" dabei ist, dass die Tabelle, welche die Pfadinformationen
steuert, sich im Frontend befinden muss.
Da der code aus dem Forum "zusammengestöpselt" und nur wenig modifiziert worden ist; und man diese codes durch googeln im Forum leicht finden kann, erstmal nur ein link, um keinen doppelten Datenmüll zu erzeugen. Sämtlich codes sind offen zugänglich im gelinkten Beispiel.

Hilfe..ich finde mein Backend nicht mehr (BackendFindenAutomatik.zip)

mfg
derArb

_________________
MfG
derArb

Scio me nihil scire...Εν οίδα οτι ουδέν οίδα... Ich weiss, dass ich nichts weiss (Sokrates)
Ich bevorzuge Beiträge mit korrekter deutscher Grammatik.



BackendFindenAutomatik.zip
 Beschreibung:

Download
 Dateiname:  BackendFindenAutomatik.zip
 Dateigröße:  52.38 KB
 Heruntergeladen:  1110 mal

Willi Wipp
Moderator


Verfasst am:
19. März 2007, 11:25
Rufname:
Wohnort: Raum Wiesbaden

Re: meine backend ist verschoben oder umbenannt..kompl. Hilf - Re: meine backend ist verschoben oder umbenannt..kompl. Hilf

Nach oben
       Version: Office XP (2002)

Hi derArb,

mir ist unklar warum Du die Informationen extra in einer Tabelle speichern willst?
Wenn die Verknuepfungen aktualisiert sind dann steht der Verknuepfungspfad doch in der Verknuepfung?

_________________
Eine kurze Rueckmeldung waere nett
SL Willi Wipp

(Anleitung fuer das Anhaengen von Dateien: Klicke links auf [www], Gaeste muessen sich dafuer anmelden)
derArb
getting better


Verfasst am:
19. März 2007, 13:39
Rufname: derArb
Wohnort: Berlin

AW: Verknüpfte Tabellen in Front-/Backend prüfen/aktualisier - AW: Verknüpfte Tabellen in Front-/Backend prüfen/aktualisier

Nach oben
       

@Willi Wipp,

ich hatte den code von backend nicht gefunden dann filedialog

genommen und musste bei jedem Start der DB neu verknüpfen.
Deswegen hatte ich diesen code modifiziert mit der Tabelle.

mfg
derArb

_________________
MfG
derArb

Scio me nihil scire...Εν οίδα οτι ουδέν οίδα... Ich weiss, dass ich nichts weiss (Sokrates)
Ich bevorzuge Beiträge mit korrekter deutscher Grammatik.
Silly14
Im Profil kannst Du frei den Rang ändern


Verfasst am:
22. März 2007, 11:59
Rufname:

AW: Verknüpfte Tabellen in Front-/Backend prüfen/aktualisier - AW: Verknüpfte Tabellen in Front-/Backend prüfen/aktualisier

Nach oben
       Version: Office 2003

So, habe das Beispiel unter Access2003 bisschen angepasst und muss sagen es funktioniert Super!
Dickes Kompliment dafür.

gruß Silly
Bitsqueezer
Office-VBA-Programmierer


Verfasst am:
04. Jul 2007, 16:27
Rufname:


AW: Verknüpfte Tabellen in Front-/Backend prüfen/aktualisier - AW: Verknüpfte Tabellen in Front-/Backend prüfen/aktualisier

Nach oben
       Version: Office 2003

Hallo zusammen,

ich hätte da auch noch eine Variante zusammengestrickt, entwickelt unter Access2003, sollte aber auch anderweitig gehen.

Die Prozedur benötigt die Funktion "showStatusbar", die ich neulich hier gepostet habe:
Progressbar - Fortschrittsanzeige selbstgemacht

Zusätzliche Erläuterungen dazu:
  1. Die Prozedur ist für eine Frontend-/Backend-Kombination gedacht, die im gleichen Ordner steht und bei denen nur die verknüpften Tabellen dieses Backends verwendet werden. Weitere Backends werden nicht unterstützt.

  2. sie ist für eine Multiuser-Umgebung geschrieben, so daß geprüft wird, ob der aktuelle Benutzer ein Administrator ist oder nicht. Benötigt man diese Funktionen nicht, braucht man nur den ersten Teil der Prozedur zu entfernen.

  3. die Prozedur kann auf zwei verschiedene Weisen testen, ob die Verbindungen aktualisiert werden müssen oder nicht:
    1. bei Test per Connection wird die erste Tabelle, die in der Auflistung der Tabellen als verknüpft gefunden wird, geöffnet und getestet, ob die Verbindung funktioniert hat oder nicht. Wenn nicht, wird die Reconnection angestoßen.
    2. bei Test per Pfadvergleich wird der Pfad der aktuell verknüpften Tabellen extrahiert und mit dem Pfad des Frontends verglichen. Stimmt er nicht überein, wird eine Reconnection angestoßen.
  4. es ist zu empfehlen, die zweite Methode zu verwenden, da die erste Methode den Nachteil hat, daß sie in manchen Netzwerken nicht funktioniert. Außerdem kann es dazu kommen, daß das falsche Backend geöffnet wird, wenn die Datenbank zum Beispiel von einem lokalen Pfad in einen Netzwerkpfad kopiert wurde, die lokale aber weder verschoben noch gelöscht wurde. In dem Fall findet die Prozedur die alte lokale Version und es findet keine Reconnection statt.

  5. während der Reconnection wird eine Statusleiste eingeblendet, die den Fortschritt anzeigt (da die Reconnection bei Verwendung vieler verlinkter Tabellen schon recht lang dauern kann). Außerdem wird der Mauszeiger auf Sanduhr umgestellt.

  6. es gibt zwei globale Variablen, die man verwenden kann: bDebug, mit der man Debugmessages ausgeben lassen kann, wenn sie auf True gesetzt ist und bFirstStart (beides als Boolean-Werte zu definieren), mit der getestet wird, ob die Datenbank zum ersten Mal gestartet wurde oder zum wiederholten Mal (bedeutet: Wenn man die Ausführung unterbricht und wieder startet, damit hier nicht jedesmal ein Test auf Reconnection stattfindet. Bedeutet NICHT das Beenden von Access und komplett Neustart der Datenbank.)
Viel Spaß damit

Christian
Code:
Option Compare Database
Option Explicit

' Restore Connection
'
' cycles through all tables which are linked and restores the tablelinks
' according to the actual directory of the frontend- (program-) database
'
' Parameters: strDataTable = Name of the database where this one should be
'                            connected to
'             bolConnOrPath = true if test on connection
'                             false if test on path
' Global Variables: bFirstStart (Boolean) to test if the application started
'                   the first time
'                   bDebug (Boolean) true if debugmessages should be displayed
'
' Author : Christian Coppes
' Version: V1.2
' Last Modified: 04.07.2007
'
Public Sub RestoreConnection(strDataTable As String, bolConnOrPath As Boolean)
On Error GoTo Fehler
    Dim db              As DAO.Database
    Dim ActTable        As DAO.TableDef
    Dim strOwnPath      As String
    Dim strConnPath     As String
    Dim objUser         As DAO.User
    Dim objWorkspace    As DAO.Workspace
    Dim isAdmin         As Boolean
    Dim i               As Long
    Dim strGrouplist    As String
    Dim bolNoConnect    As Boolean
   
    Set objWorkspace = DBEngine.Workspaces(0)
    If objWorkspace.Users.Count = 0 Then Exit Sub
    Set objUser = objWorkspace.Users(CurrentUser)
    isAdmin = False
    ' Test if the user is part of the Admins-group
    strGrouplist = ""
    For i = 0 To objUser.Groups.Count - 1
        strGrouplist = strGrouplist & " " & objUser.Groups(i).Name
        If objUser.Groups(i).Name = "Admins" Then isAdmin = True
    Next i
    If bDebug Then MsgBox "Groups: " & strGrouplist
    strOwnPath = CurrentProject.Path
    bolNoConnect = False
    ' Should the connection be tested on the base of missing connection to
    ' one of the tables in the database or should it be tested if the backend
    ' and frontend are in the same directory?
    Select Case bolConnOrPath
      Case False:
        strConnPath = ConnectPath()
        If strOwnPath <> strConnPath Then bolNoConnect = True
     Case True:
        If CheckConnect() = False Then bolNoConnect = True
    End Select
    ' Test if the user has admin-rights or not because only an admin can
    ' reconnect a backend
    If bolNoConnect Then
        If isAdmin = False Then
            MsgBox "No connection to backend-database!" & vbCrLf & _
                   "Please contact an administrator!", _
                   vbOKOnly & vbCritical, "Error"
            Application.Quit
        End If
      Else
        Exit Sub
    End If
    ' One of the two methods above gave the result that a reconnection is
    ' necessary
    MsgBox "Database needs to be reconnected to the backend" & vbCr & vbCr & _
           "Please wait !", vbOKOnly & vbInformation
    ' Get the number of linked tables
    i = 0
    For Each ActTable In CurrentDb.TableDefs
        If ActTable.Attributes = dbAttachedTable Then
            i = i + 1
        End If
    Next ActTable
    ' Initialize Statusbar with the number of linked tables
    showStatusbar "I", i, , "Reconnection: "
    If bFirstStart = False Then   ' check only on first start
        bFirstStart = True
        ' Show hourglass mouse
        Screen.MousePointer = 11
        Set db = CurrentDb()
        i = 0
        For Each ActTable In CurrentDb.TableDefs
            If ActTable.Attributes = dbAttachedTable Then
                i = i + 1
                showStatusbar "U", i, True
                db.TableDefs(ActTable.Name).Connect = _
                       "MS Access;DATABASE=" & strOwnPath & "\" & strDataTable
                db.TableDefs(ActTable.Name).RefreshLink
            End If
        Next ActTable
        ' Reset Mousepointer to normal view
        Screen.MousePointer = 0
    End If
    Exit Sub
Fehler:
    Select Case Err.Number
      Case 3024
        MsgBox "Database " & Chr(34) & strDataTable & Chr(34) & _
               "couldn't be found." & vbCr & vbCr & _
               "The program will be closed now.", _
               vbOKOnly Or vbCritical, "Nonrecoverable error"
        Application.Quit
      Case Else
        MsgBox "Error in RestoreConnection: " & vbCr & "Description: " & _
               Err.Description & vbCr & "Error: " & Str(Err.Number)
    End Select
    ' Reset Mousepointer to normal view
    Screen.MousePointer = 0
    Application.Echo True
End Sub

' Author: Christian Coppes
' V1.0
' Last updated: 04.07.2007
' Check Connection
'
' tests if the database is already connected or not
'
Public Function CheckConnect() As Boolean
On Error GoTo CheckConnectError
    Dim db          As DAO.Database
    Dim tbl         As DAO.Recordset
    Dim ActTable    As DAO.TableDef
   
    Set db = DBEngine.Workspaces(0).Databases(0)
    For Each ActTable In CurrentDb.TableDefs
        If ActTable.Attributes = dbAttachedTable Then
            ' check if the table is connected
            Set tbl = db.OpenRecordset(ActTable.Name)
            Exit For
        End If
    Next ActTable
    CheckConnect = True
    Exit Function
CheckConnectError:
    If bDebug Then MsgBox "Error: " & Str(Err.Number) & " " & Err.Description
    CheckConnect = False
    Exit Function
End Function

' Author: Christian Coppes
' V1.0
' Last updated: 04.07.2007
' ConnectPath
' gives back the path of the first connected table of the backend
'
Public Function ConnectPath() As String
    Dim ActTable        As DAO.TableDef
    Dim strConnectPath  As String
   
    For Each ActTable In CurrentDb.TableDefs
        If ActTable.Attributes = dbAttachedTable Then
            strConnectPath = ActTable.Connect
            Exit For
        End If
    Next ActTable
    If strConnectPath = "" Then
        ConnectPath = ""
      Else
        ConnectPath = Mid(strConnectPath, 11, InStrRev(strConnectPath, _
                                                       "\") - 11)
    End If
End Function
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Access Tabellen & Abfragen: Datenabgleich gleicher Tabellen 5 Gast 1121 30. Jul 2004, 09:27
Willi Wipp Datenabgleich gleicher Tabellen
Keine neuen Beiträge Access Tabellen & Abfragen: aufsummieren 2er tabellen 1 micky1409 1026 17. Jul 2004, 23:43
faßnacht(IT); aufsummieren 2er tabellen
Keine neuen Beiträge Access Tabellen & Abfragen: 2 gleiche Tabellen in 2 verschiedenen DB verknüpfen 2 mondi 1016 23. Jun 2004, 10:10
mondi 2 gleiche Tabellen in 2 verschiedenen DB verknüpfen
Keine neuen Beiträge Access Tabellen & Abfragen: Daten aus mehreren Tabellen in einer Gesamttabelle richtig e 5 hoschi 1574 04. Jun 2004, 13:01
stpimi Daten aus mehreren Tabellen in einer Gesamttabelle richtig e
Keine neuen Beiträge Access Tabellen & Abfragen: 2 tabellen vergleichen 4 Lordoo88 1556 03. Jun 2004, 16:43
Lordoo88 2 tabellen vergleichen
Keine neuen Beiträge Access Tabellen & Abfragen: Frontend und Backend: kann nicht auf die Tabellen zugreifen 1 mhw 804 25. Mai 2004, 12:25
Robsl Frontend und Backend: kann nicht auf die Tabellen zugreifen
Keine neuen Beiträge Access Tabellen & Abfragen: Zwei Tabellen zusammenfügen und Nullwerte überschreiben 1 m.hataj 1305 13. Mai 2004, 18:10
faßnacht(IT); Zwei Tabellen zusammenfügen und Nullwerte überschreiben
Keine neuen Beiträge Access Tabellen & Abfragen: kriterium - datensatz nur in einer von zwei tabellen 3 budking82 1001 11. Mai 2004, 12:59
budking82 kriterium - datensatz nur in einer von zwei tabellen
Keine neuen Beiträge Access Tabellen & Abfragen: Abfrage erstelen, die zwei tabellen vergleicht 2 pucky 803 27. Apr 2004, 10:53
ProLogistik Abfrage erstelen, die zwei tabellen vergleicht
Keine neuen Beiträge Access Tabellen & Abfragen: Abgleich von 2 tabellen in access 2003 4 Fierce 1720 16. Apr 2004, 08:27
el_gomero Abgleich von 2 tabellen in access 2003
Keine neuen Beiträge Access Tabellen & Abfragen: datensatz aus mehreren Tabellen im formular anzeigen 1 SixPack 1198 29. März 2004, 10:53
Willi Wipp datensatz aus mehreren Tabellen im formular anzeigen
Keine neuen Beiträge Access Tabellen & Abfragen: neue Tabellen erzeugen; kopieren 7 DiplomandSPS 1324 25. März 2004, 10:01
fridgenep neue Tabellen erzeugen; kopieren
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft Project