如何更改ADO记录集字段的数据类型?

如何更改ADO记录集字段的数据类型?

问题描述:

在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建议的。 –

我只想存储计算结果在一个新的领域,而不是试图改变现有字段:

rs.Fields.Append "New_Field", adDouble