我有一个ms访问数据库,我想要检查一些是/否列,并设置第三个值。声明应如下所示
if !col1 && !col2:
col3 = no
else:
col3= yes
我一直在寻找,但并不真正了解vba,也无法找到我需要的东西..大部分都是我无法解决的其他问题的一部分。目前尝试在“模块”部分创建它甚至是正确的?如果这些可以自动完成,因为这些列已更改或可能运行一次并执行所有行,那将是最好的。请帮助我走上正确的轨道,任何帮助非常感谢。
这是我要做的:
1-创建表单并在其上添加至少一个命令按钮。将其命名为cmdMyButton或cmdAnythingThatYouWant(cmd是Microsoft的示例中用于命令按钮的前缀)
2-在设计视图中,双击命令按钮,弹出代码窗口
3-在onClick()函数中,编写为您的表打开记录集的代码,循环记录和每行,验证这两列的值并根据需要进行更新。 (查看DAO.recordset的文档)
我只想在数据库表中的计算列上创建它。见下面的屏幕截图:
请注意,在属性中我设置了一个公式,以根据前两列获取所需的结果。 “结果类型”设置为是/否以模仿是/否字段。唯一的区别是,第三列将显示-1(True)或0(False)。但是当在表单上显示此信息时,您可以让它以复选框方式显示信息。计算字段也是理想的,因为它只会在更新目标记录时更新第三列,而不是更新整个表,如果表大小开始保持超过100k记录,则非常有用。
如果你想要一个VBA代码,那么你需要一个触发器。我假设它在表单上有一个按钮,如果没有,您可以随时更改以下代码以匹配您想要触发的事件。下面的代码也是一个可以被调用/用于任何触发器的模块。代码也假设您有一个主键。
Public Sub UpdateThirdColumn(ByVal RecordPK As String) 'RecordPK is a passed variable
'that is the primary key identifier to find the
'record in the table
'Set variavble name for SQL statement, gives you one place to update instead of hunting through code
Dim strSQL As String
'Creates the SQL string in the variable assigned
strSQL = "UPDATE {YourTableNameHere} " & _
"SET {YourThirdFieldNAmeHere} = True " & _
"WHERE ((({YourFirstFieldNAmeHere}) = True AND ({YourSecondFieldNAmeHere}) = True AND ({YourPrimaryKeyFieldHere}) ='" & RecordPK & "'));"
'Executes the SQL statement, dbFailOnError will fail if problem exists in SQL statement
CurrentDb.Execute strSQL, dbFailOnError
End Sub
'Use this code if you have a button to trigger event
Private Sub YourButton_Click()
Call UpdateThirdColumn(Me.YourPrimaryKeyControlName)
End Sub
'Use the bottom 2 codes if you want the update for each check box to be checked and update
Private Sub FirstFieldName_AfterUpdate()
Call UpdateThirdColumn(Me.YourPrimaryKeyControlName)
End Sub
Private Sub SecondFieldName_AfterUpdate()
Call UpdateThirdColumn(Me.YourPrimaryKeyControlName)
End Sub
如果您需要更多帮助或解释,请告诉我,我很乐意为您提供帮助。