2017-02-14 15 views
0

を実装し、2013年私はセットアップに必要なマルチレベルアウトライン構造

  • アウトラインがずっと各レコードは1つだけを持つことができますワードのアウトラインのように動作する必要があるのMicrosoft Accessで要件管理のためのマルチレベルのアウトライン構造を管理します1人以上の兄弟(兄弟姉妹の順序は関係ありません)と0人の子供を持つことができます。
  • 可能な限り多くのアウトラインレベルをサポートする必要がありますが、現在のデータは15レベルを超えていますが、可能な場合は削減されています。
  • は、レコードに子があり、兄弟があり、その親が何であるかを判断できる必要があります。
  • は、レコードが削除されたときにレコードのすべての子を削除できる必要があります。
  • 、追加、削除、コピー、および移動は、アウトライン構造内で行われたときに、アウトラインの番号を変更できるようにする必要があり
  • アウトライン構造に記録した後、または下に新しいレコードを追加できるようにする必要があります。

現在のアプローチは、一意のIDと、輪郭#の個々のレベル番号ごとに15個の数値フィールドと、アウトライン順に整理するための種類の数値フィールドを使用するテーブルです。このような状況に関連するいくつかの問題に実行している

  1. は、これが最良のデータ構造のアプローチであるか、私は別のテーブルに情報を概説移動する必要がありますか?
  2. アウトラインオーダーソートのクエリでは、レコードの親を決定する計算列としてVBA関数を作成し、兄弟がある場合は子を持ち、子がある場合はVBA関数を書き込むことができます。
  3. vbaでsql selectを実行して、レコードの親、子、兄弟を計算カラムとして取得するときと同じテーブル/クエリをクエリすることは可能ですか?
  4. データトリガーを使用して、このアウトライン構造の管理をサポートすることは可能です。アウトライン構造の

例: 1 1.1 1.1.1 1.1.2 1.1.2.1 1.1.2.2 1.1.3 2 2.1 2.2 2.3 2.3.1 2.3.1.1 2.3.1.1.1

答えて

0

これは全く些細なアクセスであることを行っていません。レベル数の最大限の柔軟性のために、私はレベル番号のために別々のフィールドを使用せず、列ID、NodeNumber、OutlineNumber、ParentID(NodeNumberはこのレコードが存在する兄弟を示す単一の数字になります)所与の親1,2,3およびOutlineNumberは、このレコード(1.2.1,1.2.2,1.2.3)の完全なアウトライン参照になります。 ParentIDを使用してレコードの親を識別します。同じParentIDを持つすべてのレコードを照会して兄弟を検索する。クエリレコードは、ParentID =現在のレコードのIDで、子を検索します。挿入、更新、削除を制御するための深刻なVBAコードを書く必要があり、人々が手動でテーブルにデータを追加することはできません。残念ながら、Accessにはデータトリガーはありません。

[編集]明らかに私は間違っています!アクセスにはdata macroと呼ばれるSQL Serverの "トリガー"機能と同等の機能がありますが、これまで使用したことはありません。多分これがあなたを助けるかもしれない?

+0

情報をいただきありがとうございます。私はこれがささいなことではないことに同意します。私が使用しているオープンソースツールで使用していることと同様のアプローチを見てきました。残念ながら、このツールにはアウトライン構造が破損していることを知っている人がいます。実際には、2つのバグを見つけて修正する必要がありました。それはコンセプトを無効にしませんが、このタイプの構造がいかに管理しにくいかを示しています。残念ながら、私がこのプロジェクトで取り組んでいる制約は、アウトライン構造を管理しないで、ユーザーの手に委ねようとしました。 – Warden

関連する問題