作者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