• ベストアンサー

オートナンバー型の数字を振り直すには?

一時テーブルを作成します。 '一時テーブル枠作成 sSql = "CREATE TABLE 一時テーブル (" sSql = sSql & " No int IDENTITY (1, 1) NOT NULL, " sSql = sSql & " 項目1 char (2) NOT NULL ," sSql = sSql & " 項目2 char (3) NOT NULL ," sSql = sSql & ")" goRDO_Con.Execute sSql として作ります。 その後,このテーブルに追加する時 自動的にオートナンバーが振られると思うのですが、 最初に(1)ORDER BY 項目1で追加してオートナンバーを振るとします。 そのあとで、 一度テーブルの中身をDELETEして、 (2)ORDER BY 項目2で追加するときにオートナンバーが前のままなのですが、 何か方法はないでしょうか? 質問の意味が伝わるか心配・・・ とても緊急です。どなたか助けてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#102878
noname#102878
回答No.3

私がオートナンバーを使うのは主キーとしてバックエンドで使用する場合のみにしています。 ナンバリングは完全にAccess任せです。 また、オートナンバーの値は絶対にユーザーに見せません。 ユーザーが歯抜け状態の値を見ると「抜けている番号を詰めてほしい」なんて言い出すからです。 どうしても連番のフィールドが欲しいのであればLong型もしくはテキスト型のフィールドを作り、連番を振るロジックを独自に作ってください。 例えば最終番号を別テーブルで管理しておくとか。 連番フィールドで一番大きな値を取得して、それに1を足した値を新規レコードに振るとか。 間を詰めたいのであれば連番フィールドでソートして取得したレコードセットを最初から最後までループさせながら連番を再設定するとか。

その他の回答 (3)

  • onp
  • ベストアンサー率23% (70/301)
回答No.4

私は、元のテーブルと同じものを作っておいて、中身のDELETEじゃなく DELETEOBJECTして、COPYOBJECTしてました。 でも、処理が途中で止まったりしたら、ファイルが消えたままになるので あまり有益な手段ではないかも・・・。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

まず、データベースの種類はAccess MDBでいいですか? MDBにRDO使ってる人は見たことないので。 オートナンバーの数字を振りなおすには、MDBを最適化する必要があります。 Accessがインストールされているマシンであれば、Accessを呼び出して最適化をすることが出来ます。 Accessがインストールされていないのであれば、JROを使えば最適化(修復)が出来ます。

参考URL:
http://www.microsoft.com/japan/msdn/data/techmat/ado/dao2ado_8.asp
回答No.1

こんにちは オートナンバーの仕様なので、一度振った番号は振りなおません ACCESSなどで調べてみればわかりますが 10件レコードを新規で作った後、全部削除して 一度テーブルを閉じて、新たにレコードを作ると 11となります。 >一度テーブルの中身をDELETEして、 これはオートナンバーはそのままで、項目1、2だけをクリアすると いうことですよね? どういう処理をなさりたいか、わかりませんが オートナンバー以外に"ソート順ナンバー"という意味の数値フィールドを 設けられる。という事で対処できませんか?