1

Access データベースにカスタム主キーを作成したいと考えています。

データベースはマルチユーザーになるため、複数のユーザーが同じテーブルに新しいレコードを追加しようとしている場合でも、各キーが一意であることを保証する方法が必要です。

カスタムの主キーを作成する必要があるのは、データベースが、私が制御できない別の外部システムに入る監査証跡から始まるためです。

ただし、この別のシステムでは、12 文字の長さのユーザー定義フィールドを 1 つ使用して、選択したデータを渡すことができます。

そのユーザー定義フィールドを使用して、後で推定できるさまざまな略語を持つ 12 文字のコードを記録したいと思います (たとえば、最初の 2 文字は組織の部門に関連し、次の 3 文字は製品に関連するなど)。 ..)

私がこれまでに読んだことによると、Access のカスタム キーは地雷原のようです。

ただし、私の目的のためには、Access の autonumber フィールドを組み合わせて、基本的に必要な主キーを構築するのに少なくとも妥協が見られます。

これが私が考えていたことです:

後で推定したいコードの部分は、ユーザーが作成できます。たとえば、部門が人事部の場合、最初の 2 文字は常に「HR」になります。

次に、「HR」エントリが入力された同じテーブルのフィールドに対してアクセスのオートナンバーを実行させたとしましょう...同じテーブルで2を自動的に連結する3番目のフィールドを取得できますか(クエリではありません)。 .? つまり、このように:

| Department | AutoNumber | CustomPrimaryKey |
|    HR      |     1      |        HR1       |

それが VBA のあるイベントで実行できるものであれば、それは素晴らしいことです (コードを見せてください! :))

2番目の部分は、カスタム主キーの「一意の番号」部分が99999から00001の間、つまり次のように同じ5文字のスペースを占めることを保証するために、自動番号を先行ゼロと連結できるかどうかです。

| Department | AutoNumber | CustomPrimaryKey |
|    HR      |     1      |     HR00001      |
|    HR      |     2      |     HR00002      |

100,000 を超えるエントリが必要になる可能性はほとんどありません。

これが可能で安全であることを願っています!

4

1 に答える 1

1

必要なものが完全に明確であるとは思わないため、これは回答ではなくコメントとして残しておきたいと思いますが、可能な限り最善の回答を試みます。また、「コードを見せてください!」というつもりもありません。あなたが示唆するように、それは何も教えません。

3 番目のフィールドを自動的に連結するという最初の質問では、実際にはフィールドがどのように入力されているかが問題になります。

フォーム入力によるものである場合は、コンポーネント フィールドにデータが入力されているコントロールの更新イベント中に、すべてのコンポーネント フィールドをキー フィールドに連結できます。VBA では、フォームのレコードセットにアクセスすることで、レコードのメンバーを簡単に参照できます。

インポート仕様が既にあるファイル インポートを使用してフィールドにデータを入力する場合は、キー フィールドを除いてインポートを実行し、インポートしたテーブルのレコードセットを開き、レコードセットを反復処理します。ADO レコードセットについては、こちらをご覧ください。繰り返しますが、これが何のために必要なのかよくわからないので、コードを書くつもりはありません。

独自のパーサーを使用してフィールドに入力している場合は、おそらくこれを行う方法を説明する必要はありません。

2 番目の質問に対しては、format() 関数を使用して、文字列内の数値を簡単に右揃えにすることができます。たとえば、format(2,"00000")「00002」format(210,"0000")が生成され、「0210」が生成されます。string() 関数を使用して、アラインする 0 の数を可変にすることもできます。たとえば、format(2054,string(12-len("HR"),"0"))「0000002054」が返されます

もう 1 つ注意しておきたいのは、「私がそうする可能性は非常に低い」などと言って、その準備をしないでおくのは決して良い考えではないということです。マーフィーの法則は B の苦痛です。キーが処理できる制限を超える条件を処理することを検討する必要があります。

于 2013-05-10T00:59:34.097 に答える