[VBA ] 抓Access資料是否可以丟進陣列.運算後꘠…

看板Visual_Basic作者 (Cobb-Douglas)時間15年前 (2008/11/04 16:13), 編輯推噓2(203)
留言5則, 2人參與, 最新討論串1/1
請問板上各位高手~ 我現在資料庫已經建立了各檔股票樣本期間內的收盤價了 想計算他的報酬率 (今天的報酬率=[今天收盤價-昨天收盤價]/昨天收盤價) 目前我的寫法是 將收盤價從資料庫抓出來丟到儲存格中 在儲存格計算每天的報酬率 算完再用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)

11/04 17:28, , 1F
應該是需要的時候 直接透過SQL算好在丟到儲存格中
11/04 17:28, 1F

11/04 17:28, , 2F
另外...應該也不必回存...有需要再算一次就OK了
11/04 17:28, 2F

11/04 17:51, , 3F
C大的意思是,直接在Access中計算報酬率嗎?
11/04 17:51, 3F

11/04 20:36, , 4F
應該說 你下select的時候算吧 或是多用一次select
11/04 20:36, 4F

11/04 20:37, , 5F
另一個方法就是用EXCEL的公式
11/04 20:37, 5F
文章代碼(AID): #1940GLBr (Visual_Basic)