VBA: 将具有值的字段添加到 Recordset
VBA: add field with value to Recordset
我正在通过 Excel VBA 通过 ADODB.Connection 和 ADODB.Recordset 访问数据库。我查询的是returns四个字段的数据。我想要我的记录集中的每个 "row" 具有相同值(即 5)的第五个字段。我不想将其添加到数据库中。
我想作为一个字段来执行此操作,因为有时我的查询 returns 五个字段,第五个字段替换了 E 列乘法中的 5。
我现在的代码是这样的:
Dim MyConn As ADODB.Connection
Dim MyRecords As ADODB.Recordset
Set MyConn = New ADODB.Connection
Set MyRecords = New ADODB.Recordset
MyConn.Open location, username, password
MyRecords.ActiveConnection = MyConn
MyRecords.CursorLocation = adUseServer
MyRecords.Source = query 'really long, not included here
MyRecords.Open , , 1, 1
Do While Not MyRecords.EOF
Range("A2").Offset(cl, 0).Value = MyRecords.Fields.Item(0).Value
Range("B2").Offset(cl, 0).Value = MyRecords.Fields.Item(1).Value
Range("D2").Offset(cl, 0).Value = MyRecords.Fields.Item(2).Value
Range("E2").Offset(cl, 0).Value = MyRecords.Fields.Item(3).Value * 5
cl = cl + 1 'go to the next line
MyRecords.MoveNext
Loop
MyRecords.Close
MyConn.Close
我尝试在 .Open 后附加一个字段,但出现错误。然后,我根据类似的问题尝试了以下操作,检查了当地人和 vba 文档:
Set MyRecords = New ADODB.Recordset
With MyRecords
.Fields.Append "MA", adNumeric, 19
.Fields.Append "PN", adVarChar, 12
.Fields.Append "Qty", adNumeric, 19
.Fields.Append "Data", adNumeric, 19
.Fields.Append "Mult", adTinyInt, , adFldUpdatable, 1
End With
MyRecords.ActiveConnection = MyConn
MyRecords.CursorLocation = adUseServer
MyRecords.Source = query 'really long, not included here
MyRecords.Open , , 1, 1
但这会在 With 结束之前引发错误。
tl;dr 我的 SQL 查询检索了四列,我想在 vba 中本地添加第五列,全部用值 5 填充。我该怎么做?
您是说您的查询需要四个字段,但您希望记录集在返回数据时包含第 5 个字段吗?
如果那是你想要的,你不能做这样的事情吗(未经测试!!)?
Select
Field_1,
Field_2,
Field_3,
Field_4,
SUM(5)
From
Your_Table
这样,我相信在记录集的第五列中,每一行都应该有数字 5。
我正在通过 Excel VBA 通过 ADODB.Connection 和 ADODB.Recordset 访问数据库。我查询的是returns四个字段的数据。我想要我的记录集中的每个 "row" 具有相同值(即 5)的第五个字段。我不想将其添加到数据库中。
我想作为一个字段来执行此操作,因为有时我的查询 returns 五个字段,第五个字段替换了 E 列乘法中的 5。
我现在的代码是这样的:
Dim MyConn As ADODB.Connection
Dim MyRecords As ADODB.Recordset
Set MyConn = New ADODB.Connection
Set MyRecords = New ADODB.Recordset
MyConn.Open location, username, password
MyRecords.ActiveConnection = MyConn
MyRecords.CursorLocation = adUseServer
MyRecords.Source = query 'really long, not included here
MyRecords.Open , , 1, 1
Do While Not MyRecords.EOF
Range("A2").Offset(cl, 0).Value = MyRecords.Fields.Item(0).Value
Range("B2").Offset(cl, 0).Value = MyRecords.Fields.Item(1).Value
Range("D2").Offset(cl, 0).Value = MyRecords.Fields.Item(2).Value
Range("E2").Offset(cl, 0).Value = MyRecords.Fields.Item(3).Value * 5
cl = cl + 1 'go to the next line
MyRecords.MoveNext
Loop
MyRecords.Close
MyConn.Close
我尝试在 .Open 后附加一个字段,但出现错误。然后,我根据类似的问题尝试了以下操作,检查了当地人和 vba 文档:
Set MyRecords = New ADODB.Recordset
With MyRecords
.Fields.Append "MA", adNumeric, 19
.Fields.Append "PN", adVarChar, 12
.Fields.Append "Qty", adNumeric, 19
.Fields.Append "Data", adNumeric, 19
.Fields.Append "Mult", adTinyInt, , adFldUpdatable, 1
End With
MyRecords.ActiveConnection = MyConn
MyRecords.CursorLocation = adUseServer
MyRecords.Source = query 'really long, not included here
MyRecords.Open , , 1, 1
但这会在 With 结束之前引发错误。
tl;dr 我的 SQL 查询检索了四列,我想在 vba 中本地添加第五列,全部用值 5 填充。我该怎么做?
您是说您的查询需要四个字段,但您希望记录集在返回数据时包含第 5 个字段吗?
如果那是你想要的,你不能做这样的事情吗(未经测试!!)?
Select
Field_1,
Field_2,
Field_3,
Field_4,
SUM(5)
From
Your_Table
这样,我相信在记录集的第五列中,每一行都应该有数字 5。