表单上的显示按钮(连续)取决于记录

时间:2019-06-19 18:28:28

标签: ms-access

我有一个要连续显示的记录列表。我也以这种形式放置按钮。

IE 我在列表中有一个“考试”列表,每个考试都有一个按钮,例如“删除”按钮,“编辑”按钮等等。我只想在检查设置了某个变量的情况下添加另一个按钮。

记录集示例

| Key | ExamName    | ExamLocation | ExamDate | ExamComplete |
|-----|-------------|--------------|----------|--------------|
| 1   | Test Exam 1 | TX           | 10/2/19  | Y            |
| 2   | Test Exam 2 | SC           | 10/4/19  | Y            |
| 3   | Test Exam 3 | AL           | 10/29/19 | N            |
| 4   | Text Exam 4 | WA           | 10/22/19 | Y            |

因此,对于ExamComplete设置为“ Y”的每条记录,我都想显示一个按钮,但不显示那些具有“ N”的记录。

我忙于处理“ onCurrent”和“ onLoad”事件,没有成功。

示例代码

If me.ExamComplete.Value = "Y" Then
    Me.BtnClickOpen.visable = TRUE
ELSE
    Me.BtnClickOpen.visable = FALSE
END IF 

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

将按钮放置在“表格标题”部分中。如果ExamComplete是“是/否”字段类型,请不要将参数放在引号内。不论字段类型如何,都可以使用单行格式-如果是/否,则只需引用该字段即可。

Me.BtnClickOpen.Visible = Me!ExamComplete

肯定需要当前事件形式的代码,但可能还需要ExamComplete复选框AfterUpdate。

只有一个按钮,因此VBA设置属性会影响该按钮的所有实例-每个记录将显示相同的内容。它将在“详细信息”部分中起作用,但由于所有按钮实例消失/出现,可能使用户分心和困惑。替代方法是使用带有条件格式(无VBA)的文本框来模拟“详细信息”部分中的按钮。文本框将始终可见(除非规则更改背景颜色以匹配表单以使其融合),并且每条记录分别动态启用/禁用。

答案 1 :(得分:0)

刚刚发现的Detail_Paint事件可以连续形式用于按钮(和其他没有FormatConditions属性的控件)上的条件格式Detail-Section。尽管您无法设置visible属性,但是可以设置.Transparent属性。由于Button_Click事件也会在透明按钮上触发,因此您必须签入click事件,以了解是否应该执行代码。

Private Sub Detail_Paint()
  Me.BtnClickOpen.Transparent = Not Me.ExamComplete.Value = "Y"
End Sub

Private Sub BtnClickOpen_Click()
  If Me.ExamComplete.Value = "Y" Then
    ' button visible(not tranparent), execute button-click code
  Else
    'button transparent, do nothing
  End If
End Sub