MS-Access SubForm条目决定写入哪个表

时间:2014-06-04 11:25:42

标签: database forms vba ms-access

我今天需要的是以下内容:

我已经构建了一个表单,并且我有几个表可以写入该表单,如何在打开表单时将其设置为可选?我认为基本上,在打开表单之前,我应该选择另一种形式的表来写,事情是,要写入的表的列表是不固定的,我有一个用于创建表的表单。

例如,我创建表x和表y和表w,它们在结构和字段名称和所有内容上都相同,它只是更改表名本身和字段中的值。我如何告诉表格我必须在表格x上写字直到关闭表格然后在关闭之后,当我再次打开时,它再次询问哪个表写入并写入它直到我关闭表格。然后我决定创建表格u,下次打开表格时,表格必须在列表中,这有多可行,我应该如何处理它?<​​/ p>

我已经有一个与创建新表的表单进行通信的表,因此,保留了创建的每个表的记录,因此,我可以获取要写入的表的名称,我现在的问题是如何要改变表单中控件的来源,可以从代码中完成吗?

2 个答案:

答案 0 :(得分:1)

在打开表单时,您可以遍历表集合DAO.TableDefs 并使用tableDeft的名称填充列表框。 当用户选择表名时,您可以将表单的记录源设置为表名。

答案 1 :(得分:0)

您可以考虑创建一个包含以下查询的列表:

SELECT MSysObjects.Name 
FROM MsysObjects 
WHERE (Left$([Name],1)<>"~") 
AND 
    (Left$([Name],4) <> "Msys") 
AND (MSysObjects.Type)=1 
ORDER BY MSysObjects.Name;

MSysObjects可以为您提供数据库中的对象列表。 请记住,如果您有通过链接表管理器提供表的后端,则需要使用:

SELECT Name
FROM MSysObjects 
WHERE Databse <> '';

使用此方法,您可以使用此查询作为记录源填充控件。然后,您可以提示用户指示并更明确地处理每个表。