作者stanraw (Cobb-Douglas)
看板Visual_Basic
標題[VBA ] 抓Access資料是否可以丟進陣列.運算後再丟回Access
時間Tue Nov 4 16:13:08 2008
請問板上各位高手~
我現在資料庫已經建立了各檔股票樣本期間內的收盤價了
想計算他的報酬率
(今天的報酬率=[今天收盤價-昨天收盤價]/昨天收盤價)
目前我的寫法是
將收盤價從資料庫抓出來丟到儲存格中
在儲存格計算每天的報酬率
算完再用UPDATE丟進Access
缺點就是計算速度 超 級 慢 !!!
整整24個小時才算完水泥這個產業7年半的報酬率
目前想法是
從Access抓出收盤價後
丟進去陣列中
陣列運算完再UPDATE進去Access
不知道程式碼怎麼寫阿~
高手救救我吧>"<
ps.還是說是因為我用UPDATE的方式
所以速度很慢??
附上部份程式碼...
Call DbOpen
Set myRs = New ADODB.Recordset
With myRs
.Source = "SELECT close_stock,date_stock FROM stock WHERE pro_stock='1101'"
.ActiveConnection = myCon
.Open
End With
Sheet1.Range("A1").CopyFromRecordset myRs
Call DbClose
For i = 2 To Sheet1.Cells(65536, 1).End(xlUp).Row
'第1行是收盤價,已經依照日期排列。第2行是交易日期。第3行是報酬率。
Cells(i, 3) = (Cells(i, 1) - Cells(i - 1, 1)) / Cells(i - 1, 1)
Call DbOpen
Set myRs = New ADODB.Recordset
With myRs
.Source = _
"UPDATE stock SET return_stock=" & Cells(i, 3) & _
" WHERE date_stock=#" & Cells(i, 2) & "#"
.ActiveConnection = myCon
.Open
End With
Next i
Call DbClose
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.64.89.66
※ 編輯: stanraw 來自: 203.64.89.66 (11/04 17:27)
1F:推 ClubT:應該是需要的時候 直接透過SQL算好在丟到儲存格中 11/04 17:28
2F:→ ClubT:另外...應該也不必回存...有需要再算一次就OK了 11/04 17:28
3F:→ stanraw:C大的意思是,直接在Access中計算報酬率嗎? 11/04 17:51
4F:推 ClubT:應該說 你下select的時候算吧 或是多用一次select 11/04 20:36
5F:→ ClubT:另一個方法就是用EXCEL的公式 11/04 20:37