6

假设我有一个表“tblItems”:

*ID*    |     *Name*
1       |   First Item
2       |  Second Item

我希望将其填充到表单的下拉列表中。我将如何添加一行:

ALL     |    SHOW ALL

成为

*ID*    |     *Name*
1       |   First Item
2       |  Second Item
ALL     |    SHOW ALL

将一个查询放在Row Source组合框中?我一直无法找到访问语法来做到这一点..

AFAIK,我需要类似于的语法

SELECT ID, Name FROM tblItems
UNION
SELECT 0, "All" FROM SOME.SYSTEM.DUMMY.TABLE

我找不到的是那个虚拟表的 Access 版本。我真的不想有一个单独的表格来存储一个表格的一行......但从我一直在阅读的内容来看,我可能不得不这样做。

4

5 回答 5

8

你可以这样做:

select ID, Name
from tblItems
union all
select 'ALL', 'SHOW ALL'

如果您总是希望它显示在底部,则必须变得更复杂一些。

根据评论,我意识到 Access 不支持SELECT没有FROM子句的语句,这很烦人。一种解决方法是创建一个表tblAll(可能需要修改语法):

create table tblAll(ID varchar(15), Name varchar(30));
insert into tblAll(ID, Name) values ('ALL', 'SHOW ALL');

那么你可以这样做:

select ID, Name
from tblAll
union all
select str(ID) as ID, Name
from tblItems
于 2012-06-13T13:22:41.043 回答
8

我所做的是使用一个SELECT TOP 1语句并使用现有的表名,所以它看起来像这样:

SELECT ID, Name FROM tblItems
UNION
SELECT TOP 1 'ALL', 'SHOW ALL' FROM tblItems

这将为您提供单行以及现有表中的选择。您可以为该TOP 1行使用任何您想要的表格。

于 2013-09-17T15:51:45.710 回答
3

只想修复 Jeremy Holovacs 在 MS Access 中工作的答案。这样您就可以使用同一张表,而不必创建一个虚拟表。

SELECT ID, Name
FROM tblItems
UNION ALL
SELECT TOP 1 'ALL', 'SHOW ALL' 
FROM tblItems
于 2015-10-06T19:12:14.057 回答
2

您可以使用UNION ALL,但是,常量和列之间存在不匹配(“ALL”不是整数)。您可能会执行以下操作:

select ID, NAME from tblItems
union all
select 0, 'SHOW ALL'

在应用程序端,将 ID 0 解释为“SHOW ALL”。或者,将 ID 转换为字符串。

select str(ID), NAME from tblItems
union all
select 'ALL', 'SHOW ALL'
于 2012-06-13T13:23:59.647 回答
2

请注意,以下仅在表中有任何行时才有效,如果您有一个空表,它将不起作用。

SELECT ID, Name
FROM tblItems
UNION ALL
SELECT TOP 1 'ALL', 'SHOW ALL' 
FROM tblItems
于 2016-08-26T10:53:09.610 回答