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

标签 vba excel ado.net ado

在 VBA 中,我有一组 ADO 记录集,我想在用户使用表单时对其进行计算并将记录集中的值存储在内存中。

我的问题:在对整数进行计算后,我得到一个 double /浮点值。当我尝试将其存储在记录集中时,它被转换/更改为整数。我希望保留计算后 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://learn.microsoft.com/en-us/sql/ado/reference/ado-api/cursortype-property-ado Update recordset without updating database

最佳答案

我只是将计算结果存储在新字段中,而不是尝试更改现有字段:

rs.Fields.Append "New_Field", adDouble

关于vba - 如何更改 ADO 记录集字段的数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44398059/

相关文章:

VBA:&和+之间的区别

excel - 在 VBA excel 中的 VLOOKUP 中设置 table_array

arrays - 数组分割和提取vba excel

excel - 是否可以在办公脚本中将数据从一张表复制、粘贴和删除到另一张表?

sql-server - SqlException Number是如何分配的

excel - 如何删除Excel VBA范围内的列

vba - 在 Excel VBA 中设置默认 TextBox.Value TypeName

python - 使用 python 将数据复制并粘贴到 Excel 中(保留源格式)

postgresql - NPGSQL 选择查询间歇性地不返回任何行

sql-server - ADO.NET 与 SSMS 中的 SQL Server 性能对比