MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 11.01.2019, 16:37   #1
firela112
MOF User
MOF User
Standard Acc2016 - fronted und backend verbinden

Hi,
ich habe folgende Prozedur bei mir eingebunden.(Lösung 2)
https://dbwiki.net/wiki/VBA_Tipp:_Ne...n_des_Backends

Jedoch habe ich folgendes Problem:
Es zeigt mir den Fehler 3044 (s. Anhang).
Wenn ich das Programm schließe und dann wieder öffne funktioniert es.

Wie kann ich das Problem lösen?
Angehängte Grafiken
Dateityp: jpg SnipImage (1).JPG (15,9 KB, 13x aufgerufen)
firela112 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2019, 16:47   #2
ebs17
MOF Guru
MOF Guru
Standard

Zitat:

Wie kann ich das Problem lösen?

Als Erstes würde ich die fehlerauslösende Zeile identifizieren.

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}:{11}
Dein Dankeschön: DBWiki=>Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2019, 17:23   #3
firela112
Threadstarter Threadstarter
MOF User
MOF User
Standard

kann ich leider nicht sagen.

Das ist mein Problem.
Vielleicht liegt es daran, dass ich die Datei in einen googleordner speichere (PC A) und von einem anderen pc (PC B)wieder abrufe und dort per batch in den ordner kopiere, wo die backend liegt.

Es kommt immer der Pfad (im Fehler) den ich praktisch von dem PC A (wo die "Orginaldatei" liegt, also die zu übertragende Version) übertrage.

Ich will halt derzeit die fronted per googledrive verteilen, weil server noch nicht läuft.

Geändert von firela112 (11.01.2019 um 17:29 Uhr).
firela112 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2019, 17:50   #4
firela112
Threadstarter Threadstarter
MOF User
MOF User
Standard

Habs jetzt mal probiert mit der Fehlerauswertung:
Code:

On Error GoTo Fehlerbehandlung 

Fehlerbehandlung: 
MsgBox "Fehler in der Zeile " & Erl & ":" & vbCrLf & Err.Description
Dann kommt Fehler in zeile 0
firela112 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2019, 18:45   #5
Ohrkester
MOF Koryphäe
MOF Koryphäe
Standard

Servus firela112,

Zitat:

...Wenn ich das Programm schließe und dann wieder öffne funktioniert es....

Funktioniert es ab dann bei jeglichem neuen Öffnen der DB?
Ohrkester ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2019, 20:03   #6
firela112
Threadstarter Threadstarter
MOF User
MOF User
Standard

also ich habs z.B. auf der googledrive. Dann kopiers ich in den ordner wo die backend ist.
Dann mache ich des frontend auf und dann kommen 2 Fehler. s. Anhang.
Dann fährt Access runter. Und wenn ich erneut die Datei öffne hats auf einmal die Verbindung aufgebaut.

Codes schauen bei mir so aus:
modul:
Code:

Option Compare Database
Option Explicit

Public Function TabellenEinbinden()
 
   'Quelle: http://www.dbwiki.net/
 
   Dim dbFE        As DAO.Database
   Dim dbBE        As DAO.Database
   Dim rs          As DAO.Recordset
   Dim tdf         As DAO.TableDef
   Dim col         As VBA.Collection
   Dim i           As Integer
   Dim strBEpfad   As String
 
   'Voller Pfad des Backends
   strBEpfad = CurrentProject.Path & "vspfirebe.accdb"
 
   Set dbFE = CurrentDb
   Set dbBE = DBEngine.Workspaces(0).OpenDatabase(strBEpfad)
   Set col = New VBA.Collection
 
   'Alle eingebundenen Tabellen im Frontend löschen
   Set rs = dbFE.OpenRecordset("SELECT * FROM MSysObjects WHERE Type = 6")
 
   If Not (rs.BOF And rs.EOF) Then
      rs.MoveFirst
 
      Do Until rs.EOF
         dbFE.TableDefs.Delete rs!Name
         rs.MoveNext
      Loop
   End If
 
   'Backend-Tabellennamen in Collection einlesen, ohne Systemtabellen
   For i = 0 To dbBE.TableDefs.Count - 1
      'wenn ungleich "MSys"
      If Left$(dbBE.TableDefs(i).Name, 4) <> "MSys" Then
         col.Add dbBE.TableDefs(i).Name
      End If
   Next
 
   'Tabellen einbinden, Collection mit den Tabellennamen durchlaufen
   For i = 1 To col.Count
 
      'TableDef-Objekt im Frontend erstellen und Tabellennamen zuweisen
      Set tdf = dbFE.CreateTableDef(col(i))
 
      'TableDef-Objekt verbinden mit der BE-Datenbank
      tdf.Connect = ";DATABASE=" & strBEpfad
 
      'Backend-Tabelle der Frontend-Tabelle als Quelle zuweisen
      tdf.SourceTableName = col(i)
 
      'TableDef-Objekt der TableDefs-Auflistung des Frontends anfügen
      dbFE.TableDefs.Append tdf
 
   Next
 
   'Speicher freigeben
   dbFE.Close
   dbBE.Close
 
   'Eingebundene Tabellen im Datenbankfenster sofort sichtbar machen
   '(nur optischer Effekt, für die Funktion nicht erforderlich)
   Application.RefreshDatabaseWindow
 
End Function
Aufruf mit:
Code:

Private Sub Form_Open(Cancel As Integer)
DoCmd.ShowToolbar "Ribbon", acToolbarNo
Call TabellenEinbinden

