我有一张表连接三个表,每个表用于员工,项目和程序:
员工1-1计划(每位员工在任何指定时间只能分配到一个计划) 员工1人(每位员工可以申请多个库存项目)
我为这个表创建了一个表单,在其上创建了一个组合框,允许用户选择多个项目。
我怎样才能这样做,例如,如果用户输入他/她的员工ID和他/她的程序代码并检查三个项目,那么表中会保存三个记录(而不是一个记录但具有多个值对于那个领域)?
答案 0 :(得分:0)
简短的回答是,您不能使用多值字段为每个已检查的组合框项创建新记录,除非您想要进入非常复杂的VB脚本。 但是,您可以通过创建和运行SQL语句来打印多值字段,这实际上会准确地显示您描述/请求的信息。
您可以通过进入 Row Source
表单,在表单上为文本框或组合框设置 Design View
,然后点击该字段然后在 Property Sheet > Data >
下的文本输入区域将SQL语句设置为等于不同的表以获取您引用的值,然后设置 Control Source
(上面行Source)到您要存储该信息的输出fieldname / table。
SELECT tblName.FieldName1.Value AS FieldName, tblName.FieldName2, tblName.FieldName3 FROM tblName;
tblName.FieldName.Value AS
x.Value
,因为 x.Value
是个人整个表的每个多值组合框条目的条目,其中包含此信息"〜存储"。
如果您运行上面的SQL查询(显然更改为您的实际表和字段名称),那么您将看到一个临时表(视图),其中包含多值的所有单个值,如打印输出。
CREATE TABLES:我提到引用的地方执行上述步骤,但请记住,您可能需要使用 WHERE
=
某事来设置条件 AND OR
。
员工计划表:[UniqueRowID],[StaffNum],[Name],[ProgrammeName],等等
ProgrammeName列引用Program Lookup表中的ProgrammeName。您需要设置字段名称"显示控件"在"查找"到combobox然后像前面提到的那样将Row Source设置为SQL语句,以便它知道从何处获取程序名称的值。
程序查找表:[UniqueRowID],[ProgrammeName],等等
这包含所有存在的值。易于更新和维护。
员工项目表:[UniqueRowID],[ItemName],等等
ItemName列引用Inventory Lookup表中的ItemName。您需要设置字段名称"显示控件"在"查找"到combobox然后像前面提到的那样将Row Source设置为SQL语句,以便它知道从哪里获取库存项的值。
库存查询表:[UniqueRowID],[ItemName],等等
这包含所有存在的值。易于更新和维护
或者,创建另一个包含所需值的表。然后创建一个SQL语句:
INSERT INTO newTableName(newfield1, newfield2, newfield3, etc)
SELECT sourcetblName.sourceFieldName1.Value AS FieldName, sourcetblName.sourceFieldName2, sourcetblName.sourceFieldName3 FROM SourcetblName;