| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Opendatabase (556 mal gelesen)
|
otm Mitglied Bauingenieur
Beiträge: 167 Registriert: 26.08.2009 MS Win 10 AutoCAD Civil 3D 2023 VBA Enabler 2023 MS Access Database Enginge X64 MSO 365 (64bit)
|
erstellt am: 05. Jul. 2021 11:15 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum, folgendes Makro öffnet eine ACCESS DB, führt eine Abfrage mit Parameter aus und alles wieder schließt. Code:
Function IsStrInQry(strQry As String, qpar As String, strA As String) As Boolean 'Gibt es strA in der Abfrage strQry mit dem Abfrageparameter "QPar" in der DB? 'Variablendefinition Dim db As DAO.Database Dim qry As QueryDef Dim rs As Recordset Dim DSAnz As Integer 'Anzahl der abgefragten Datensätze 'Datenbank öffnen 'Die DB wird nicht exklusiv und schreibgeschützt geöffnet. Set db = OpenDatabase(DBPathName, , True) 'Abfrage definieren Set qry = db.QueryDefs(strQry) 'Abfrageparameter setzen. qry.Parameters(qpar) = strA 'Abfrage ausführen Set rs = qry.OpenRecordset If rs.EOF Then 'keine Datensätze in der Abfrage enthalten. IsStrInQry = False GoTo Exit_IsStrInQry Else 'Nur wenn es DS gibt ausführen rs.MoveLast rs.MoveFirst 'Datensätze in der Abfrage zählen DSAnz = rs.RecordCount If DSAnz = 1 Then IsStrInQry = True Else IsStrInQry = False End If End If Exit_IsStrInQry: rs.Close db.Close Set qry = Nothing Set rs = Nothing Set db = Nothing End Function
Nun läuft das Makro nicht mehr und bleibt bei ... Opendatabase hängen. Es kommt keine Fehlermeldung, nix. Der Rechner bleibt hängen und ich muss ACAD über den Taskmanager beenden. - Bei den vertrauenswürdigen Orten in ACCESS ist die DB angemeldet. - die Variablen sind alle belegt - Die Datenbank gibt es an diesem Ort. - Die Verweise in VBA sind gesetzt. Woran könnte das noch liegen? Noch eine Frage: Was gibt es für eine alternative Zugriffsmöglichkeit auf eine AccessDB? ------------------ Grüße aus München Christian [Diese Nachricht wurde von otm am 05. Jul. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Plateia, Canalis Visual Basic
|
erstellt am: 05. Jul. 2021 12:47 <-- editieren / zitieren --> Unities abgeben: Nur für otm
|
otm Mitglied Bauingenieur
Beiträge: 167 Registriert: 26.08.2009 MS Win 10 AutoCAD Civil 3D 2023 VBA Enabler 2023 MS Access Database Enginge X64 MSO 365 (64bit)
|
erstellt am: 05. Jul. 2021 13:10 <-- editieren / zitieren --> Unities abgeben:
Was genau verändert wurde, kann ich nicht nachvollziehen. An der Umgebung wurde jedenfalls nichts geändert. Ich habe aus der dvb ein paar Makros entfernt, die nichts mit diesem Makro zu tun haben. Alle Makros ohne den Befehl opendatabase laufen einwandfrei. Was ich noch nicht verstanden habe ist, wo der Befehl opendatabase hakt, weil er ja richtig aufgerufen wird. ------------------ Grüße aus München Christian [Diese Nachricht wurde von otm am 05. Jul. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Plateia, Canalis Visual Basic
|
erstellt am: 05. Jul. 2021 18:33 <-- editieren / zitieren --> Unities abgeben: Nur für otm
Ich vermute Du bist das Programm schon mit F8 durchgegangen und hast den Wert von DBPathName überprüft. Habe bei mir festgestellt dass ich die DAO Objekt Library gar nicht aktivieren kann, da fehlt wohl eine Datei oder ist falsch registriert. Aber meine Programme mit Datenbankzugriff laufen alle über ADO, weshalb ich Dir hier keine große Hilfe geben kann. Weiß nur dass ich früher auch öfters mit DAO Probleme hatte. Grüße Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
otm Mitglied Bauingenieur
Beiträge: 167 Registriert: 26.08.2009 MS Win 10 AutoCAD Civil 3D 2023 VBA Enabler 2023 MS Access Database Enginge X64 MSO 365 (64bit)
|
erstellt am: 05. Jul. 2021 21:01 <-- editieren / zitieren --> Unities abgeben:
Bin mit F8 alles durchgegangen und habe eben den Befehl opendatabase als den Übeltäter entlarvt. Alles andere läuft einwandfrei, superschnell. Ich denke auch, dass es daran liegt, dass er eine Datei nicht findet. Aber, wie finde ich das, was er nicht findet? Bei anderer Gelegenheit kommt auch auf manchen Rechnern ein Laufzeitfehler und MS schreibt dazu sinngemäß nur: "Kommt bei manchen Rechnern vor, bei anderen nicht. Neuinstallieren hilft meist." Aber egal: Wie würde der Zugriff den mit ADO aussehen? ------------------ Grüße aus München Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Plateia, Canalis Visual Basic
|
erstellt am: 06. Jul. 2021 13:20 <-- editieren / zitieren --> Unities abgeben: Nur für otm
Zitat: Original erstellt von otm:
Aber egal: Wie würde der Zugriff den mit ADO aussehen?
Hi, Mir fehlt gerade die Zeit Dir Beispiele herauszusuchen, sind in doch großen Projekten eingebunden. Mir hat damals dieses Tutorial sehr weitergeholfen. Ist zwar nicht mehr auf den neuesten Stand, was die Provider betrifft, aber schon mal ein Anfang. Grüße Klaus
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
otm Mitglied Bauingenieur
Beiträge: 167 Registriert: 26.08.2009 MS Win 10 AutoCAD Civil 3D 2023 VBA Enabler 2023 MS Access Database Enginge X64 MSO 365 (64bit)
|
erstellt am: 06. Jul. 2021 21:26 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für den Einstieg. Mittlerweile habe ich das Problem weiter eingegrenzt. Ich habe auf einem anderen Rechner ein anderes dvb-Projekt dazugeladen und dieses einmal ausgeführt. Seitdem bleibt das ursprüngliche Projekt auch auf dem anderen Rechner bei opendatabase hängen bzw. AutoCad hängt sich auf und man muss den Task beenden. Im neuen Projekt sind aber nur ein Formular und ein paar erste Makros enthalten. Gibt es irgendwelche Besonderheiten, wenn man gleichzeitig zwei dvb-Dateien lädt? Mittlerweile habe ich in MS Word ein ganz kurzes Makro laufen lassen, dass auch über OpenDatabase auf eine TestDB zugreift. Das läuft einwandfrei. Die DB wird geöffnet, die Tabelle wird geöffnet, die Anzhl der DS ausgelesen und alles wieder geschlossen. Kopiere ich dieses Makro 1:1 in AutoCAD-VBA, bleibt es beim Datenbankzugriff hängen. ------------------ Grüße aus München Christian [Diese Nachricht wurde von otm am 07. Jul. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
KlaK Ehrenmitglied V.I.P. h.c. Dipl. Ing. Vermessung, CAD- und Netz-Admin
Beiträge: 2624 Registriert: 02.05.2006 AutoCAD LandDesktop R2 bis 2004 Civil 3D 2005 - 2022 Plateia, Canalis Visual Basic
|
erstellt am: 07. Jul. 2021 10:54 <-- editieren / zitieren --> Unities abgeben: Nur für otm
Hallo Christian, Ich würde hier einen Supportfall aufmachen, vielleicht ist schon etwas bekannt. Testweise könnte man natürlich den PC auf einen Wiederherstellungspunkt zurücksetzen bei dem das noch funktioniert hat. Evtl. gab es ja Änderungen bei dem ein oder anderen Update. Oder Du steuerst diese Geschichten über das Word- (oder Excel-)makro und bindest Autocad als Objekt dazu. Grüße Klaus [Diese Nachricht wurde von KlaK am 07. Jul. 2021 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
otm Mitglied Bauingenieur
Beiträge: 167 Registriert: 26.08.2009 MS Win 10 AutoCAD Civil 3D 2023 VBA Enabler 2023 MS Access Database Enginge X64 MSO 365 (64bit)
|
erstellt am: 07. Jul. 2021 20:40 <-- editieren / zitieren --> Unities abgeben:
Hallo Klaus, ich habe den Support kontaktiert und super Hilfe bekommen. Es lag an der accessdatabaseengine. Nach der Reparatur lief alles wieder wie vorher. Wie das passieren konnte, haben wir nicht herausgefunden. Dir auf jeden Fall vielen Dank für's Mitdenken. ------------------ Grüße aus München Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |