我可能是这个得太多,但我看到各种各样的潜在问题....取消单场的更新对MS Access 2007的结合形式
我有我会打电话给法师的表。除其他项目外,它还包含一个名为Serial的字段。我想认为这将是一个静态的项目 - 即,它永远不会改变(一旦初始分配),为主任何给定的行。我现在发现它可以改变,不仅如此,我需要存储那些改变的历史。
我可以将串行分成一个单独的表,其中每一行将有一个MasterId,EffectiveDate和Termination Date(主行的当前串行将是一个(并且只有一个代码强制的)行,一个空终止日期)。到目前为止,这么好....
现在我问的问题是:我有一个绑定窗体构建在Select从主包含Serial上。
什么我认为我想要做的,使这种可变性对用户透明,是短路任何对串行文本框,可能在文本框BeforeUpdate事件进行的更改。然后,我会使用代码来终止串行表中的当前行&插入一个新行,它变为当前行并显示在文本框中。我会(我认为)需要取消窗体的记录集中的更新,没有失去了用户对其他字段所做的任何更改....
在这一点上,我的大脑出去吃午餐,我仍然可以更加舒适地使用未绑定的表格&保存按钮。我能按照建议做到吗?我需要了解哪些陷阱&?如果需要的话,我可以将表单中的Serial字段设置为只读,并且需要弹出窗口才能对其进行编辑,但是如果可以的话,我宁愿避免。
* *编辑
希望这有助于:
以前
table Master
Id AutoNumber PK
Serial Text(20)
--other fields
当前frmMaster记录来源:
SELECT Id, Serial, yada, yada FROM Master WHERE blahBlah
后
table Master
Id AutoNumber PK
--other fields
table Serial
Id AutoNumber PK
MasterId Long
Serial Text(20)
EffDt Date/Time
TermDt Date/Time
新frmMaster记录来源:
表单上SELECT Master.Id, Serial.Serial, yada, yada
FROM Master LEFT JOIN Serial ON Master.Id = Serial.MasterId
WHERE Serial.TermDt is Null AND blahBlah
的 “编辑” 应该导致:
- 选择行串行得到TermDt填充(NOW()) 。对此行的Serial.Serial的值不做任何更改。
- 在串行一个新行被创建,用新的串口,相同MasterId和EffDt = NOW()显示在形式
- 新串行,优选使得它看起来给用户,如果他们想在适当位置刚刚编辑。
- 对表单上其他字段所做的任何更改都会被保存。
编辑,再次
好了,所以HansUp给了,看起来像它涵盖了大多数的什么,我需要一个答案。我剩下的绊脚石甚至可能不是问题(但如果是这样的话,有人可以解释为什么吗?)。
添加主的用例是非常简单的,但是在改变,我仍然困惑串行更新的使用情况:如果txtSerial
势必Serial.Serial
,和用户改变txtSerial
内容,深得访问尝试更新Serial.Serial
的内容以匹配?如何在变更时添加一个串行(这看起来应该是一种享受),防止更新现有的串行?
这是一个难以想象的IMO。向我们展示包含Master和SerialHistory表格相关字段的示例。 – HansUp 2011-04-20 19:09:23
在你的例子中,串行字段是否成为主表和串行表的一部分? – 2011-04-20 19:19:00
有关更多信息,请参阅编辑。 – RolandTumble 2011-04-20 19:40:03