2
在VBA中,我有一個ADO記錄集的集合,我希望在用戶使用表單時計算並將這些值存儲在記錄集中。如何更改ADO記錄集字段的數據類型?
我的問題:我做了一個計算後,說,和整數,我得到一個雙/浮動。當我嘗試將其存儲在記錄集中時,它會被轉換/更改爲整數。我想要保留計算後的double/float的精度。
我的想法:改變我計算和存儲的字段的數據類型。 我不知道該怎麼做。我該怎麼做?我可以這樣做嗎?
例:
Option Explicit
Sub test()
Dim rs As ADODB.Recordset
Dim sql As String
sql = "select * from test;"
Set rs = frsGetPgRecordset(sql)
Do While rs.EOF = False
Debug.Print rs!x & "<- original"
Debug.Print Application.WorksheetFunction.Log(rs!x) & "<- what I want stored"
rs.Fields("x") = Application.WorksheetFunction.Log(rs!x)
Debug.Print rs!x & "<- what I get"
rs.MoveNext
Loop
End Sub
我得到:
8<- original
0.903089986991944<- what I want stored
1<- what I get
20<- original
1.30102999566398<- what I want stored
1<- what I get
注意,這不是因爲frsGetPgRecordset(無法提供,因爲它不是關鍵的問題)我有改變數據庫:
rs.CursorType = adOpenKeyset
rs.CursorLocation = adUseClient
rs.LockType = adLockBatchOptimistic
您可以在這裏獲得更多信息,因爲人們會問: https://docs.microsoft.com/en-us/sql/ado/reference/ado-api/cursortype-property-ado Update recordset without updating database
所以,你要存儲的值的對數?如果8是基礎,那麼價值是什麼?此外,它必須存儲在RS中,你可以將結果寫入雙數組嗎? – Absinthe
是否有任何理由不能將記錄集添加到類型爲'double'的新字段並將計算結果存儲在此處? – RADO
我不認爲你可以改變數據類型,所以最好的解決方法是@RADO建議的。 –