代码之家  ›  专栏  ›  技术社区  ›  user97863

MS Access MDB:将备忘录字段拆分为多个文本字段。(防止数据损坏)

  •  3
  • user97863  · 技术社区  · 15 年前

    我使用一个用作后端的访问数据库。
    我使用一些备忘录字段。

    我了解到备忘录字段可能会导致数据库损坏,因为它们存储在单独的数据页中;记录只保存指向存储实际数据的数据页的指针。

    大多数时候我只需要100到1000个字符左右,所以我有了一个想法…
    我的“聪明”(或不是)想法是把备忘录分成4或5个文本字段(每个字段可以容纳255个字符)。

    以前有人这样做过吗?
    有什么已知的问题吗?
    这种方法是否不太容易出现数据损坏?

    谢谢,
    贾格

    附笔。
    1。我以前有过腐败问题。
    2。我知道最好的办法是迁移到另一个后端,但这是不可能的。

    2 回复  |  直到 15 年前
        1
  •  6
  •   David-W-Fenton    15 年前

    更好的解决方法是将备忘录数据页从附加的记录中分离出来。这样做的方法是将备忘录字段放在单独的表中。您可以使用一个1:1的表(边表中有多个备忘录),或者更好的方法是使用一个1:n的表和一个备注类型字段。后一种方法是完全避免备忘录指针问题的唯一方法,但是,与前一种解决方案一样,备忘录表中任何备忘录指针的损坏都会导致您丢失所有这些指针。

    另外,你应该考虑 为什么? 你的数据库正在损坏备忘录指针。除了上面的建议,您可能还应该考虑编辑未绑定的备忘录,尽管看起来您使用的不是Jet MDB的访问前端,这可能不是问题。我不时地看到备忘录的腐败,但不是经常看到。如果您经常看到它,它向我建议您的应用程序设计不好,或者您的操作环境明显不合格。

        2
  •  2
  •   BIBD    15 年前

    这听起来像是你想把一个已有的备忘字段切碎,然后把它放到数据库中,然后在需要显示的时候把它粘在一起。

    我想如果你尝试的话,你会陷入痛苦的世界。如果这是你唯一的选择,我会更加努力地改变后端系统。

    我将根据dwf的回答,建议您执行您建议的操作。 制作一个1:n的表(我称之为用户注释),其中包含一个文本字段(与您似乎遇到问题的备忘录相对应)。

    然后创建一个以usernotes作为记录源的子窗体,并将memo字段替换为usernotes子窗体。这允许用户决定行/段落分隔符在255个字符文本字段的上下文中的位置。 (对于转换,您仍然需要将备忘录切碎,但这只是一次操作)