返回列表 上一主題 發帖

請教有關ADODB.STREAM和Microsoft.XMLHTTP的用法

#10 的寫法,只能省一個步驟...

讀取資料 > 儲存成CSV >  (可省略)讀取CSV(可省略) > CSV直接寫入ACCESS > 刪除CSV的過程[code]
diabo

TOP

完整程式碼....
  1. Sub 將CSV檔資料寫入ACCESS()

  2.      Dim cn As ADODB.Connection
  3.    
  4.     '建立ADODB Connection物件變數
  5.      Set cn = New ADODB.Connection
  6.    
  7.      TARGET_DB = "TaiwanDB.mdb"
  8.      tbl = "PRICE_Daily"
  9.      股票代號 = "1101"
  10.      theCsvFolder = ThisWorkbook.Path
  11.    
  12.     '建立ACCESS(*.mdb)連結
  13.      cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
  14.              "Data Source=" & ThisWorkbook.Path & "\" & TARGET_DB & ";" & _
  15.              "Persist Security Info=False"
  16.          
  17.      strFields = "[Date],[Open],[High],[Low],[Close],[Volume],[Adj Close] as [AdjClose]"
  18.      strSQL = "INSERT INTO [" & tbl & "] SELECT " & 股票代號 & " as [StockID]," & strFields & " FROM [Text;Database=" & theCsvFolder & "].[" & 股票代號 & "#CSV]"

  19.     '執行SQL command
  20.      cn.Execute strSQL
  21.      
  22.     '關閉ADODB connection
  23.      cn.Close
  24.      
  25.     '清除佔用記憶體
  26.      Set cn = Nothing

  27. End Sub
複製代碼
diabo

TOP

這個方法好像不錯,待我回家改成這個試試,謝謝

TOP

回復  小俠客
你已有積分44分  版規: 檔案附件限等級中學生(積分50)以上才能下載
加油 加油!
GBKEE 發表於 2012-8-31 10:24



    終於成為中學生了,可以載附件了
太利害了,原來可以這樣簡化的,謝謝!內容太多,要點時間消化

但可以多了解一下,用DAO 和ADODB在執行效率上有沒有分別?
因為DAO不用像ADODB要寫provider=?????,容易記住。

另外,我看到「資料導入資料庫()」中,你是用FOR LOOP+.AddNew +.UPDATE的方法寫入資料,這個和用SQL COMMAND的INSERT,在執行速度上有沒有分別?謝謝

TOP

回復  小俠客
試試看
GBKEE 發表於 2012-8-30 16:21



    我剛剛試比較用.ADDNEW和.UPDATE和SQL INSERT 速度比較,我發現用SQL INSERT比前者快很多
  1. Set wb = Workbooks.Open(myUrl)
  2.         With myRS
  3.             For Each a In ActiveSheet.Range([A2], [A2].End(xlDown))
  4.                 .AddNew        '添加各個欄位的資料
  5.                 For i = 1 To .Fields.Count - 1
  6.                     .Fields(0) = shareNo
  7.                     .Fields(i) = a(1, i)
  8.                 Next i
  9.                 .Update       '更新資料表
  10.             Next
  11.         End With
複製代碼
所以我希望用SQL作資料寫入,但請問這句如何改寫成用 wb 或activebook作DATABASE呢?
  1. "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 & "])"
複製代碼
謝謝指教

TOP

        靜思自在 : 願要大、志要堅、氣要柔、心要細。
返回列表 上一主題