MS-Access:是否可以以连续的形式显示“虚拟”行?

时间:2009-11-06 07:42:30

标签: ms-access

我正在寻找一种在MS Access应用程序中显示虚拟行的方法,即在任何表中实际不存在但仅在内存中存在的行。

我可以根据需要创建一个临时表,用我的“虚拟行”值填充它,然后以连续形式显示临时表的内容。然而,如果可能的话,我想在不使用任何临时表的情况下做这样的事情。

感谢您的帮助

修改的: 当我提到“内存中的行”时,我的意思是说我有一些变量(可能存储在一个数组中),我希望在gui / form上显示与存储在表中的行相同的方式。

4 个答案:

答案 0 :(得分:1)

ADO允许您创建断开连接的记录集,并且可以将ADO记录集指定为表单的记录集,这听起来像是要走的路。

但是我要提醒我不要将ADO用于DAO提供的任何功能,而DAO没有像断开连接的记录集那样(尽管对于某些操作你可以使用事务来伪造它),我已经我自己从不需要它们,所以我真的要报告二手信息。

然而,至少就我理解你的问题而言,这对你来说可能是一个有利可图的事情。

答案 1 :(得分:0)

您可以将条目添加到包含多个列的列表框中。不是一个连续的形式,而是接近。确保列表框的行源类型为值列表。

Me.SomeListBox.RowSource = ""
Me.SomeListBox.AddItem "record1;field2;field3"
Me.SomeListBox.AddItem "record2;field2;field3"

答案 2 :(得分:0)

UNION允许您包含虚拟行,并且可以通过包括:

来定义虚拟字段(列)

data as fieldname

FROM可以是数据库中的任何表或查询,但它必须至少包含一行,否则您将获得零行结果集。

所以:

SELECT -1 As ID, True As Virtual, "All" As Stuff FROM Table1
UNION
SELECT 0 As ID, True As Virtual, "None" As Stuff FROM Table1

您不必包含任何实际行,但您可以:

UNION 
SELECT  ID, False As Virtual, Stuff FROM Table1

此方法通常用于向列表框或组合框添加“全部”或“无”。

答案 3 :(得分:-1)

虽然可以使用UNION执行此操作:

SELECT 0 AS ID, True AS Virtual, 'None' AS Stuff 
  FROM Table1
UNION 
SELECT ID, False, Stuff 
  FROM Table1;
UNION
SELECT -1, True, 'All'
  FROM Table1;

...使用UNION ALLDISTINCT关键字

一起使用SELECT DISTINCT 0 AS ID, True AS Virtual, 'None' AS Stuff FROM Table1 UNION ALL SELECT ID, False, Stuff FROM Table1; ORDER BY ID UNION ALL SELECT DISTINCT -1, True, 'All' FROM Table1; 可能会更好
UNION ALL

为什么选择UNIONUNION对数据执行隐式排序,您可能不需要;如果你使用显式排序然后使用一个! (正如文档告诉你的那样,隐式排序不能保证,所以不要依赖它。)

为了执行排序,只会考虑MEMO数据的前255个字符,而在extremis中可能会导致从结果集中删除整行:(

UNION的隐式排序也对性能产生了相对巨大的影响:我使用100K行表测试,UNION ALL方法花了21秒,而{{1}}只花了3秒秒。