MS Access,使用基于表选择的字段创建查询

问题描述 投票:0回答:2

我有一个MS Access数据库,并已存储所有可用列名(> 100列)的表。我在此表中添加了一个字段,该字段只是一个是/否或是/否。

我想在VB中建立查询,或者不一定是VB,选择字段基于用户从此表中选择的内容。我认为将组合框或列表框添加到用户表单将太忙,因为有100多个列可供选择。我认为他们更容易打开表并选择该方式,然后单击表单上的一个按钮,该按钮将调用生成查询并仅选择用户从Column_Names表中选择的那些字段。

有什么想法/建议吗?

access-vba ms-access-2010
2个回答
0
投票

我想我已经明白了;至少这符合我的需求。我在用户窗体中添加了一个列表框,该列表框默认不执行查询填充,该查询仅从我的Column_Name表中返回值为“是”的字段。

然后我找到了一个可以调用的函数,它选择了此列表框中的所有值。

然后我运行此小代码以相应地生成SQL

 Dim ctlList As Control, varItem As Variant
  Dim strSQL As String
  Dim strSQL2 As String
  Dim qdf As DAO.QueryDef
  Dim qdfDemo As QueryDef
  Call SelectAll(Form_Custom_Criteria!List27)
  Const conQUERY_NAME As String = "qry_custom_fields"
  ' Return Control object variable pointing to list box.
  Set ctlList = Forms!Custom_Criteria!List27
  ' Enumerate through selected items.
      For Each varItem In ctlList.ItemsSelected
      strSQL = strSQL & ctlList.ItemData(varItem) & ", "
       If strSQL = "" Then Exit Sub
         Next varItem
  CurrentDb.QueryDefs.Delete conQUERY_NAME
  On Error GoTo Err_cmdTest_Click
  strSQL_2 = "Select " & Left$(strSQL, Len(strSQL) - 2) & " FROM Table1;"
  Set qdfDemo = CurrentDb.CreateQueryDef(conQUERY_NAME, strSQL_2)

 Exit_cmdTest_Click:
  Exit Sub

  Err_cmdTest_Click:
   MsgBox Err.Description, vbExclamation, "Error in cmdTest_Click()"
  Resume Exit_cmdTest_Click
 End Sub

-1
投票

我知道这是一则旧文章,但正是我所寻找的,您还有其他详细信息吗?

© www.soinside.com 2019 - 2024. All rights reserved.