说我有一个表“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
中?我无法找到Access语法来执行此操作..
AFAIK,我需要类似于
的语法SELECT ID, Name FROM tblItems
UNION
SELECT 0, "All" FROM SOME.SYSTEM.DUMMY.TABLE
我找不到的是那个虚拟表的Access'版本。我真的不想要一个单独的表只是为一个表单存储一行......但是从我一直在阅读的内容中我可能不得不这样做。
答案 0 :(得分: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
答案 1 :(得分:6)
我所做的是使用SELECT TOP 1
语句并使用现有的表名,所以它看起来像这样:
SELECT ID, Name FROM tblItems
UNION
SELECT TOP 1 'ALL', 'SHOW ALL' FROM tblItems
这将为您提供单行以及现有表格中的选择。您可以使用TOP 1
行所需的任何表格。
答案 2 :(得分: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'
答案 3 :(得分:2)
只想修复Jeremy Holovacs'回答在MS Access中工作。这样您就可以使用相同的表而不必创建虚拟表。
SELECT ID, Name
FROM tblItems
UNION ALL
SELECT TOP 1 'ALL', 'SHOW ALL'
FROM tblItems
答案 4 :(得分:2)
请注意,以下内容仅在表中有任何行时才有效,如果您有空表,则无效。
SELECT ID, Name
FROM tblItems
UNION ALL
SELECT TOP 1 'ALL', 'SHOW ALL'
FROM tblItems