Database MS Access子窗体条目决定写入哪个表

Database MS Access子窗体条目决定写入哪个表,database,forms,vba,ms-access,Database,Forms,Vba,Ms Access,我今天需要的是: 我已经构建了一个表单,并且我有几个表格可以在其中写入表单,如何在打开表单时使其可选择?我的想法是,基本上,在打开表单之前,我应该在另一个表单中选择要写入的表,问题是,要写入的表列表不是固定的,我有一个用于创建表的表单 例如,我创建了表x、表y和表w,它们在结构、字段名和所有内容上都是相同的,它只是更改了表名本身和字段中的值。我如何告诉我拥有的表单,它必须在表x上写入,直到关闭表单,然后在关闭后,当我要再次打开时,它会再次询问要写入哪个表,并向其写入,直到我关闭表单。然后我决定创

我今天需要的是:

我已经构建了一个表单,并且我有几个表格可以在其中写入表单,如何在打开表单时使其可选择?我的想法是,基本上,在打开表单之前,我应该在另一个表单中选择要写入的表,问题是,要写入的表列表不是固定的,我有一个用于创建表的表单

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


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

打开表单时,您可以通过tables集合DAO.TableDefs进行循环 并在列表框中填入tableDeft的名称。
当用户选择一个表名时,您可以将表单的记录源设置为表名。

您可以考虑创建一个带有如下查询的列表:

SELECT MSysObjects.Name 
FROM MsysObjects 
WHERE (Left$([Name],1)<>"~") 
AND 
    (Left$([Name],4) <> "Msys") 
AND (MSysObjects.Type)=1 
ORDER BY MSysObjects.Name;
选择MSysObjects.Name
来自MsysObjects
其中(左$([Name],1)“~”)
及
(左$([Name],4)“Msys”)
和(MSysObjects.Type)=1
按MSysObjects.Name排序;
MSysObjects可以获取数据库中的对象列表。 请记住,如果您有一个通过链接表管理器提供表的后端,则需要使用以下方法:

SELECT Name
FROM MSysObjects 
WHERE Databse <> '';
选择名称
来自MSysObjects
数据库“”的位置;

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

好的,听起来不错,我该怎么做才能只列出具有特定名称的表(名称相同,仅更改后面的数字,例如:PF 00、PF 01、PF 01)34@Antero:如果保留,则类似于“foreach tableDef tdf in tableDefs”(pdf.SourceTableName,2)=“PF”调用AddToList(tdf.SourceTableName)