Access数据库中的更改仅出现在新记录中

时间:2012-07-12 17:24:50

标签: ms-access vba

我在访问中有一个表单有一系列问题。每个问题都有一个带有三个单选按钮的框架,每个单选按钮指定一个不同的选项(为了方便1,2,3)。我已在此表单中添加了一个问题,并希望以某种方式将更改前的所有记录指定为免除此字段。我以为我可以将之前记录中此字段的值设置为-1,以表示它们是免税的。但现在我不知道如何在以前的记录中基本上禁用这个问题。

2 个答案:

答案 0 :(得分:1)

我不确定我对你的描述有多了解,我的预感是表格的当前事件在这里很有用。

Private Sub Form_Current()
    Me.ControlName.Enabled = Not Me.indicator_field = -1
End Sub

如果ControlName对于新记录应为Enabled,则可以使用Nz ()函数来处理初始Null。

Me.ControlName.Enabled = Not Nz(Me.indicator_field, 0) = -1

除了ControlName之外,您还可以管理Locked的{​​{1}}媒体资源。这些组合以不同的方式改变了控件的外观。看看你喜欢哪个。

我可能会忽略其他细节,但希望这会为您提供一个有用的起点。

如果表单包含Text1,Text2,... Textn等序列中的文本框,则可以使用Enabled循环对其中的每一个执行某些操作...启用/禁用等等。我会用For,因为这对我来说很容易。

Debug.Print

您可以使用字符串变量来引用表单Dim i As Long Dim strCtl As String For i = 1 To 10 strCtl = "Text" & CStr(i) Debug.Print Me.Controls(strCtl).Name Next i 集合的特定成员。然后用它做你需要的,而不是打印它的Controls属性。

答案 1 :(得分:0)

您可以参考NewRecord属性:

Private Sub Form_Current()
     If Me.NewRecord = True
        Then Me.MyControl.Enabled = True
     Else
        Then Me.MyControl.Enabled = False
     End If
End Sub

或者使用您的新字段,您可以说:

If Me.MyField = -1
    Then Me.MyControl.Enabled = False
 Else
    Then Me.MyControl.Enabled = True
 End If

在MS Access表中包含创建的日期时间几乎总是一个好主意。