Von Excel aus ACCESS/SQL steuern



Excel-Version: 9.0 (Office 2000)
nach unten

Betrifft: Von Excel aus ACCESS/SQL steuern
von: Stefan
Geschrieben am: 17.05.2002 - 11:12:55

Hallo,

habe folgende Problemstellung. Ich möchte aus einem aktuellen Excel-Fenster heraus ACCESS aufrufen (connection aufbauen usw. kenn ich schon alles - das ist nicht das Problem) und dort in einer Schleife eine Abfrage aus verschiedenen Tabellen einer Datenbank ausführen lassen. Die Abfrage habe ich als SQL-Statement bereits. Die Frage ist nun:

(1) Wie kann ich das in einen VBA-Code reinkopieren? Wie geht das genau. Bin mit der Hilfe dazu leider nicht zurecktgekommen.

(2) Kann ich das Abfrageergebnis direkt in eine neue Excel-Tabelle schreiben lassen oder ist es besser/einfacher, zunächst in Access eine Tabellenerstellungsabfrage zu definieren (und diese via SQL zu verwenden) und dann diese erstellte Tabelle in mein Excel-Sheet zu importieren?

Wäre super, wenn mir da jemand weiterhelfen könnte!

Viele Grüsse

Stefa

nach oben   nach unten

Re: Von Excel aus ACCESS/SQL steuern
von: Michael Scheffler
Geschrieben am: 17.05.2002 - 11:45:19

Hallo,

schau Dir mal die Hilfe zu ADO an, dort sind ein paar Beipiele aufgelistet. So ähnlich wie hier unten.

1.


Dim cnn As ADODB.Connection
Dim varFeld As Variant
Dim strSQLCommand As String
Dim strPath as String

Set cnn = New ADODB.Connection
        strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
               "Data Source=" & strPath & ";"
        If strPath Like "*.xls" Then strConn = strConn & "Extended Properties=""Excel 8.0;HDR=Yes;"";"
        cnn.ConnectionString = strConn
        cnn.Open

            rs.Open strSQLCommand, cnnGeom, adOpenStatic, adLockBatchOptimistic
            If Not rs.EOF Then
                varFeld = rs.GetRows   ' Ein ganzes Feld raussschreiben
                rs.MoveFirst
                While Not rs.EOF
                       ' Tabelle.Value = rs.Fields(0)

                    rs.MoveNext
                Wend  
            End If
            rs.Close

cnn.Close

Set cnn = Nothing
Set rs = Nothing

2. Du siehst, Du kannst zeilenweise Dein recordset abfragen oder ein ganzes Feld ausholen.

Gruß

Micha


nach oben   nach unten

Re: Von Excel aus ACCESS/SQL steuern
von: Stefan
Geschrieben am: 17.05.2002 - 12:03:03

Hallo Micha,

vielen Dank für die Hilfe. Hab das mal so probiert:

Dim strCRSPName As String

strCRSPName = "S:\CRSP-MFDB-200109.MDB"

Dim strSQLCommand As String
Dim CRSPtabTEST As New ADODB.Recordset

CRSPVerbindung.Provider = "Microsoft.Jet.OLEDB.4.0"
CRSPVerbindung.Open ("S:\CRSP-MFDB-200109.MDB")
Set CRSPtabTEST.ActiveConnection = CRSPVerbindung
CRSPtabTEST.CursorType = adOpenKeyset
strSQLCommand = "SELECT * FROM ZCRSP00"

rs.Open strSQLCommand, CRSPVerbindung, adOpenStatic, adLockBatchOptimistic

CRSPVerbindung.Close
Set CRSPVerbindung = Nothing

End Sub

Leider kommt in der Zeile mit rs.Open dann eine Fehlermeldung (Objekt erforderlich). Was hab ich da falsch gemacht - und wofür steht egtl. rs. ?

Gruss
Stefan

nach oben   nach unten

Re: Von Excel aus ACCESS/SQL steuern
von: Michael Scheffler
Geschrieben am: 17.05.2002 - 13:02:53

Hallo,

ich schätze, dass Du "CRSPVerbindung" mal noch als "ADODB.Connection" definieren solltest.

Gruß

Micha


nach oben   nach unten

Re: Von Excel aus ACCESS/SQL steuern
von: Stefan
Geschrieben am: 17.05.2002 - 13:13:44

Hab ich so gemacht (s.u.) - funktioniert aber leider immer noch nicht.

Dim CRSPVerbindung As New ADODB.Connection

Der link müsste stimmen und es gibt auch eine Tabelle die ZCRSP00 heisst - oder braucht man da noch eine Endung?


nach oben   nach unten

Re: Von Excel aus ACCESS/SQL steuern
von: Michaeöl Scheffler
Geschrieben am: 17.05.2002 - 13:50:44

Hallo,

deann schreib mal bitte dei Tabellennamen in ``, quotiert.

Gruß

Micha


nach oben   nach unten

Re: Von Excel aus ACCESS/SQL steuern
von: stefan
Geschrieben am: 17.05.2002 - 14:01:30

SUPER - danke - hat funktioniert.

Jetzt hab ich aber schon das nächste Problem. Nach dem Befehl

CRSPtabTEST.Open strSQLCommand, CRSPVerbindung, adOpenStatic, adLockBatchOptimistic

ist jetzt wohl das Zeugs in irgendeinem Zwischenspeicher, oder?
Wie kann die die entsprechenden Datensätze nun tatsächlich in eine Excel-Tabelle reinschreiben (und zwar einfach komplett untereinander)?


nach oben   nach unten

Re: Von Excel aus ACCESS/SQL steuern
von: Michael Scheffler
Geschrieben am: 17.05.2002 - 15:03:03

Hallo,

klar - im Recordset ist es drin, woe vorhin geschrieben:


rs.MoveFirst
While not rs.EOF
' z.B. Cells...Value = rs.Fields(0)
rs.MoveNext
Wend


 nach oben

Beiträge aus den Excel-Beispielen zum Thema "Von Excel aus ACCESS/SQL steuern"