Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
144to148
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
144to148
144to148
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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!

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

337 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige