【问题标题】:How to display tri-state boolean in a textbox input in MS Access vba?如何在 MS Access vba 的文本框输入中显示三态布尔值?
【发布时间】:2018-04-03 12:39:48
【问题描述】:

我很少使用 VBA Access 来维护我们的旧版应用程序。我正在使用 MS Access 2007。我正在尝试在文本框输入中使用三态。换句话说,我有一个文本框输入,它绑定到数据库中的布尔字段(HOME,在 SQL Server 中允许 NULL);但是,当用户输入1 时,我需要为true 显示1 而不是-1。同样,当用户在数据库中输入0 时,应该有0 表示“false”。最后一种情况是:如果用户不输入任何内容或空格,它应该将Null 保存在数据库中。 到目前为止我做了什么: 在此文本框的属性表下:

  1. Format 选项卡下,我将 Format 字段设置为空,而不是 true/false、on/off 或 yes/no,因为我需要三种状态。
  2. Data 选项卡下,将Control Source 绑定到Home 字段。
  3. other属性选项卡下,我将Status Bar Text设置为1=HOME, 0=Not HOME

问题:

  1. 当我输入1 时,文本框显示-1 并将1 保存在表格中,这很好。
  2. 当我输入0 时,文本框显示0 并保存0。所以,这个案子很好。
  3. 当我尝试不输入任何内容或空格时,默认为0

谁能告诉我如何实现布尔文本框的三种状态?或者将我重定向到 Stack Overflow 中的链接,因为我在 SO 中进行研究时找不到。

【问题讨论】:

    标签: ms-access textbox vba boolean


    【解决方案1】:

    将文本框的 Format 属性设置为:0,0 或设置为:0;0

    另外,将字段的 DefaultValue 设置为 Null

    尝试“向上​​/向下”调整您的 Sub:

    Private Sub txtHome_AfterUpdate() 
        If Me!txtHome.Value = "" Then 
            Me!txtHome.Value = Null
        End If 
    End Sub
    

    【讨论】:

    • 当我将 Format 属性设置为 0;0 并没有输入任何内容时,它设置为 0,即默认为 false
    • 所以,最后一种情况不起作用,即当我尝试输入nothing or space时,默认情况下需要0
    • 那么在表格和表格中 DefaultValue 的设置是什么?
    • 表单中的默认值为 NULL,当我在数据库中检查它时,“默认值或绑定”为空。不是说默认值是NULL吗? Home 字段位允许 NULL
    • 不,没有指定的内容与 Null 不同。对于测试,我必须为表中字段的该属性编写 Null。
    【解决方案2】:

    根据阅读不同的在线文章和帖子,我相信在 MS ACCESS 中不可能有三态。换句话说,MS Access 会将“NULL”作为 FALSE 并将 False/0/No 保存在数据库中。我想把它放在这里,以便在其他人遇到困难时对其有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-18
      相关资源
      最近更新 更多