ms-access:查询中丢失的自动编号格式

时间:2015-01-26 16:51:41

标签: ms-access key ms-access-2007

我必须为我的工作开发这个数据库,其中一部分是我有4种不同类型的成员需要系统可用:学生,家长,导师和教练。每个都有不同的信息关联,所以他们都有自己的表。另一张桌子是"笔记"我希望能够附加的表格和每个成员的无限数量的笔记。

因此,对于每个表,都有一个格式化的自动编号。对于学生来说,这个数字应该是增量顺序的S ####。这个数字并不重要,将会有不到9,999名学生,所以我对自己所需要的一切都充满信心。父母也有P ####,依此类推。

需要这样,因为数据库还包含调查问题和答案。我的观点是,调查回复可以通过member_ID,年份和期限来唯一标识(因为它们仅在某些时间开放)。问题是如果没有在查询中找到格式化的自动编号,那么ID将重复且不唯一。

所以我的问题是,格式化autonumber不起作用吗?我是否必须使用一些VBA来构建我自己的自动编号字符串,该字符串将通过查询和其他表查找继续进行?


编辑:所以HansUp(下面)建议使用成员表提供的主列表。我已经设定了这个,因为我还没有想到另一种选择。基本上,流程是这样的:

  1. 数据库用户点击"新学生"
  2. "新生"表单打开,以及"新成员"。
  3. "新成员" form创建一个新的ID#并分配S组,关闭可行性
  4. 然后将连接的ID传递给"新学生"形式
  5. 如果确定,则所有更改都会被投放
  6. 如果取消,则DoCMD.Undo为新学生和新成员。
  7. 会这样做吗?我不确定如何将撤消声明传递给"新成员"形式虽然...

1 个答案:

答案 0 :(得分:0)

保持自动编号字段不变。即使它符合您当前的业务需求,它也无济于事,一旦您的应用程序进一步发展,它将产生问题。

使用GUID / UUID克服数据库级(甚至全局级)唯一ID问题。这样,您将在整个数据库中维护一个唯一的ID,这将有助于您的所有实体只有一个“注释”表。

简而言之:

  • 在表格中添加GUID字段
  • 使用触发器或公共功能/宏来生成GUID
  • 尝试合并学生,家长,导师和通过“类型”
  • 将它们分开来引导到一个表中
  • 请记住,自动编号字段不是连续的(如果某些记录被删除,则会有gab存在)
  • 您始终可以执行字符串连接/格式以在查询中生成S12355号码,以便将其呈现给最终用户。

我猜你的主要目标是只为所有用户使用一个记事簿。 GUID将是最佳选择。 这里有一些起点:How can I generate GUIDs in Excel?