【问题标题】:List Box in Access with linked MySQL tableAccess 中的列表框与链接的 MySQL 表
【发布时间】:2016-06-20 11:40:12
【问题描述】:

我有一个带有 2 个表(processdata_type)的 MSaccess 数据库。每个process 可以包含0-多种data_type。在访问权限内,我有一个表单,它显示一个带有列表框的进程 (see pic),其中包含所有 data_types。然后用户可以检查每个process 拥有的data_types

我们正在将数据从访问权限迁移到 MySQL。作为其中的一部分,我创建了一个链接processdata_type 表的process2data 表。不幸的是,我不知道如何在 Access 中创建一个表单(我们现在仍然使用它作为我们的显示引擎)来完成与在线数据相同的事情。

你可以下载我正在尝试做的here

(为简单起见,我已将 mySQL 中的在线数据表的副本作为 Access 中的离线表。)

【问题讨论】:

    标签: ms-access listbox linked-tables


    【解决方案1】:

    多值字段仅适用于 MS-Access 数据库,为了模拟我们需要添加 VBA 代码和一个表来存储值。

    1. 创建中间表,本例中我创建了[ProcessList_DataType],[checked]字段将用于包含数据类型,见图:

    1. 为 ProcessList 创建一个表单,为 [Datatypes] 和 [ProcessList_DataType] 组合表创建一个子表单。不要忘记配置链接主字段。

    1. 添加代码以检查中间表上是否存在引用的值:

      Private Sub Form_Current()
          On Error GoTo ErrExit
          If Not IsNull(Me!ProcessID) Then
              sql = "INSERT INTO ProcessList_DataType(ProcessList,DataType) " & _
                    "SELECT " & Me!ProcessID & ",datatype_id " & _
                    "FROM DataTypes WHERE datatype_id not in " & _
                      "(SELECT datatype_id from FilterQuery " & _
                      " WHERE ProcessList = " & Me!ProcessID & " )"
              Set db = CurrentDb()
              db.Execute sql
              cnt = db.RecordsAffected
              If cnt > 0 Then
                  NeedRefresh = True
              End If
          End If
      ErrExit:
      End Sub
      
    2. 享受吧!

    【讨论】:

    • 非常感谢。我想我有它的工作。对于给定进程(即 Process2),唯一显示的数据类型是被检查的数据类型(即 DataType2、DataType3、DataType5 和 DataType6)。 ProcessList_DataType 表是否有所有可能的 DataTypes 和 Process 组合?如果是这样,那么我可以检查那些处于活动状态并且应该可以解决我的问题的那些。我也看不到我在哪里需要你的代码。它似乎创建了我上面描述的“完整”表,但我想我可以在输入端处理这个。再次感谢!
    • 当我回到办公室时,我可以发布 .accdb 文件……还有:您能否将答案标记为正确和/或赞成? (此答案左上角的绿色标记)
    猜你喜欢
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 2010-12-12
    相关资源
    最近更新 更多