如何更改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
答
我只想存储计算结果在一个新的领域,而不是试图改变现有字段:
rs.Fields.Append "New_Field", adDouble
所以,你要存储的值的对数?如果8是基础,那么价值是什么?此外,它必须存储在RS中,你可以将结果写入双数组吗? – Absinthe
是否有任何理由不能将记录集添加到类型为'double'的新字段并将计算结果存储在此处? – RADO
我不认为你可以改变数据类型,所以最好的解决方法是@RADO建议的。 –