請教有關ADODB.STREAM和Microsoft.XMLHTTP的用法
- 帖子
- 79
- 主題
- 2
- 精華
- 0
- 積分
- 193
- 點名
- 0
- 作業系統
- Winwos 7 64 bits
- 軟體版本
- Excel 2003/2007
- 閱讀權限
- 20
- 性別
- 男
- 來自
- TAIPEI
- 註冊時間
- 2010-8-25
- 最後登錄
- 2019-9-20
|
#10 的寫法,只能省一個步驟...
讀取資料 > 儲存成CSV > (可省略)讀取CSV(可省略) > CSV直接寫入ACCESS > 刪除CSV的過程[code] |
|
diabo
|
|
|
|
|
- 帖子
- 79
- 主題
- 2
- 精華
- 0
- 積分
- 193
- 點名
- 0
- 作業系統
- Winwos 7 64 bits
- 軟體版本
- Excel 2003/2007
- 閱讀權限
- 20
- 性別
- 男
- 來自
- TAIPEI
- 註冊時間
- 2010-8-25
- 最後登錄
- 2019-9-20
|
12#
發表於 2012-9-2 11:35
| 只看該作者
完整程式碼....- Sub 將CSV檔資料寫入ACCESS()
- Dim cn As ADODB.Connection
-
- '建立ADODB Connection物件變數
- Set cn = New ADODB.Connection
-
- TARGET_DB = "TaiwanDB.mdb"
- tbl = "PRICE_Daily"
- 股票代號 = "1101"
- theCsvFolder = ThisWorkbook.Path
-
- '建立ACCESS(*.mdb)連結
- cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
- "Data Source=" & ThisWorkbook.Path & "\" & TARGET_DB & ";" & _
- "Persist Security Info=False"
-
- strFields = "[Date],[Open],[High],[Low],[Close],[Volume],[Adj Close] as [AdjClose]"
- strSQL = "INSERT INTO [" & tbl & "] SELECT " & 股票代號 & " as [StockID]," & strFields & " FROM [Text;Database=" & theCsvFolder & "].[" & 股票代號 & "#CSV]"
- '執行SQL command
- cn.Execute strSQL
-
- '關閉ADODB connection
- cn.Close
-
- '清除佔用記憶體
- Set cn = Nothing
- End Sub
複製代碼 |
|
diabo
|
|
|
|
|
- 帖子
- 83
- 主題
- 17
- 精華
- 0
- 積分
- 105
- 點名
- 0
- 作業系統
- XP
- 軟體版本
- XP
- 閱讀權限
- 20
- 註冊時間
- 2010-12-28
- 最後登錄
- 2018-8-8
|
13#
發表於 2012-9-4 13:29
| 只看該作者
|
|
|
|
|
|
- 帖子
- 83
- 主題
- 17
- 精華
- 0
- 積分
- 105
- 點名
- 0
- 作業系統
- XP
- 軟體版本
- XP
- 閱讀權限
- 20
- 註冊時間
- 2010-12-28
- 最後登錄
- 2018-8-8
|
14#
發表於 2012-9-7 14:57
| 只看該作者
回復 小俠客
你已有積分44分 版規: 檔案附件限等級中學生(積分50)以上才能下載
加油 加油!
GBKEE 發表於 2012-8-31 10:24 
終於成為中學生了,可以載附件了
太利害了,原來可以這樣簡化的,謝謝!內容太多,要點時間消化
但可以多了解一下,用DAO 和ADODB在執行效率上有沒有分別?
因為DAO不用像ADODB要寫provider=?????,容易記住。
另外,我看到「資料導入資料庫()」中,你是用FOR LOOP+.AddNew +.UPDATE的方法寫入資料,這個和用SQL COMMAND的INSERT,在執行速度上有沒有分別?謝謝 |
|
|
|
|
|
|
- 帖子
- 83
- 主題
- 17
- 精華
- 0
- 積分
- 105
- 點名
- 0
- 作業系統
- XP
- 軟體版本
- XP
- 閱讀權限
- 20
- 註冊時間
- 2010-12-28
- 最後登錄
- 2018-8-8
|
15#
發表於 2012-9-12 11:38
| 只看該作者
回復 小俠客
試試看
GBKEE 發表於 2012-8-30 16:21 
我剛剛試比較用.ADDNEW和.UPDATE和SQL INSERT 速度比較,我發現用SQL INSERT比前者快很多- Set wb = Workbooks.Open(myUrl)
- With myRS
- For Each a In ActiveSheet.Range([A2], [A2].End(xlDown))
- .AddNew '添加各個欄位的資料
- For i = 1 To .Fields.Count - 1
- .Fields(0) = shareNo
- .Fields(i) = a(1, i)
- Next i
- .Update '更新資料表
- Next
- End With
複製代碼 所以我希望用SQL作資料寫入,但請問這句如何改寫成用 wb 或activebook作DATABASE呢?- "insert into Price select * from (select " & shareNo & " as Share, Date, Open, High, Low, Close, Volume as Vol, [Adj Close] as AClose from [Excel 8.0;hdr=yes;imex=1;Database=" & wb & "].[table$A1:G" & r & "])"
複製代碼 謝謝指教 |
|
|
|
|
|
|