Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

VBA und Access

Empfohlene Antworten

Veröffentlicht

Ich bekomme aus Excel heraus keine Verbindung zu meiner Accessdatenbank (Laufzeitfehler 3706 Provider kann nicht gefunden werden).

Ich will aus Excel heraus per VBA SQL-Abfragen an meine Accessdatenbank schicken. Was muss ich alles für Verweise setzen und ODBC-Treiber installieren, damit das funktioniert?


Private Sub CommandButton1_Click()

   tabelle = "tbl_Buchung"

   pfad = "C:\Project\kasse.mdb"


   Set con = New ADODB.Connection

   con.Open "PROVIDER=Microsoft.Jet.OLEDB.3.51;" & "Source=" & pfad


   Set rs = New ADODB.Recordset

   rs.CursorLocation = adUseClient

   rs.Open "select * from " + tabelle + "", con, adOpenStatic, adLockBatchOptimistic


   Set rsschema = con.OpenSchema(adSchemaTables)


       Do Until rsschema.EOF

           Combo1.AddItem rsschema

           Combo1.Text = Combo1.List

           rsschema.MoveNext

       Loop

   rsschema.Close

End Sub

WindowsXP SP1

Office 97

Habe mich im Internet schon dumm und dusselig gesucht(2 Tage). Leider fand ich einfach keine sauber Beschreibung, welche Verweise gesetzt werden müssen. :(

Die Qual der Wal.

#  Access


    *  ODBC



          o  Standard Security:

            "Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;Uid=Admin;Pwd=;"



          o  Workgroup:

            "Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;SystemDB=C:\mydatabase.mdw;"



          o  Exclusive:

            "Driver={Microsoft Access Driver (*.mdb)};Dbq=C:\mydatabase.mdb;Exclusive=1;Uid=admin;Pwd="



    *  OLE DB, OleDbConnection (.NET)



          o  Standard security:

            "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;User Id=admin;Password=;"



          o  Workgroup (system database):

            "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;Jet OLEDB:System Database=system.mdw;"



          o  With password:

            "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;Jet OLEDB:Database Password=MyDbPassword;" 
Und noch was..
        Set Conn = New ADODB.Connection                      ' Conn wird als neue ADO Datenbank Verbindung anerkannt

        With Conn


            .Provider = "Microsoft Jet 4.0 OLE DB Provider"     ' Datenbankformat: Access 2000


            .ConnectionString = "Data Source=" & strAppPath & DBName & "" ' Datenquelle

            .Properties("Jet OLEDB:Database Password") = DBpw

            .Open                                               ' Verbindung öffnen


        End With


        Set RecSet = New Recordset

        With RecSet


            .ActiveConnection = Conn

            .CursorLocation = adUseClient

            .Source = "SELECT * FROM " & TabellenName & " WHERE " & SpaltenName & " <> """" AND " & SpaltenName & " IS NOT NULL"

            .Open


        End With

Bei: "Set RecSet = New Recordset" meckert der Kompiler mit: Unzulässige Verwendung des Schlüsselworts "New"

Warum? :confused:

Ok, als ich folgendes probiert habe, geht es nun:


Public RecSet As ADODB.Recordset

...

Set RecSet = New ADODB.Recordset

Allerdings habe ich nun leichte Probleme, an die Daten heranzukommen. Wie lese ich die einzelnen Tabellenzeilen nun am cleversten aus? Kann mir da bitte einer helfen?

Hier ein kleines Beispiel wie man den Inhalt des RecordSet in ein ListView ein fügt. Du mußt es nur an dein Excel anpassen.

        For i = 1 To RecSet.Fields.Count - 1


            lstvDaten.ColumnHeaders.Add , , RecSet.Fields(i).Name, 1500


        Next i


        While Not RecSet.EOF


            Set itmx = lstvDaten.ListItems.Add


            For j = 1 To RecSet.Fields.Count - 1


                If Not IsNull(RecSet.Fields(j)) Then


                    itmx.SubItems(j) = RecSet.Fields(j)


                Else


                    itmx.SubItems(j) = ""


                End If


            Next j


            RecSet.MoveNext


        Wend

In der For - Schleife werden die Spaltennamen ausgelesen und zugewiesen.

Und in der While - Schleife werden die Daten zu den passenden Spalten zugewiesen.

In der zweiten For - Schleife wird geprüft ob Daten vorhanden sind und nicht "nichts" drin ist und falls doch ein " " eingefügt.

Ich hoffe es hilft dir ein bischen weiter.

Ja, danke. Sehr schön. :)

Bin nun mit dem Projekt gut voran gekommen.

btw: Ist es denn in Excel nicht möglich, ein Kalendersteuerelement einzufügen? Ich bekomme das einfach nicht hin. Auf dem Arbeitsblatt selbst nicht, und auch nicht in der VBA-Entwicklungsumgebung z.B. auf einer Form. :(

Thema Steuerelement

Habe es nun hinbekommen. Man bekommt die zusätzlichen Steuerelemente nicht wie gewöhnlich über den "zusätzliche Steuerelemente-Button" in der Werkzeugsammlung, sondern über die Menüleiste: Extras --> zusätzliche Steuerelemente.

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.