我有一个MS Access数据库,并已存储所有可用列名(> 100列)的表。我在此表中添加了一个字段,该字段只是一个是/否或是/否。
我想在VB中建立查询,或者不一定是VB,选择字段基于用户从此表中选择的内容。我认为将组合框或列表框添加到用户表单将太忙,因为有100多个列可供选择。我认为他们更容易打开表并选择该方式,然后单击表单上的一个按钮,该按钮将调用生成查询并仅选择用户从Column_Names表中选择的那些字段。
有什么想法/建议吗?
我想我已经明白了;至少这符合我的需求。我在用户窗体中添加了一个列表框,该列表框默认不执行查询填充,该查询仅从我的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
我知道这是一则旧文章,但正是我所寻找的,您还有其他详细信息吗?