16.08.2016, 13:30
Hallo zusammen,
ich als Access-Novize benötige mal wieder ein paar zielführende Tipps.
Zunächst nochmal zum Hintergrund:
Ziel ist es ein kleines Tool zu entwickeln, mit dem sich "Paletten-/Lagerbestände" nachvollziehen lassen.
Das ganze ist über ein Excel-Frontend und ein Access-Backend realisiert. Also Datenerfassung in Excel und Datenhaltung in Access.
Das Tool soll simultan an mehreren Rechnern (3-6) genutzt werden und so schien die Idee naheliegend, die Umsetzung wie oben beschrieben
zu realisieren. Ich hatte hier bereits schon ein paar Fragen allerdings in der "Excel-Sektion" gestellt.
Grundsätzlich läuft das Tool, ABER nicht uneingeschränkt auf allen Rechnern. Den Zugriff auf Access habe ich,
da ich hier leider erst nach Auftreten der nachfolgend beschriebenen Probleme angefangen habe zu recherchieren , über ADO realisiert.
Auf einigen Rechnern erscheint ein Laufzeitfehler sobald Daten aus Access abgerufen werden.
Nun habe ich ein wenig recherchiert und herausgefunden, dass seit Office 2007 gewisse Komponenten, welche bei den vorherigen Versionen
noch zum Standard gehörten, von Microsoft aus dem Office Paket entfernt wurden.
https://support.microsoft.com/de-de/kb/244264
Ich habe im weiteren Verlauf der Recherche auch einen Link zu einem von Microsoft angeboten Bugfix gefunden
https://www.microsoft.com/en-us/download...px?id=3671
Das Bugfix wurde durch die IT installiert und, wen wundert es :20: , der Laufzeitfehler tritt immer noch auf.
Im weiteren Verlauf wurden Teile aus dem Office 2000 und 2003 Paket installiert. Eben das in Office 2007 fehlende "Collaboration Data Objects-Paket".
Kein Workaround hat hier geholfen.
Hat jemand von Euch eine Idee oder das gleiche Problem schon einmal gelöst?
Als Plan B habe ich angefangen den Zugriff über DAO zu realisieren mit dem "Erfolg", dass nun zwar keine Fehlermeldung mehr beim Öffnen der Datenbank auftritt, dafür aber
die übergebenen SQL-Strings unterschiedliche bzw. kein Ergebnis liefern.
Der Zugriff per ADO:
im weiteren Verlauf werden die Ergebnisse dann in einer Listbox ausgegeben.
Bei einer Abfrage aller Datensätze liefert mir diese per ADO unter Verwendung des nachfolgenden SQL-Strings
7230 Datensätze.
Die Verwendung des gleichen Strings bei Zugriff per DAO liefert 0 Datensätze :s .
Nachfolgend der Zugriff per DAO:
Da ich wie gesagt Access-Novize bin, muss ich bei Zugriff über DAO das SQL-Statement anders übergeben? Ich dachte SQL wäre an dieser Stelle universell ?!
Oder mache ich einen Fehler beim Öffnen der Datenbank per DAO? Ich bin echt verwirrt und blicke es leider nicht. "Gefährliches Halbwissen"!!! :16:
Danke und Gruß
Ich
ich als Access-Novize benötige mal wieder ein paar zielführende Tipps.
Zunächst nochmal zum Hintergrund:
Ziel ist es ein kleines Tool zu entwickeln, mit dem sich "Paletten-/Lagerbestände" nachvollziehen lassen.
Das ganze ist über ein Excel-Frontend und ein Access-Backend realisiert. Also Datenerfassung in Excel und Datenhaltung in Access.
Das Tool soll simultan an mehreren Rechnern (3-6) genutzt werden und so schien die Idee naheliegend, die Umsetzung wie oben beschrieben
zu realisieren. Ich hatte hier bereits schon ein paar Fragen allerdings in der "Excel-Sektion" gestellt.
Grundsätzlich läuft das Tool, ABER nicht uneingeschränkt auf allen Rechnern. Den Zugriff auf Access habe ich,
da ich hier leider erst nach Auftreten der nachfolgend beschriebenen Probleme angefangen habe zu recherchieren , über ADO realisiert.
Code:
Public rst As ADODB.Recordset
Dim AccApp As Object
Dim conn As New ADODB.Connection
Sub DatenbankÖffnen()
Set AccApp = CreateObject("Access.Application")
'AccApp.Visible = True
Set rst = New ADODB.Recordset
conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; " & "Data source=" & ThisWorkbook.Path & "\Aufarbeitung.mdb;"
rst.Open strSQL, conn, adOpenKeyset, adLockOptimistic
End Sub
Auf einigen Rechnern erscheint ein Laufzeitfehler sobald Daten aus Access abgerufen werden.
Nun habe ich ein wenig recherchiert und herausgefunden, dass seit Office 2007 gewisse Komponenten, welche bei den vorherigen Versionen
noch zum Standard gehörten, von Microsoft aus dem Office Paket entfernt wurden.
https://support.microsoft.com/de-de/kb/244264
Ich habe im weiteren Verlauf der Recherche auch einen Link zu einem von Microsoft angeboten Bugfix gefunden
https://www.microsoft.com/en-us/download...px?id=3671
Das Bugfix wurde durch die IT installiert und, wen wundert es :20: , der Laufzeitfehler tritt immer noch auf.
Im weiteren Verlauf wurden Teile aus dem Office 2000 und 2003 Paket installiert. Eben das in Office 2007 fehlende "Collaboration Data Objects-Paket".
Kein Workaround hat hier geholfen.
Hat jemand von Euch eine Idee oder das gleiche Problem schon einmal gelöst?
Als Plan B habe ich angefangen den Zugriff über DAO zu realisieren mit dem "Erfolg", dass nun zwar keine Fehlermeldung mehr beim Öffnen der Datenbank auftritt, dafür aber
die übergebenen SQL-Strings unterschiedliche bzw. kein Ergebnis liefern.
Der Zugriff per ADO:
Code:
With UserForm1
'Listenfeld löschen
.ListBox1.Clear
'Alle Datensätze anzeigen
If .TextBox1.Value = "*" Then
strSQL = "SELECT * FROM Artikel ORDER BY Artikel ASC"
GoTo weiter
ElseIf .TextBox2.Value = "*" Then
strSQL = "SELECT * FROM Artikel ORDER BY CMMF ASC"
GoTo weiter
End If
'Nach DS mit Anfangskombinationsuchen
If .TextBox1.Value <> "*" And .TextBox2 = "" Then
strSQL = "SELECT * FROM Artikel WHERE Artikel LIKE '" & .TextBox1.Value & "%' ORDER By Artikel ASC"
ElseIf .TextBox2.Value <> "*" And .TextBox1 = "" Then
strSQL = "SELECT * FROM Artikel WHERE CMMF LIKE '" & .TextBox2.Value & "%' ORDER By Artikel ASC"
End If
im weiteren Verlauf werden die Ergebnisse dann in einer Listbox ausgegeben.
Bei einer Abfrage aller Datensätze liefert mir diese per ADO unter Verwendung des nachfolgenden SQL-Strings
Code:
strSQL = "SELECT * FROM Artikel ORDER BY Artikel ASC"
7230 Datensätze.
Die Verwendung des gleichen Strings bei Zugriff per DAO liefert 0 Datensätze :s .
Nachfolgend der Zugriff per DAO:
Code:
Public rst As DAO.Recordset
Dim db As DAO.Database
Sub DatenbankÖffnen()
Set db = OpenDatabase(ThisWorkbook.Path & "\Aufarbeitung.mdb")
Set rst = db.OpenRecordset(strSQL, dbOpenDynaset)
End Sub
Oder mache ich einen Fehler beim Öffnen der Datenbank per DAO? Ich bin echt verwirrt und blicke es leider nicht. "Gefährliches Halbwissen"!!! :16:
Danke und Gruß
Ich