MySQL Abfrage ausführen und als xls in bestimmten Ordner ablegen
Hallo,
ist es möglich eine MySQL Abfrage auszuführen und als xls in bestimmten Ordner abzulegen??
Keine Ahnung wie ich da vorgehen muss.
Mein SQL Statement ist fertig, bis jetzt führ ich es aus, speicher das Ergebnis dann als xls in einen bestimmten Ordner ab.
Kann man dies automatisieren?
Gruß
ist es möglich eine MySQL Abfrage auszuführen und als xls in bestimmten Ordner abzulegen??
Keine Ahnung wie ich da vorgehen muss.
Mein SQL Statement ist fertig, bis jetzt führ ich es aus, speicher das Ergebnis dann als xls in einen bestimmten Ordner ab.
Kann man dies automatisieren?
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 110033
Url: https://administrator.de/forum/mysql-abfrage-ausfuehren-und-als-xls-in-bestimmten-ordner-ablegen-110033.html
Ausgedruckt am: 25.12.2024 um 01:12 Uhr
25 Kommentare
Neuester Kommentar
Hallo das ganze ist eig. nicht schwer, folgendes Script macht schon soetwas:
Also ab Zeile 59er kommt der Teil mit dem einfügen ins Excel.
Wenn das ganze dann richtig funktioniert brauchst nur mehr die SaveAs funktion aufrufen das ganze speichern lassen und
objExcel.Visible auf false stellen dann siehst net mal was vom Excel dabei.
grüße
Option Explicit
'---- CursorTypeEnum Values ----
Const adOpenForwardOnly = 0
' Const adOpenKeyset = 1
' Const adOpenDynamic = 2
' Const adOpenStatic = 3
'---- LockTypeEnum Values ----
Const adLockReadOnly = 1
' Const adLockPessimistic = 2
' Const adLockOptimistic = 3
' Const adLockBatchOptimistic = 4
'---- CursorLocationEnum Values ----
' Const adUseServer = 2
Const adUseClient = 3
'---- ConnectModeEnum Values ----
' Const adModeUnknown = 0
Const adModeRead = 1
' Const adModeWrite = 2
' Const adModeReadWrite = 3
' Const adModeShareDenyRead = 4
' Const adModeShareDenyWrite = 8
' Const adModeShareExclusive = &Hc
' Const adModeShareDenyNone = &H10
' Const adModeRecursive = &H400000
Dim objExcel
Dim Conn, RS
Dim cellCount, rowCount
cellCount = 1
rowCount = 1
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
Set Conn = CreateObject("ADODB.Connection")
Conn.Provider = "MSDASQL"
Conn.Mode = adModeRead
Conn.CursorLocation = adUseClient
Conn.Open "DRIVER={MySQL ODBC 5.1 Driver};" & _
"DATABASE=database;" & _
"SERVER=192.168.x.x;", _
"user", "password"
Set RS = CreateObject("ADODB.Recordset")
RS.CursorLocation = adUseClient
RS.Source = "Select * from tools where id=120;"
Set RS.ActiveConnection = Conn
RS.CursorType = adOpenForwardOnly
RS.LockType = adLockReadOnly
RS.Open
Do While Not RS.EOF
objExcel.Cells(cellCount, rowCount).Value = RS.Fields.Item("label").Value
objExcel.Cells(cellCount, rowCount+1).Value = RS.Fields.Item("dimension").Value
cellCount = cellCount + 1
RS.MoveNext
Loop
RS.Close
Set RS = Nothing
Conn.Close
Set Conn = Nothing
Also ab Zeile 59er kommt der Teil mit dem einfügen ins Excel.
Wenn das ganze dann richtig funktioniert brauchst nur mehr die SaveAs funktion aufrufen das ganze speichern lassen und
objExcel.Visible auf false stellen dann siehst net mal was vom Excel dabei.
grüße
Also das abspeichern erfolgt als *.vbs
Das angeben der spalten wird dir nicht erspart bleiben, glaube weniger das es da einen Automodus für gibt.
Den Dateinamen musst du bei deiner Speicherfunktion vom objExcel hinterlegen welche nocht nicht da ist.
objExcel.Save "C:\ActiveDirectoryVBScripts\test.xls" <-- das zum ende hin pappen und ein
objExcel.Quit oder so damit sich das excel auch wieder schliest.
Das angeben der spalten wird dir nicht erspart bleiben, glaube weniger das es da einen Automodus für gibt.
Den Dateinamen musst du bei deiner Speicherfunktion vom objExcel hinterlegen welche nocht nicht da ist.
objExcel.Save "C:\ActiveDirectoryVBScripts\test.xls" <-- das zum ende hin pappen und ein
objExcel.Quit oder so damit sich das excel auch wieder schliest.
nur mal so ne Frage machst du dir auch Gedanken über das Script oder schaues es nur an und wunderst dich das es nicht geht.
hier bei RS.Fields.Item("label").Value bezieht sich das label auf eine column in meiner tabelle.
d.h. das musst du dann anpassen gehen an deine Tabelle und deine Gegebenheiten.
Für jedes Feld das du brauchst wirst du so eine Zeile schreiben müssen.
Ansonsten gib her alle Daten die du hast und sag was haben willst dann bau ich das auf dei schnelle um
objExcel.Cells(cellCount, rowCount).Value = RS.Fields.Item("label").Value
objExcel.Cells(cellCount, rowCount+1).Value = RS.Fields.Item("dimension").Value
hier bei RS.Fields.Item("label").Value bezieht sich das label auf eine column in meiner tabelle.
d.h. das musst du dann anpassen gehen an deine Tabelle und deine Gegebenheiten.
Für jedes Feld das du brauchst wirst du so eine Zeile schreiben müssen.
Ansonsten gib her alle Daten die du hast und sag was haben willst dann bau ich das auf dei schnelle um
Sodala
Option Explicit
'---- CursorTypeEnum Values ----
Const adOpenForwardOnly = 0
' Const adOpenKeyset = 1
' Const adOpenDynamic = 2
' Const adOpenStatic = 3
'---- LockTypeEnum Values ----
Const adLockReadOnly = 1
' Const adLockPessimistic = 2
' Const adLockOptimistic = 3
' Const adLockBatchOptimistic = 4
'---- CursorLocationEnum Values ----
' Const adUseServer = 2
Const adUseClient = 3
'---- ConnectModeEnum Values ----
' Const adModeUnknown = 0
Const adModeRead = 1
' Const adModeWrite = 2
' Const adModeReadWrite = 3
' Const adModeShareDenyRead = 4
' Const adModeShareDenyWrite = 8
' Const adModeShareExclusive = &Hc
' Const adModeShareDenyNone = &H10
' Const adModeRecursive = &H400000
Dim objExcel
Dim objSheet
Dim Conn, RS
Dim rowCount, i, headerSet
rowCount = 1
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True
objExcel.Workbooks.Add
'Angabe des Tabellenblattes
Set objSheet = objExcel.ActiveWorkbook.WorkSheets(2)
Set Conn = CreateObject("ADODB.Connection")
Conn.Provider = "MSDASQL"
Conn.Mode = adModeRead
Conn.CursorLocation = adUseClient
Conn.Open "DRIVER={MySQL ODBC 5.1 Driver};" & _
"DATABASE=database;" & _
"SERVER=192.168.x.x;", _
"user", "passwd"
Set RS = CreateObject("ADODB.Recordset")
RS.CursorLocation = adUseClient
RS.Source = "Select * from tools where id=120 OR id=122;"
Set RS.ActiveConnection = Conn
RS.CursorType = adOpenForwardOnly
RS.LockType = adLockReadOnly
RS.Open
Do While Not RS.EOF
'Die Spalenüberschriften einfügen
If( headerSet = 0 ) Then
For i = 0 to RS.Fields.Count - 1
objSheet.Cells(rowCount, i+1).Value = RS.Fields.Item(i).Name
Next
headerSet = 1
End If
'Die dazugehörigen Werte einfügen
For i = 0 to RS.Fields.Count -1
objSheet.Cells(rowCount+1, i+1).Value = RS.Fields.Item(i).Value
Next
rowCount = rowCount + 1
RS.MoveNext
Loop
RS.Close
Set RS = Nothing
Conn.Close
Set Conn = Nothing
'Speichern und überschreiben
objExcel.Application.DisplayAlerts = false
objExcel.ActiveWorkbook.SaveAs "E:\vbs-sql-xls\test.xls"
objExcel.ActiveWorkbook.Close
objExcel.Application.Quit