註冊
登錄
首頁
論壇版規
禁止列表
說明
地圖
數位書香
私人消息 (0)
公共消息 (0)
論壇任務 (0)
系統消息 (0)
好友消息 (0)
帖子消息 (0)
麻辣家族討論版版
»
VB 與 VB.Net
» 請問如何將SQL資料表中某一欄資料複製到EXCEL呢?
返回列表
下一主題
上一主題
發帖
[發問]
請問如何將SQL資料表中某一欄資料複製到EXCEL呢?
algoji3ji3
發短消息
加為好友
algoji3ji3
當前離線
UID
23594
帖子
11
主題
5
精華
0
積分
16
金錢
16
點名
0
作業系統
win7
軟體版本
sp3
閱讀權限
10
在線時間
24 小時
註冊時間
2016-2-9
最後登錄
2020-2-21
小學生
帖子
11
主題
5
精華
0
積分
16
點名
0
作業系統
win7
軟體版本
sp3
閱讀權限
10
註冊時間
2016-2-9
最後登錄
2020-2-21
1
#
跳轉到
»
倒序看帖
打印
字體大小:
t
T
發表於 2018-10-30 19:55
|
只看該作者
[發問]
請問如何將SQL資料表中某一欄資料複製到EXCEL呢?
本帖最後由 algoji3ji3 於 2018-10-30 19:57 編輯
各位大大請問CopyFromRecordset rs會將整個資料表輸出到EXCEL上,但是如果我只要其中一整欄資料該怎麼改呢?
Private Sub CommandButton2_Click()
'定義部份
Dim cn As
ADO
DB.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
複製
代碼
指定欄匯出.rar
(66.69 KB)
範例
下載次數: 0
2018-10-30 19:54
樓主熱帖
請問VB6如何連結新版的ACCESS呢?
VBA可以測試網路有連線嗎?
請問控制access內的資料修改與刪除怎麼寫呢
請問EXCELVBA還可以連線FTP嗎
收藏
分享
milk30320
發短消息
加為好友
milk30320
當前離線
UID
32653
帖子
6
主題
1
精華
0
積分
50
金錢
50
點名
0
作業系統
WIN10
軟體版本
office2007
閱讀權限
20
性別
男
來自
新竹
在線時間
24 小時
註冊時間
2018-10-15
最後登錄
2019-2-18
中學生
帖子
6
主題
1
精華
0
積分
50
點名
0
作業系統
WIN10
軟體版本
office2007
閱讀權限
20
性別
男
來自
新竹
註冊時間
2018-10-15
最後登錄
2019-2-18
2
#
發表於 2018-10-31 09:01
|
只看該作者
回復
1#
algoji3ji3
可以在資料庫語法那邊select你要的特定欄位,在全部丟到excel上面!
As you sow, so shall you reap.
TOP
algoji3ji3
發短消息
加為好友
algoji3ji3
當前離線
UID
23594
帖子
11
主題
5
精華
0
積分
16
金錢
16
點名
0
作業系統
win7
軟體版本
sp3
閱讀權限
10
在線時間
24 小時
註冊時間
2016-2-9
最後登錄
2020-2-21
小學生
帖子
11
主題
5
精華
0
積分
16
點名
0
作業系統
win7
軟體版本
sp3
閱讀權限
10
註冊時間
2016-2-9
最後登錄
2020-2-21
3
#
發表於 2018-11-1 19:49
|
只看該作者
大大我換個問法~
下面這段指令事將整個數據庫放在"A1"的位置
ActiveSheet.Range(strStartlocation).Offset(1, 0).CopyFromRecordset rs
那如果我要分別將數據庫中的各"整欄"分別抽出放到各別指定位置呢?
TOP
靜思自在 :
自己害自己,莫過於亂發脾氣。
返回列表
下一主題
上一主題
Office不分區
Excel程式區
EXCEL專屬討論區
Excelㄧ般區
Excel程式區
進階應用專區
OFFICE 系列
Word
PowerPoint
Access
Office不分區
程式語言
VB 與 VB.Net
C 與 C#
Java 與 J#
程式設計不分區
資料庫
ORACLE
My SQL
MS SQL
網頁設計
ASP 與 ASP.NET
PHP
PHP+MySQL 入門實作
JavaScript
FLASH / ActionScript
HTM/ HTML/ CSS
網頁設計不分區
電腦與作業系統
電腦各種硬體討論
一般電腦軟體討論
論壇事務
管理公告
投訴反映
新手測試
愛 ‧ 生活
公益佈告欄
生活與感動
[收藏此主題]
[關注此主題的新回復]
[通過 QQ、MSN 分享給朋友]
申請友情鏈接
Facebook粉絲