| |
Visual-Basic EinsteigerProgrammabsturtz beim Aufruf einer ado oder dao mit einer accdb | | | Autor: Hubert Holler | Datum: 08.02.21 16:33 |
| Hallo!
Ich möchte mit vb6 auf eine accdb Datenbank zugreifen um Daten dort zu speichern und auszulesen.
Ich habe folgendes Versucht.
dao:
----------------
Public Function dao_access()
Public db As DAO.Database
Dim dbe As DAO.DBEngine
Set dbe = CreateObject("DAO.DBEngine.120")
Set db = dbe.OpenDatabase(App.Path & "\import.accdb")
End Function
-----------------
Weiters habe ich ado versucht:
--------------------
Public Function ado_access()
Public Conn1 As New ADODB.Connection
Dim Cmd1 As New ADODB.Command
Dim Errs1 As Errors
Dim Rs1 As New ADODB.Recordset
Dim i As Integer
Dim AccessConnect As String
'Set the connection properties and open the connection.
With Conn1
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = App.Path & "\import.accdb"
.CursorLocation = adUseServer
.Open
End With
end Function
----------------
Als Verweis habe ich unterschiedlichste ADO Versionen (2.1 bis 6.1) und Dao Versionen (2.5/3.51 und nur 3.51) versucht.
Mein VB Programm starte ich von einer main Funktion wo ich auch die Verbindung mit ado und dao zur ms Access Datenbank herstelle.
Wenn ich in dieser main Funktion bleibe kann ich auch Daten in die Datenbank speichern und aufrufen. Sobald ich aber von der Main Funktion eine andere bzw. weitere Funktion aufrufe stürtzt das vb6 Programm ab.
Hoffe es kann mir hier jemand weiterhelfen, wie ich dieses Problem lösen kann.
Vielen Dank für jede Antwort
Beitrag wurde zuletzt am 08.02.21 um 16:34:33 editiert. | |
Re: Programmabsturtz beim Aufruf einer ado oder dao mit einer accdb | | | Autor: Hubert Holler | Datum: 08.02.21 19:17 |
| Danke für die Antwort.
Ich habe in eine Fehlerbehandlung eingebaut.
Diese wird aber nicht aufgerufen.
Es wird versucht die Funktion zu öffnen, springt aber nicht dorthin und vb6 stürtzt dann ab.
lg | |
Re: Programmabsturtz beim Aufruf einer ado oder dao mit einer accdb | | | Autor: Hubert Holler | Datum: 08.02.21 19:21 |
| Hier noch mein Code in der Funktion main, wo ich das ado oder dao verwende
-------------------
ado_access
sql = "select * from dateiimport where datei = 'datei.txt';"
Set rs = db.OpenRecordset(sql, _
dbOpenDynaset)
If rs.RecordCount = 0 Then
'Funktionsaufruf und absturtz wenn die Funktion lesen aufgerufen wird
lesen()
end if
---------------
Wenn ich die Funktion lesen() ohne ado_access aufrufen möchte, funktioniert alles ohne Probleme.
lg | |
Re: Programmabsturtz beim Aufruf einer ado oder dao mit einer accdb | | | Autor: emaNoN | Datum: 09.02.21 09:07 |
| „Wenn man die testen Funktion aufruft stürzt das Programm ab“
Nö:
Meine Verweise:
| |
Re: Programmabsturtz beim Aufruf einer ado oder dao mit einer accdb | | | Autor: Hubert Holler | Datum: 09.02.21 11:25 |
| Danke für die Antwort.
Ich habe vb6 neu in einer virtuellen Box installiert.
Dort hat es danna uch funktioniert.
Wie kann ich vb6 vollständig deinstallieren, damit ich es neu installieren kann.
Ich habe schon alles versucht es zu deinstallieren. Leider hat da keine Deinstallation weitergeholfen.
Vielen Dank für jede Atntwort | |
Re: Programmabsturtz beim Aufruf einer ado oder dao mit einer accdb | | | Autor: Souffleurlos | Datum: 09.02.21 14:17 |
| Hallo,
da du mit DAO angefangen hast deine Fragen zu stellen, sage ich dir: DAO geht heute noch
Nimmt man einen Verweis auf Microsoft Access 16.0 Object Libray, also für das Office 16, so bekommet man zugriff auf: Access->Application->DBEgnine
Sieht gut aus - im ersten Augenblick. Nichts geht. DBEngine ist eine Eigenschaft von Application und übergibt lediglich einen Object-Zeiger auf IDispatch.Aus? Nein . Das ist wie eine Steckdose die ich unlängst mit StdFont erlebt habe: Einfach das entsprechende IDispatch (Gerät) dranhängen und schon klappt es wieder. Etwas üersetzt heißt es jetzt mom nur, Das MS vergessen hat die DAO KLasse mit zu liefern.
Aber die finet man in den Verweisen!. Da ist eine: Microsoft DAO 3.51 Object Libray. Die DAO 3.6 verweigert das Laden der DLL. Mit DAO 3.51 hat man aber einen Stecker der in DBEngine von Access 16 passt.
Und das funktioniert:
Sub test()
Dim myDAO As DAO.DBEngine
Dim db As DAO.Database
Set myDAO = Access.Application.DBEngine
Set db = myDAO.CreateDatabase("C:\Access_Im_Jahr2021.MDB", dbLangGeneral)
MsgBox db.Name
End Sub Die Datenbank wird sauber erstellt und den Rest kannst Du, glaue ich.
Die DB wird vermutlich eine vom Typ Access 11 sein und damit nicht kompatibel zu früheren
Access-Files.
Mit Gruß
von dem, der sich von niemand reinlabern lässt.
Beitrag wurde zuletzt am 09.02.21 um 14:30:50 editiert. | |
Re: Programmabsturtz beim Aufruf einer ado oder dao mit einer accdb | | | Autor: Hubert Holler | Datum: 09.02.21 16:07 |
| Vielen Dank für die Antwort.
Ich habe Microsoft Access 16.0 Object Library verbunden. Denke das dies so passt.
Muss ich bei einem Computer ohne Access dann eine Datei dort installieren bzw. hinkopieren?
Wie würde das ganze mit ado aussehen. Ist ado besser als dao?
Danke nochmals | |
Re: Programmabsturtz beim Aufruf einer ado oder dao mit einer accdb | | | Autor: Souffleurlos | Datum: 09.02.21 18:44 |
| Hallo,
DAO, ADO, kommt darauf an was man machen will. Nur Datenbank ist DAO sicher gut, aber andere Dinge wie WMI oder ADSI, das ist die Domäne von ADO. Da schwimmen die Grenzen zu Recordset ein wenig, siehe selbst wie ADO Outlook nach Adresseinträgen durchsucht:
Dim adoCommand As Command
Dim adoConnection As Connection
Dim strBase As String, strFilter As String, strAttributes As String
Dim objRootDSE As Object
Dim strDomain As String, strQuery As String, strName As String, strCN As _
String
Dim adoRecordSet As Recordset
Dim adoFld As ADODB.Field
Dim i As Long
Set adoCommand = New Command
Set adoConnection = New Connection
adoConnection.Provider = "ADsDSOObject"
adoConnection.Open "Active Directory Provider"
Set adoCommand.ActiveConnection = adoConnection
Set objRootDSE = GetObject("LDAP://RootDSE")
'On Error Resume Next
strDomain = objRootDSE.Get("defaultNamingContext")
strBase = "<LDAP://" & strDomain & ">"
strFilter = "(&(objectCategory=person)(objectClass=user) (department=" & _
Gesuchte_Stelle & ") )"
strAttributes = "displayName,telephoneNumber,sn"
strQuery = strBase & ";" & strFilter & ";" & strAttributes & ";subtree"
With adoCommand
.CommandText = strQuery
.Properties("Page Size") = 100
.Properties("Timeout") = 30
.Properties("Cache Results") = False
End With
Set adoRecordSet = adoCommand.Execute Wer also bisher meinte: Outlook bekommt nur EMails sieht hier: Nein! Outlook ist eine Datenbank,
es verwaltet ja Benutzer, Orte, Gruppen uvam in ADSI. Das kann DAO so nicht.
Mrke: Der schlimmste Feind für freie Programmierer sind ADMINS!
Beitrag wurde zuletzt am 09.02.21 um 19:03:59 editiert. | |
Re: Programmabsturtz beim Aufruf einer ado oder dao mit einer accdb | | | Autor: Hubert Holler | Datum: 09.02.21 20:32 |
| Danke für die Antwort.
Was müsste ich bei dem Code ändern um auf meine import.accdb zugreifen zu können um dann ein select * from dateiimport durchführen zu können.
Vielen Dank nochmals | |
Re: Programmabsturtz beim Aufruf einer ado oder dao mit einer accdb | | | Autor: Souffleurlos | Datum: 09.02.21 20:48 |
| Hallo, wie mein Tipp oben, setzen der Verweise
anstatt CreateDatabase, jetzt OpenDataBase
Sub test()
Dim myDAO As DAO.DBEngine
Dim db As DAO.Database
Set myDAO = Access.Application.DBEngine
Set db = myDAO.OpenDatabase("Pfad und Name deiner Datenbank")
MsgBox db.Name
End Sub in das DAO-Objektmodell sollte man sich schon einlesen (ist eigentlich enfach) | |
Re: Programmabsturtz beim Aufruf einer ado oder dao mit einer accdb | | | Autor: Hubert Holler | Datum: 09.02.21 21:09 |
| Danke für die Antwort.
Die Funktion mit dao hat auch funktioniert.
Ich habe gefragt wie dies mit ado funktionieren könnte und wie ich dein Bespiel mit ado mit Outlook so ändern könnte, dass ich eine accdb verwenden kann.
Danke und lg | |
Re: Programmabsturtz beim Aufruf einer ado oder dao mit einer accdb | | | Autor: Souffleurlos | Datum: 09.02.21 21:44 |
| Hallo,
das Beispiel mit ADO ist relativ neu. Erst im Frühjahr 2019 lief das noch. Also muss im Umgang mit ADO nichts beachet werden. Einfach Verweis setzen und gut is Dein Verpackungs-Assie wird sich darum kümmern.
Allerdings würde ich nie DAO und ADO als Datenzugriff michen - das beißt sich nämlich hie und da wirklich. | |
Re: Programmabsturtz beim Aufruf einer ado oder dao mit einer accdb | | | Autor: Hubert Holler | Datum: 10.02.21 08:36 |
| Danke für das Beispiel zu Outlook mit ado.
Leider verstehe ich nicht wie ich dies entsprechend ändern kann um auf eine accdb Datenbank zugreifen zu können.
Vielen Dank und LG | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
sevAniGif (VB/VBA)
Anzeigen von animierten GIF-Dateien
Ab sofort lassen sich auch unter VB6 und VBA (Access ab Version 2000) animierte GIF-Grafiken anzeigen und abspielen, die entweder lokal auf dem System oder auf einem Webserver gespeichert sind. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|