Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 如何通过表单加载检查表上的是/否,如果更改,则重新加载_Vba_Ms Access - Fatal编程技术网

Vba 如何通过表单加载检查表上的是/否,如果更改,则重新加载

Vba 如何通过表单加载检查表上的是/否,如果更改,则重新加载,vba,ms-access,Vba,Ms Access,我对ms_access相当陌生,正在尝试创建一种方法来检查我的数据库中是否有打开的记录,如果有,则不允许打开允许输入新记录的表单 我试图在表单加载时检查表中的任何记录是否在“是/否”列中检查为“是”。我需要确保一次只能编辑一条记录 我终于完成了一半的工作,它将检查并禁用或启用按钮,这样他们就不能输入额外的记录,但是我不知道一旦我关闭记录,如何继续重新检查它。一旦表单第一次加载,它就会保持不变。其次,我无法将标题从“开始飞行记录”更改为“飞行进行中”,即使varX是-1 Dim varX As V

我对ms_access相当陌生,正在尝试创建一种方法来检查我的数据库中是否有打开的记录,如果有,则不允许打开允许输入新记录的表单

我试图在表单加载时检查表中的任何记录是否在“是/否”列中检查为“是”。我需要确保一次只能编辑一条记录

我终于完成了一半的工作,它将检查并禁用或启用按钮,这样他们就不能输入额外的记录,但是我不知道一旦我关闭记录,如何继续重新检查它。一旦表单第一次加载,它就会保持不变。其次,我无法将标题从“开始飞行记录”更改为“飞行进行中”,即使varX是-1

Dim varX As Variant 
varX = DLookup("strWorkingRecord", "tblFlightRecords")

If varX = -1 Then Me.cmdOpenEnterRecord.Enabled = False & _
        Me.cmdOpenEnterRecord.Caption = "Flight In Progress"


If varX <> -1 Then Me.cmdOpenEnterRecord.Enabled = True & _
    Me.cmdOpenEnterRecord.Caption = "Start Flight Record"
Dim varX作为变量
varX=DLookup(“strworkRecord”、“tblFlightRecords”)
如果varX=-1,则Me.cmdopeninterrecord.Enabled=False&_
Me.cmdopeninterrecord.Caption=“正在飞行”
如果varX-1,则Me.cmdopeninterrecord.Enabled=True&_
Me.cmdopeninterrecord.Caption=“开始飞行记录”

DLookup所做的只是从它在表中读取的第一条记录返回值-没有搜索条件,输出是随机的。DLookup如果与条件不匹配,则返回Null。代码语法不正确-操作应在
if End if
中的单独行上。应将变量声明为特定类型

Dim varX As Boolean 
varX = Nz(DLookup("strWorkingRecord", "tblFlightRecords", "strWorkingRecord=True"), False)
If varX Then 
    Me.cmdOpenEnterRecord.Enabled = False
    Me.cmdOpenEnterRecord.Caption = "Flight In Progress"
Else 
    Me.cmdOpenEnterRecord.Enabled = True
    Me.cmdOpenEnterRecord.Caption = "Start Flight Record"
End If
可以简化代码

Dim varX As Boolean
varX = Nz(DLookup("strWorkingRecord", "tblFlightRecords", "strWorkingRecord=True"), False)
Me.cmdOpenEnterRecord.Enabled = Not varX
Me.cmdOpenEnterRecord.Caption = IIf(varX, "Flight In Progress", "Start Flight Record")
或者使用DCount()


这是一个多用户数据库,其他用户可能正在同时创建记录?打开表单后,用户如何启动另一条记录?只需移动到新记录行?
Dim varX As Integer varX=DCount(“*”,“tblFlightRecords”,“strWorkingRecord=True”)Me.cmdopeninterrecord.Enabled=Not varX>0 Me.cmdopeninterrecord.Caption=IIf(varX>0,“飞行进行中,“开始飞行记录”)
我在另外两个地方也使用了它,只是做了一些轻微的修改。再次感谢。
Dim varX As Integer
varX = DCount("*", "tblFlightRecords", "strWorkingRecord=True")
Me.cmdOpenEnterRecord.Enabled = Not varX > 0
Me.cmdOpenEnterRecord.Caption = IIf(varX > 0, "Flight In Progress", "Start Flight Record")