Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Per SQL.REQUEST Daten aus Access auslesen?

Forumthread: Per SQL.REQUEST Daten aus Access auslesen?

Per SQL.REQUEST Daten aus Access auslesen?
05.08.2002 08:24:18
Michael Gehling
Ich muss aus einer Access-Datenbank Daten auslesen, die direkt in ein Excel Dokument übernommen werden sollen, und immer aktuell sein sollen. Da sich der Pfad der Datenbank ändern kann, sollte der Pfad innerhalb des Excel-Dokuments geändert werden können. Meines Wissens lässt sich das nur mit dem Befehl SQL.REQUEST realisieren, aber ich habe es nicht geschafft, ihn korrekt einzusetzen...
Ich habe auch schon die Xlodbc.xla geladen, aber es steht immer nur #NV da.
Wenn jemand ein funktionierendes Beispiel posten würde, wäre ich sehr dankbar!
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Per SQL.REQUEST Daten aus Access auslesen?
05.08.2002 08:40:38
Michael Scheffler
Hallo,

versuch es doch mal mit DAO z.B.:
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q240401&

Gruß

Micha

Re: Per SQL.REQUEST Daten aus Access auslesen?
05.08.2002 09:12:15
Micha
hi,

hier sind 3 beispiele wie ich eine datenbank-abfrage hingekriegt habe: per query, dao und ado (die entsprechenden verweise/bibliotheken müssen eingebunden werden).
du kannst die öffnen-ereignisroutine deines excel-dokuments überschreiben, dass er automatisch bei jedem öffnen der datei erst den pfad deiner datenbank abfrägt und danach eine neue abfrage an die datenbank ausführt (und evtl. noch die daten weiterverarbeitet/einpflegt).
leider hab ich noch rausgefunden wie man schreibend zugreift, d.h. mit sql-insert oder -update-funktionen haben so nicht funktioniert. wenn du das weisst, gib bescheid ;-)
mfg
*****************************************************************
Sub dbaccessquery()
Dim tbmycro As Worksheet

Application.DisplayAlerts = False
Excel.Workbooks.Open ("O:\berichte\projekte\ul-makro\mytable.xls")
ActiveWindow.WindowState = xlMinimized
Set tbmycro = Workbooks("mytable.xls").Worksheets(1)
tbmycro.Activate

With ActiveSheet.QueryTables.Add(Connection:=Array("ODBC;DSN=MS Access 97-Datenbank;DBQ=H:\DATA\Eigene Dateien\access\rmdbtest.mdb;"), Destination:=Range("A1"))
.Sql = "SELECT * FROM `H:\Data\Eigene Dateien\access\rmdbtest`.tbltime tbltime WHERE time>100 ORDER BY time"
.FieldNames = True
.RefreshStyle = xlInsertDeleteCells
.RowNumbers = True
.FillAdjacentFormulas = False
.RefreshOnFileOpen = True
.HasAutoFormat = True
.BackgroundQuery = True
.Refresh BackgroundQuery:=True
.Recordset = DBEngine.OpenDatabase("h:\data\eigene dateien\access\rmdbtest.mdb").OpenRecordset("tbltime")
.Refresh
End With

Excel.Workbooks("mytable.xls").Close True
End Sub
*****************************************************************
Private Const Pfad = "h:\data\eigene dateien\access\dbtest.mdb"

Sub dbaccessDAO()
Dim ws As DAO.Workspace
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim i%
Dim app As Access.Application

Set app = CreateObject("Access.Application")
app.OpenCurrentDatabase (Pfad)
Set db = app.CurrentDb

strSQL = "Select * from tbltime where name = 'hans'"
Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot)
If rs.RecordCount = 0 Then
MsgBox "Es wurden keine Entsprechungen gefunden."
Exit Sub
End If
ActiveSheet.Range("A1") = "name"
ActiveSheet.Range("B1") = "date"
ActiveSheet.Range("C1") = "client"
ActiveSheet.Range("D1") = "vbez"
ActiveSheet.Range("E1") = "ltype"
ActiveSheet.Range("F1") = "time"
ActiveSheet.Range("G1") = "comment"
ActiveSheet.Range("H1") = "recID"
i = 2
Do While Not rs.EOF
ActiveSheet.Range("A" & i) = rs.Fields("name")
ActiveSheet.Range("B" & i) = rs.Fields("date")
ActiveSheet.Range("C" & i) = rs.Fields("client")
ActiveSheet.Range("D" & i) = rs.Fields("vbez")
ActiveSheet.Range("E" & i) = rs.Fields("ltype")
ActiveSheet.Range("F" & i) = rs.Fields("time")
ActiveSheet.Range("G" & i) = rs.Fields("comment")
ActiveSheet.Range("H" & i) = rs.Fields("recID")
i = i + 1
rs.MoveNext
Loop
rs.Close
db.Close
Set rs = Nothing
Set ws = Nothing
Set db = Nothing
app.Quit acQuitSaveNone
End Sub
*****************************************************************
Private Const Pfad = "h:\data\eigene dateien\access\dbtest.mdb"

Sub dbaccessADO()
Dim oConn As ADODB.Connection
Dim oRS As ADODB.Recordset

Set oConn = CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
Pfad & ";Persist Security Info=False"
Set oRS = oConn.Execute("SELECT * FROM tbltime")
ActiveSheet.Range("A2") = oRS.GetString(adClipString, -1, vbTab)
Set oConn = Nothing
Set oRS = Nothing
End Sub

Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige