Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
976to980
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
976to980
976to980
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

wieder mal Access-Daten nach Excel

wieder mal Access-Daten nach Excel
13.05.2008 08:57:00
Oberschlumpf
Hallo Leute!
Ich möchte gerne ausgewählte Datensätze aus meiner Access-Datenbank in Excel anzeigen, weil ich mich in Excel-VBA viel besser auskenne, als in Access-VBA.
Mit Hilfe dieses Codes schaffe ich schon mal, dass mir Daten aus Access in Excel angezeigt werden, die mit dem jeweiligen Kriterium in Spalte A in Excel übereinstimmen.
(diesen Code fand ich in https://www.herber.de/forum/archiv/632to636/t632809.htm )

Option Explicit
' benötigt im VBA einen Verweis auf M$ DAO x.y Object Library !!!
Const dbfile As String = "d:\daten\excel\beispiele\data\artikel.mdb"
Private Sub cmdRead_Click()
Dim dbs As Database ' Datenbank
Dim qdf As QueryDef ' Datenbankabfrage
Dim rec As Recordset ' Ergebnis der Datenbankabfrage
Dim mysql As String ' ein SQL-Befehl
Dim mynum As Long ' die aktuelle Artikelnummer
Dim i As Long ' Zeilennummer
Set dbs = OpenDatabase(dbfile)
With dbs
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
mynum = CLng(Val(Cells(i, 1).Value))
mysql = "SELECT Preis FROM Artikel WHERE Artikelnummer = " & mynum & ";"
Set qdf = .CreateQueryDef("", mysql)
' Ergebnis der Abfrage holen
Set rec = qdf.OpenRecordset(dbOpenSnapshot)
If Not rec.EOF Then
Cells(i, 2).Value = rec.Fields(0).Value
End If
Next
End With
dbs.Close
End Sub


Aber dieser Code liefert mir jeweils NUR EINEN Datensatz.
Wie muss der Code geändert werden, damit mir ALLE Datensätze aus Access in Excel angezeigt werden, die dem jeweiligen Kriterium in Spalte A entsprechen?
Ich bin fast sicher, im Archiv gibt es eine Lösung. Aber ich weiß nicht, wonach ich suchen muss.
Vielen Dank für eure Hilfe!
Ciao
Thorsten

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: wieder mal Access-Daten nach Excel
13.05.2008 09:34:00
Werner
Hallo Thorsten,
der Code...
mysql = "SELECT Preis FROM Artikel WHERE Artikelnummer = " & mynum & ";"
verknüpft Deine Artikelnummern und kann dementsprechend auch dann nur einen Eintrag finden.
Versuch mal folgendes, indem Du obigen Code wie folgt abänderst:
mysql = "SELECT * FROM Artikel"
Funktioniert es?
Gruß
Werner

Anzeige
AW: wieder mal Access-Daten nach Excel
13.05.2008 10:49:00
Oberschlumpf
Hallo Reinhard, Hallo Werner
Leider konntet ihr beide mir noch nicht helfen.
Die Google-Ergebnisse helfen (noch) nicht, weil mein SQL/Access-Wissen wohl noch zu gering ist.
Die Code-Änderung von Werner brachte als Ergebnis, dass auch nur ein und der selbe Wert angezeigt wurde.
Ich habe meinen Code jetzt so geändert:

Option Explicit
' benötigt im VBA einen Verweis auf M$ DAO x.y Object Library !!!
Const dbfile As String = "d:\daten\excel\beispiele\data\artikel.mdb"
Private Sub cmdRead_Click()
Dim dbs As Database ' Datenbank
Dim qdf As QueryDef ' Datenbankabfrage
Dim rec As Recordset ' Ergebnis der Datenbankabfrage
Dim mysql As String ' ein SQL-Befehl
Dim mynum As Long ' die aktuelle Artikelnummer
Dim i As Long ' Zeilennummer
Set dbs = OpenDatabase(dbfile)
With dbs
Set rec = dbs.OpenRecordset("SELECT Preis FROM Artikel;", dbOpenDynaset)
rec.MoveFirst 'erster Datensatz
i = 1
While Not rec.EOF 'so lange durchlaufen, bis Ende von Access-DB erreicht ist
mynum = Cells(1, 1).Value
mysql = "SELECT Preis FROM Artikel WHERE Artikelnummer = " & mynum & ";"
Set qdf = .CreateQueryDef("", mysql)
' Ergebnis der Abfrage holen
Set rec = qdf.OpenRecordset(dbOpenSnapshot)
If Not rec.EOF Then
Cells(i, 2).Value = rec.Fields(0).Value
i = i + 1
End If
rec.MoveNext 'nächster Datensatz
Wend
End With
dbs.Close
End Sub


So, denke ich eigentlich, sollte die Access-Datenbank vom ersten bis zum letzten Datensatz durchlaufen werden, und immer dann einen Datensatz in Excel übertragen, wenn Artikelnummer dem Wert von mynum entspricht.
Aber leider funktioniert das nur in so fern, dass auch hier immer nur ein und der selbe Datensatz angezeigt wird.
Und das Ende wird nicht erreicht, wenn der letzte Access-Datensatz eingelesen wird, sondern wenn die letzte Zeile in Excel erreicht wird - danach steigt der Code mit Fehler aus, da es ja keine weiteren Zeilen in Excel XP gibt...mist.
Könnt ihr, oder jemand anderes mir vielleicht so helfen, dass ihr mir den richtigen Code zeigt, mit dem halt die Access-DB durchlaufen und nur die Datensätze angezeigt werden, die ich mit mynum suche?
Vielen Dank!
Ciao
Thorsten

Anzeige
AW: wieder mal Access-Daten nach Excel
13.05.2008 14:58:00
Oberschlumpf
Hi
Hmm..schade, weiß niemand etwas?
Danke + Ciao
Thorsten

AW: wieder mal Access-Daten nach Excel
13.05.2008 23:44:35
Reinhard
Hallo Thorsten,
ich weiß nix zu Access, habe aber gerade bei jmdn angefragt aus einem anderen Forum, der zwar kein VBA kann aber dafür sehr gut VB :-) und sich auch mit SQL auskennt, mal schauen ob er dir helfen kann.
Warten wirs ab was kommt.
Grundsätzlich verstehe ich deine problematik nicht, genauer dass es dafür keine Lösung gibt, du hast da in Access eine oder mehr Spalten, ist ja wurscht, davon willste nur die Zellen, Zeilen haben wo irgendwo 4711 steht, das ist doch grad die Problematik für was man eine schnelle Datenbank braucht, und diese Auflistung nach Excel zu überführen muß doch schon tausend mal gelaufen sein.
Gruß
Reinhard

Anzeige
AW: wieder mal Access-Daten nach Excel
14.05.2008 07:28:00
Oberschlumpf
Hi Reinhard
Jep, genau so ist es.
Ich hab eine DB mit ca. 18000 Datensätzen (wird noch mehr).
Und ich möchte nix weiter, als eben in Excel eine Auslesung aller Datensätze, die halt mit einem oder mehreren Kriterien übereinstimmen.
Und ich dachte eigtl auch, dass mir "Tante Google" :-) weiterhelfen kann, zumal ich meine, genau so etwas schon mal hier im Herber-Forum gelesen zu haben - aber leider find ich es nicht mehr.
Schade, dass mir keiner helfen kann/will.
Vielleicht hat ja doch noch jemand Erbarmen :-)
Ciao
Thorsten

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige