人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Microsoft Access での連番について教えてください。

すでにレコードが入力されているテーブル内のあるフィールドに対して、1件1件のレコードを一意に識別できるように連番を振りたいと考えています。

更新クエリ1発で簡単にできる方法があれば教えてください。

外部からプログラムでクエリを呼び出すので手操作が介入する方法は使えません。

また、ADO/DAOでレコードを1件1件フェッチしては連番を設定していく、というような方法は分かるので、もっと簡単でスマートな方法を知りたいです。

●質問者: you1982
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:access Microsoft クエリ スマート フィールド
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● godhoruseye
●0ポイント

テーブル内のあるフィールドのデータ型をオートナンバー型にすれば済む話ではありませんか。

特にクエリでする必要も無いはずです。

対象のテーブルをデザインビューで開いて、一意に識別できるように連番を振りたいフィールドのデータ型をオートナンバー型にして保存して開けば

番号が振られますよ。

◎質問者からの返答

申し訳ありませんが、そう言う話ではありません。


2 ● kn1967
●85ポイント

>1件1件のレコードを一意に識別できるように連番を振りたい

レコードを一意にするためのキーフィールドが別に存在するのであれば

SET 連番フィールド = DCount("*","T","キー <= " & キー);

なんて形で対応できますが、そうではないから連番を振りたいのですよね?


だとすればオートナンバー型フィールドをクエリで追加するのが良いと思いますよ。

ALTER TABLE テーブル名 ALTER COLUMN フィールド名 COUNTER (1,10)

1は初期値、10の部分は増分なので通常は1ですが説明用に見分けやすくするため10と書きました。

◎質問者からの返答

お察しいただいているとおり、キーがないテーブルなので連番を振りたいという話なんですが、外部からその番号を任意に与えることもあるのでオートナンバーは使いたくないのです。

ただ、ご回答を応用してオートナンバーCOLUMNを追加した上でそれを目的のフィールドにコピーした後、オートナンバーCOLUMNを削除、というようにすればそれはそれでOKな気もしてきました。

コスト的には1行1行フェッチして値を入れるよりも少し速そうな気がしますね。

何となくテーブル定義をいじるのは美しくない気がするので、もし他にスマートな方法がありましたら引き続きお願い致します。


3 ● anderson
●0ポイント

Uniqueキーが対象テーブルに既にあるのなら、キーとオートナンバーフィールドのテーブルBを作っておき、元テーブルからキーをインサート。で、次はテーブルBのキーを元にオートナンバーを元テーブルに更新(元テーブルには空きフィールドを作っておく)、とか。

◎質問者からの返答

前回答のコメントに書いたようにユニークキーはありません。


4 ● anderson
●5ポイント

ついでに思いついたのですが、元テーブルと同じレイアウトの空テーブルを用意しオートナンバーのフィールドを追加しておく。で、元テーブルから空テーブルにインサートすると空テーブル側に追加の際オートナンバーがふられます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