如何将“是/否”列添加到Access 2007选择查询

时间:2015-07-30 17:46:46

标签: sql ms-access ms-access-2007

我有一个名为[Part Number]的链接表,在本地,用户需要能够选择与部件号对应的复选框(是/否)字段,以便使用其他命令对其执行操作。目前,为了在显示的查询中设置复选框,我有一个单独的本地表,它维护[Part Number]中所有部件号的列表,这些部件号将它们与一个复选框配对,然后复选框将滚动到显示的查询中。我想要做的是查询只是直接查询[Part Number]并添加它自己的是/否字段来摆脱必须不断更新的表,以确保所有部件号都被考虑在内。

我知道这可以用于文本字段:

SELECT 
 [Part Number].Concatenate, 
 [Part Number].[Part Nbr] & " " & Date() AS [Select] 
FROM [Part Number];

将在查询中添加一个名为“选择”的字段,其中包含部件号和旁边的日期。我希望该字段为Yes/No字段。

编辑:

我不希望[Part Number]表上有Yes / No字段,因为它在多个用户之间共享,并且会干扰数据库根据选择所采取的操作。我也不想使用表,因为部件列表经常更改,前端表必须不断地从后端表[Part Number]进行更新,以确保一切正常。基于[Part Number]表的选择查询将在每次部件列表更改时自动更新,因为它是查询而不是表。此查询将滚动到显示的查询中,该查询将多个表和查询联系在一起。

1 个答案:

答案 0 :(得分:0)

正如@DonJewett所说,对于是/否复选框字段,这是不可能的。你最好的选择就是按照自己的方式去做;每次打开表单时,最简单的方法是清除“是/否”表并重新填充。

(在您选择表单Form_Load()frmMultiSelect):

    Dim strSQL As String
    Dim db As DAO.Database
    Dim rs As DAO.Recordset

    Set db = CurrentDb
    Set rs = db.OpenRecordset("SELECT * FROM tblNodes")

    'Clear current links
    strSQL = "DELETE * FROM tblMultiSelect"
    db.Execute strSQL

    'Create '0' state links for every node in tblNodes
    rs.MoveFirst
    Do Until rs.EOF = True
        strSQL = "INSERT INTO tblMultiSelect(node_id, selected) "
        strSQL = strSQL & "VALUES (" & rs![node_id] & ", 0);"

        db.Execute strSQL
        rs.MoveNext
    Loop

    'Update subform
    Me.frmMultiSelect.Requery