vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Mails senden, abrufen und decodieren - ganz easy ;-)  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Programmabsturtz 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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programmabsturtz beim Aufruf einer ado oder dao mit einer accdb 
Autor: ModeratorDieter (Moderator)
Datum: 08.02.21 18:53

Was heißt: das Programm stürzt ab?
Gibt es hierzu eine Fehlermeldung?
Hast du eine Fehlerbehandlung eingebaut?

_________________________
Professionelle Entwicklerkomponenten
www.tools4vb.de

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Programmabsturtz beim Aufruf einer ado oder dao mit einer accdb 
Autor: Hubert Holler
Datum: 08.02.21 22:03

Hallo!
Hier ein Beispielprojekt: https://www.dropbox.com/s/xajgb38hbyr6weg/ado.zip?dl=0
Wenn man die testen Funktion aufruft stürzt das Programm ab
lg
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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:

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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)
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

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

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

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