MS Access中的编程复选框

时间:2012-04-13 19:40:59

标签: ms-access checkbox

我在MS Access中编写一个简单的复选框。这是怎么回事:

  1. 我有一个组合框设置,用户可以选择下拉值。(例如b1,b2,c1,d1,d2,d3,e0,e2等)它们只是2个字符的文本字符串。< / LI>
  2. 当用户想要修改下拉列表中的值时,我会使用一个复选框。基本上它所做的就是,当选中复选框时,它会将任何值更改为'ds(下拉值),因此它只是添加“ds()”。(例如ds(b1),ds(b2) ,ds(c1)等)
  3. 如果用户取消选中该复选框,则该值将保留为2个字符的文本字符串。
  4. 这是我第一次涉足Access编程。我的伪代码如下:

    Private Sub distchk_Click()
    if distchk is checked then
       Me.ECOSITE = "ds(" & Me.ECOSITE & ")"
    else:
       Me.Ecosite
    End Sub
    

    我测试过:

    Private Sub distchk_Click()
    Me.ECOSITE = "ds(" & Me.ECOSITE & ")"
    End Sub
    

    但它会在我检查时随时添加额外的ds(),如果我取消选中它将不会删除它。

    任何建议都会很棒!

    麦克

1 个答案:

答案 0 :(得分:3)

您正在为自己做一些不必要的工作,并为您的用户提供更加混乱的界面。您正在收集两个离散数据:LandCoverType(文本字段)和IsDisturbed(是/否字段,又称布尔或位字段),因此我认为没有理由将它们组合在输入表单中。您没有通过在“ds()”中包装土地覆盖类型向用户提供任何其他信息。我建议两种替代方法:

两个单独的字段 (首选方法)

  • 创建一个LandCoverType字段(Text);将您的组合框绑定到此字段(在ComboBox ControlSource中输入LandCoverType
  • 创建一个IsDisturbed字段(是/否);将您的复选框绑定到此字段(与上面相同)
  • 如果要在报表上显示“ds()”,请将其作为报表字段格式的一部分(例如=IIf([IsDisturbed], "ds(" & [LandCoverType] & ")", [LandCoverType])

一个合并字段

  • 创建单个LandCoverType字段(文本)
  • 更改组合框的RowSource以包含所有带有和不带ds()的LandCoverType(例如,如果您的RowSource是值列表:b1, b2, c1, ds(b1), ds(b2), ds(c1)