在MS Access 2010中使用VBA来设置表格单元格值

问题描述 投票:0回答:1

我试图动态更新元数据表,这是守住5种存在形式的名称的表格单元格的值。此表用于设置对frmMainMenu 5个各按钮,其中每个按钮将依次打开适当的表中的属性.Caption。

如果用户重命名的5种形式之一,在标题字段(字段的名称是标题)在MainMenu的元数据表必须自动更新相应的记录,所以frmMainMenu可以再拉形式的新名称和新形式填充按钮名称名称。

当前表单名称:frmBorrower frmCDMedia,frmOrders,frmQuickSearchBorrower,frmQuickSearchMedia,frmMainMenu

除了frmMainMenu每种形式都有自己的类模块,窗体的名称分配给一个公共变量formPopA,formPopB ... formPopE使用下面的代码:

Public Function MyNameA()
Form_frmMainMenu.formPopA = Me.Name
End Function

在frmMainMenu我有以下几点:

Public formPopA As String
Public formPopB As String
Public formPopC As String
Public formPopD As String
Public formPopE As String

Private Sub Form_Load()
NamePop.PopulateTablesWithFormNames
SetCaptions
End Sub

Private Sub SetCaptions()
mainVars.mainVarsi
End Sub

然后我有2个标准模块,MainVars,这在MainMenu的表分配的值,以在frmMainMenu适当的按钮(此是成功的),然后NamePop,这是应该设置使用用户定义PopulateTablesWithFormNames表单元格的值() 。

我的问题代码(我认为)是在NamePop,在这里我不能找到一种方法,使PopulateTablesWithFormNames分配相应的表格名称。

我曾经尝试这样做:

Dim x As DAO.Database
Dim myX As DAO.Recordset
Set x = CurrentDb()
Set myX = x.OpenRecordset("MainMenu", dbOpenTable)
myX.FindFirst "ID = 1"
myX![Caption] = Form_frmMainMenu.formPopA
myX.Update

据我所知,DAO,ADO和访问对象之间的差异显著,但不知道如何他们的工作方式不同。我创建的所有对象与功能区上的命令,但有差别。经验水平与VBA新手。

vba ms-access-2010
1个回答
0
投票

至少有两个问题与您现有的代码:

首先,你不能在已经打开的.FindFirst一个记录进行dbOpenTable。如果你尝试,你会得到错误“操作不支持这种类型的对象。”您需要打开记录为dbOpenDynaset

其次,使用DAO必须要修改的记录集中的记录之前调用.Edit方法。如果你省略这一步,然后当您尝试.Update你会得到错误“没有的AddNew或编辑更新或CancelUpdate。”

试试这个代码,而不是:

Dim x As DAO.Database
Dim myX As DAO.Recordset
Set x = CurrentDb()
Set myX = x.OpenRecordset("MainMenu", dbOpenDynaset)
myX.FindFirst "ID = 1"
myX.Edit
myX![Caption] = Form_frmMainMenu.formPopA
myX.Update
© www.soinside.com 2019 - 2024. All rights reserved.