我正在构建一个通信/任务日志系统,用于记录传入通信并根据它们分配任务。MS Access子子表单数据输入
我的数据库都有一个注解系统,使用户可以对各种事物的笔记 - 例如客户记录可能会有一个注明“此客户总是订购他们自己的窗框玻璃”的注释。这一切都是通过一个具有PrimaryNoteTableID
的单个“注释”表来处理的,该表链接到标识该笔记适用的主表的静态查找表,以及存储该表中记录的PK的PrimaryTablePK
字段,其适用于。
为了避免腐败,建议将备注字段保留在他们自己的表中,并与他们的父表(see here)保持1:1的关系,这正是我所做的。
当增加新的通信和任务,用户通常会希望添加以下内容:通信是与人的
- 详细信息。
- 沟通的主题。
- 所需的操作类型和该操作的截止日期。
- 有哪些已经讨论等细节的说明
考虑到这一点,我有:
tblCommTaskLog
与领域CommDate
,ActionRequiredTypeID(FK)
,ActionDeadlineDays
,CommAccountID(FK)
等
tblNote
与:NoteID(PK)
,PrimaryNoteTableID(FK)
,PrimaryTablePK(FK)
,EnteredByUserID(FK)
,EntryDate
。
tblNoteText
与NoteTextID(PK)
,NoteID(FK)
,NoteText(Memo)
一些是外键应该是不言自明的其他表。
本质上讲我遇到有问题的是与这三张表条目的形式。我发现子窗体的访问操作可以是非常愚蠢的,这样的:如果你想使用一个子窗体或子窗体的子窗体
- 你就会陷入到某种方式显示的东西。
- 访问保存记录,然后点击保存。它还将表单中的记录保存在表单的代码中无法用简单的“me.undo”处理的子表单中,并导致您必须在子表单中找到记录并使用代码将其删除。
- 子窗体行事愚蠢的方式,只要他们的方式分配自动编号的PK和孩子并掌握形式之间的联系挑选那些了。
我想只是一种形式从tblCommTaskLog
领域和NoteText
领域,使用户在从tblCommTaskLog
细节填充(ActionRequired等。)和注释文本,点击“保存”按钮,然后通过代码的项目被正确地保存,使得:
- 一个新的记录被
tblCommTaskLog
与创建例如72
(Autonumber)的PK。 - 一个新记录被创建
tblNote
与4
一个PrimaryNoteTableID
其对应于tblCommTaskLog
,的72
一个PrimaryTablePK
和PKNoteID
例如422
(Autonumber)。 - 一个新的记录被
tblNoteText
创造了422
一个NoteID
我想我需要的是一个主要形式与tblCommTask
等领域的未绑定的文本字段采取输入NoteText
。我只是不知道如何在tblNote
中创建新记录,从该字段获取AutonumberPK并将其插入到tblNoteText
的FK中,以便所有内容都可以正确链接到正确的FK。我可以用SQL INSERT和自动编号字段上的SELECT TOP来做到这一点吗?记录集和Lastmodified这样做会更好吗?有没有其他方法我没有想到?
多少主表,你呢?你为什么不用每个[客户,用户,xxx,asdb]的注释表,这样你就可以执行一个简单的1:m关系? – 2014-12-01 16:26:02
目前有11个表格需要存储关于它们的注释。我确定这是做事情的最好方法[这里](http://stackoverflow.com/questions/25992670/notes-system-in-database)。 – WhatEvil 2014-12-01 16:29:31
我没有在自己的表中存储笔记(备忘录类型),并且没有在多年内遭受损坏的数据库。还有其他一些更重要的事情,例如分解FE/BE。 – Fionnuala 2014-12-01 18:05:10