2016-12-18 8 views
0

テーブルのレコードを検索して保守するためのフォームを追加するアイテムテーブルがあります。欠落していたのは、ItemNumber(PK)をオートナンバーの代わりに数値データ型にすることでした。私は今これらのItemNumbersを参照している他のテーブルに何千ものレコードを持っていますが、私は本質的にその番号を "偽の"オートナンバーにする方法が必要です。したがって、ユーザーが新しい項目を作成する場合、itemnumberを含むテキストボックスは、新しいレコードであればそれを調べ、次の番号が何である必要があるかを確認する必要があります。誰かがこれを動作させるために実行する必要があるVBAまたはマクロのサンプルを表示できますか?アクセステーブルの最後のレコードを検索

注:既に番号が使用されている場合、ユーザーに通知するようにフィールドをインデックス化しています。 アクセス2016

+0

フィールドを自動番号にすることはできませんか? FWIW、SQLでこれを行うにはいくつかの方法があります - 'SELECT Max(ItemNumber)FROM Table'または' SELECT TOP 1 ItemNumber FROM TABLE ORDER BY ItemNumber DESC'など – Comintern

+0

@Comintern、私はそれを自家用番号にしたいですが多くの他の場所で参照されているPKが変更され、一連のデータが不正確で無効になります。私は、クエリを作成し、そのクエリの結果に基づいて次の数値を作成しようとします。ありがとう、それについても考えなかった。 – KScott

+0

まず、カスケード更新をオンにします。 – Comintern

答えて

2

私が理解しているように、一意のPK、通常の数値データ型を持つテーブルがあり、自動番号付け機能が必要です。そうであれば、データ型をオートナンバーに変更するのは簡単です。テーブルデザイナーの自動番号フィールドに任意の値を挿入することはできませんが、SQL INSERTを使用して行うことができます。したがって、Autonumberデータ型を持つ新しいテーブルを作成し、PKデータを含むクエリを使用して古いテーブルから新しいテーブルにすべてのレコードをコピーし、既存の13テーブルを新しいテーブルに再リンクし、古いテーブルを削除して新しいテーブル名を変更します。他のテーブルには他の変更は必要ありません。自動ナンバリングを使用してテーブルへの同じ参照を保持します。この操作をコンパクトにしてデータベースを修復すると、自動番号付けが最大挿入値にリセットされます。

これで、新しいレコードの他のフィールドを変更した直後に、新しいオートナンバー値を確認して読み取ることができます。

あなたはまだ、独自のシーケンスを作成したいと、データベースがマルチユーザーであれば、マイクロソフトが推奨するように、私はそれを実装することをお勧めしたい: https://support.microsoft.com/en-us/kb/191253

しかし、それはPKとしてオートナンバーを使う方が良いでしょう、あなたは意志将来的には問題が少なくなります。

関連する問題