如何通过表格加载在表上检查是/否,如果改变则重新加载

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

我对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"
vba ms-access
1个回答
0
投票

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.cmdOpenEnterRecord.Enabled = Not varX > 0
Me.cmdOpenEnterRecord.Caption = IIf(varX > 0, "Flight In Progress", "Start Flight Record")
© www.soinside.com 2019 - 2024. All rights reserved.