標題:
[發問]
請問如何將SQL資料表中某一欄資料複製到EXCEL呢?
[打印本頁]
作者:
algoji3ji3
時間:
2018-10-30 19:55
標題:
請問如何將SQL資料表中某一欄資料複製到EXCEL呢?
本帖最後由 algoji3ji3 於 2018-10-30 19:57 編輯
各位大大請問CopyFromRecordset rs會將整個資料表輸出到EXCEL上,但是如果我只要其中一整欄資料該怎麼改呢?
Private Sub CommandButton2_Click()
'定義部份
Dim cn As ADODB.Connection 'Excel連接
Dim rs As ADODB.Recordset '得來的結果,會放到立這個rs的地方.
Dim strDataSrcXlsPath As String '數據庫EXCEL位置
Dim strQuery As String '用作拿數據的SQL
Dim strStartlocation As String '定義得來數據,放到那一個位置.
'I) 以下建立數據庫連接
strDataSrcXlsPath = ThisWorkbook.Path & "\資料.xlsx" '定立數據庫EXCEL位置
Set cn = New ADODB.Connection
With cn
'確定連接所用的Library
.Provider = "Microsoft.ACE.OLEDB.12.0"
.CursorLocation = adUseClient
'把連接指向指定Excel
'xtended properties為excel的版本, 通常為12 或 8,
'12為2007Excel檔(如XLSX,XLSM). 8可相容1997-2003等excel(XLS)
.ConnectionString = "Data Source=" & strDataSrcXlsPath & _
";Extended Properties=Excel 12.0;"
'開始連接,這個時候ACE會打開excel
.Open
End With
'II) 以下運行SQL和回傳數據
'拿出一行資料,所用SQL架構大約為
'SELECT ... FROM ... WHERE
'
'SELECT 上的 * 用作指明拿出所有表上的欄位
'TOP 50 是指抽出頭50列數據
'
'FROM 從DATASHEET工作表抽出
'strQuery = "SELECT top 10 * FROM [總表$]"
strQuery = "SELECT 站別分析,類別,月份,日期,SUM(產出數) AS 總數 " & _
"FROM [總表$] " & _
"where 日期 between #2018/9/1# and #2018/9/30# " & _
"GROUP BY 站別分析,類別,月份,日期 HAVING 類別='305AS'" & _
"ORDER BY 站別分析,日期"
'strQuery = "SELECT 日期 " & _
"FROM [總表$] " & _
"where 日期 between #2018/9/1# and #2018/9/30# " 'HAVING 類別='305AS'"
Set rs = cn.Execute(strQuery) '執行SQL
'III) 把數據抄至所需的位置
strStartlocation = "A1"
'III-1 把欄位名稱一個一地拿出
'rs.Fields.Count : 欄位數數
'rs.Fields(n).Name : 欄名
Dim lngColCounter As Long
i = -1
For lngColCounter = 0 To rs.Fields.Count - 1
Range(strStartlocation).Offset(0, lngColCounter) = rs.Fields(lngColCounter).Name
Next lngColCounter
'III-2 把數據庫資料列表拿出
ActiveSheet.Range(strStartlocation).Offset(1, 0).CopyFromRecordset rs
'IV) 關掉/清理連接
cn.Close
Set cn = Nothing
Set rs = Nothing
End Sub
複製代碼
[attach]29604[/attach]
作者:
milk30320
時間:
2018-10-31 09:01
回復
1#
algoji3ji3
可以在資料庫語法那邊select你要的特定欄位,在全部丟到excel上面!
作者:
algoji3ji3
時間:
2018-11-1 19:49
大大我換個問法~
下面這段指令事將整個數據庫放在"A1"的位置
ActiveSheet.Range(strStartlocation).Offset(1, 0).CopyFromRecordset rs
那如果我要分別將數據庫中的各"整欄"分別抽出放到各別指定位置呢?
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)