我正在使用VBA Excel并尝试从Access 2007程序中提取信息。
我可以看到列表框,并且可以在第一次从记录集中提取数据,但后续的拉取只返回与第一次相同的数据,而不是在屏幕上反映新数据。
我必须浏览标签和表单才能做到这一点。
Dim string22 As String
string22 = item7.Name
If string22 = "EventsOne" Then
Dim alb2 As Access.ListBox
Set alb2 = Nothing
Set alb2 = item7
If alb2.ListCount > 1 Then
Dim rs1 As Object
Set rs1 = Nothing
Set rs1 = alb2.Recordset
rs1.MoveFirst
Do Until rs1.EOF = True
For i = 1 To rs1.fields.Count
Debug.Print rs1.fields(i).Value
Next i
rs1.MoveNext
Loop
End If
那么,我如何获取显示的数据?我需要做什么来刷新列表框对象或记录集对象?对我而言,它似乎应该像屏幕上的那样令人耳目一新。其他地方的文本框值会刷新,表示屏幕上的内容。
alb2.listcount应该大于1,以便填充。
我第一次启动应用时会收到
记录集的示例值命令19021 截止日期为11/3/14 命令19031 截止日期为11/4/14 订单19045 截止日期为2014年11月19日
然后我转到表单上的下一个条目,并在屏幕上看到列和
订单20101 截止日期为12/11/14 订单20222 截止日期为2014年12月13日
但是,应用程序的第二次运行没有获取记录集的新数据,但alb2.columns具有新数据。记录集尚未移动。它与以下内容完全相同:
命令19021 截止日期为11/3/14 命令19031 截止日期为11/4/14 订单19045 截止日期为2014年11月19日
我不知道rs1的locktype是adLockReadyOnly而且recordcount保持不变。我在监视窗口下看到rs1.fields(1).originalvalue它是“当前Recordset不支持更新。这可能是提供者或所选锁定类型的限制。”此外,rs1.fields(1).Underlyingvalue是“用于更新或刷新的基表信息不足”。所有领域都有这些。它只是让我的外部VBA的新运行它仍然不会拾取记录集的新数据。我想知道使用什么命令,因为alb2.requery和rs1.requery不起作用。