End Sub
Angehängte Grafiken
Dateityp: jpg 1.jpg (8,0 KB, 3x aufgerufen)
Dateityp: jpg 2.jpg (12,6 KB, 2x aufgerufen)
firela112 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2019, 20:07   #7
Kyron9000
MOF Koryphäe
MOF Koryphäe
Standard

...googledrive, ob das funktionieren wird, wäre ich überfragt

Mehrbenutzerfähig wird GoogleDrive aber nicht werden, Habe ich schon mit der DropBox getestet.
Funktioniert nicht. Da gibt es Konflikte mit der ...laccdb Datei.

__________________

Gruß Alfred

Geändert von Kyron9000 (11.01.2019 um 20:21 Uhr).
Kyron9000 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2019, 20:15   #8
ebs17
MOF Guru
MOF Guru
Standard

Der Pfad in den Meldungen ist der alte oder der neue BE-Pfad?
Nach der Meldung eher der alte, nicht mehr gültige.

Dann stellt sich die Frage, an welcher Stelle Du diese Einbindenfunktionalität platziert hast. Diese sollte natürlich aufgerufen werden, bevor das FE irgendwelche Zugriffe auf das BE vornimmt (gebundene Formulare, DLookups, Recordsets).
Typischerweise würde man das AutoExec-Makro oder ein ungebundenes Startformular nutzen.

//Edit:

Zitat:

also ich habs z.B. auf der googledrive

Das hatte ich gar nicht wahrgenommen.
Weg davon. Wenn Du mit der DB dann arbeiten willst, hast Du höchste Chancen, dass das ganze Zeug hoffnungslos zerschossen wird. Es gibt da eigene Themen, da kannst Du nachlesen. Du darfst natürlich auch ein Eigenerleben angehen.

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}:{11}
Dein Dankeschön: DBWiki=>Spende

Geändert von ebs17 (11.01.2019 um 20:19 Uhr).
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2019, 20:19   #9
firela112
Threadstarter Threadstarter
MOF User
MOF User
Standard

Ja richtig, ist der alte.
Aber mit Autoexec Makro funktionierts auch nicht.
Mir kommts so vor, als ob er den alten Pfad irgendwo abgespeichert hat, und nach Abarbeitung der Fehler den richtigen auf einmal findet. Ich kenn mich leider mit dem vba-code
nimma aus, da meine Kenntnisse da an meine Grenzen stossen.

Geändert von firela112 (11.01.2019 um 20:27 Uhr).
firela112 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2019, 20:20   #10
Ohrkester
MOF Koryphäe
MOF Koryphäe
Standard

Servus,
meines Erachtens musst Du die FE_BE Verknüpfung in einem eigenen
Formular (minimal oder hidden) erstellen, welches Du über ein AutoExec Makro als erstes aufrufen musst. Nach dem erfolgreichen Verknüpfungsprozess rufst Du aus diesem Formular erst Dein eigentliches Startformular auf.
Ohrkester ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2019, 20:41   #11
firela112
Threadstarter Threadstarter
MOF User
MOF User
Standard

und warum ist das so? Warum kann ich das nicht über das eine Formular machen?
Schaut nämlich so aus, als ob es das gewesen wäre.
firela112 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2019, 20:43   #12
ebs17
MOF Guru
MOF Guru
Standard

Zitat:

Mir kommts so vor, als ob er den alten Pfad irgendwo abgespeichert hat

Na klar, in der im Code durchsuchten Tabelle MSysObjects. Dort wird der Pfad des Backends von verwendeten Tabellen gesucht, und vor dem Neueinbinden wird dann das neue BE umsonst gesucht.

Es zählen also vollständige Abläufe. Also zuallererst Neueinbinden, erst dann in irgendeiner Form einen Tabellenzugriff auf das Backend beginnen.

Daneben sollte das neue Backend die gleichen Tabellen enthalten wie das ursprüngliche. Wenn sich nämlich das FE mit Tabellen beschäftigt, die es im neuen Backend noch nicht gibt, hat es da ein Problem beim Verwenden, weil ein Neuverknüpfen gar nicht stattfinden kann. Das würde auch erklären, dass einerseits die Anwendung abstürzt (so ohne Fehlerbehandlung), und andererseits auch, dass die vorhandenen Tabellen neu verknüpft und nutzbar sind, somit dann auch Formulöare & Co., die diese verwenden.

__________________

Ein freundliches Glück Auf!

Eberhard

Abfrageperformance ist kein Geheimnis
SQL ist leicht: {0}:{1}:{2}:{3}:{4}:{5}:{6}:{7}:{8}:{9}:{10}:{11}
Dein Dankeschön: DBWiki=>Spende
ebs17 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2019, 20:55   #13
firela112
Threadstarter Threadstarter
MOF User
MOF User
Standard

Dann stimmt aber der normale Code oben oder?
Ich muss jetzt nur ein Formular anlegen (z.B. mit Statusbalken)

Als erstes muss die autoexec ausgeführt werden.

Dann wird das neue Formular geladen und nach ausgeführter autoexec kann man das Switchboard laden.
Ist das so richtig?

Gibts dafür irgendwo ein Beispiel?

Geändert von firela112 (11.01.2019 um 21:02 Uhr).
firela112 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2019, 22:21   #14
firela112
Threadstarter Threadstarter
MOF User
MOF User
Standard

habs hinbekommen.
Makro sieht so aus:
Anderes Formular öffnen->Verbindung neu aufsetzen->schließen->Switchboard öffnen
firela112 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:48 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.