2017-06-06 101 views
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

+0

所以,你要存儲的值的對數?如果8是基礎,那麼價值是什麼?此外,它必須存儲在RS中,你可以將結果寫入雙數組嗎? – Absinthe

+0

是否有任何理由不能將記錄集添加到類型爲'double'的新字段並將計算結果存儲在此處? – RADO

+1

我不認爲你可以改變數據類型,所以最好的解決方法是@RADO建議的。 –

回答

3

我只想存儲計算結果在一個新的領域,而不是試圖改變現有字段:

rs.Fields.Append "New_Field", adDouble 
相關問題