组合框与Rowsource表/查询,但也“选择任何”选项

时间:2013-04-16 14:45:21

标签: vba ms-access combobox access-vba

背景:

我正在使用Ms-Access表单,我有一个我在VBA中编码的组合下拉列表

问题:

是否可以根据查询创建一个组合,例如:"SELECT tbl.col1 FROM tbl" 所以你得到一个绑定的下拉列表...

但....

还希望在列表中再添加一个... “未选择”位于顶部。

如果有人有想法,提示或建议,请告诉我。

非常感谢!

一些代码:

    Me.CboUnallocatedPayments.RowSource = " & _
    "SELECT zTempBankCustomerReceipt.TransType, zTempBankCustomerReceipt.Ref, " & _
    " zTempBankCustomerReceipt.Details,zTempBankCustomerReceipt.EntryDate, " & _
    " zTempBankCustomerReceipt.NetAmt, " & _
    " zTempBankCustomerReceipt.PaidStatus " & _
    " FROM zTempBankCustomerReceipt UNION " & _
    " SELECT 0, "**NOTHING SELECTED**" " & _
    " FROM zTempBankCustomerReceipt" & _
    " WHERE zTempBankCustomerReceipt.TransType = 'SA' " & _
    " AND zTempBankCustomerReceipt.PaidStatus = '0'"

1 个答案:

答案 0 :(得分:3)

考虑组合框行源的联合查询。

SELECT tbl.col1 FROM tbl
UNION ALL
SELECT 'None Selected' FROM Dual;

Dual是一个自定义表,其设计保证它始终只包含1行。您可以使用this SO answer上的说明创建自己的Dual表格。但是你不需要为此目的使用特殊的表格;任何返回单行的表或查询就足够了。

关于组合中行的排序,您可以向查询添加第二个字段。如果您希望'None Selected'位于列表顶部,其余行按字母顺序排序......

SELECT 1 AS order_by, tbl.col1 FROM tbl
UNION ALL
SELECT 0, 'None Selected' FROM Dual
ORDER BY 1, 2;