- ベストアンサー
ACCESSでINSERT文を行うとき
ACCESSで[入力テーブル]から[実績テーブル]へINSERT文を行うと、[実績テーブル]に追加されたレコード順番が、[入力テーブル]に書き込まれたレコードの順番と合わなくなってしまいます。 例 [入力テーブル] [実績テーブル] --------------------------------------------- A → A B → C C → D D → B とくにORDER BY句を使っているわけではないのですが、原因として何が考えられるのでしょうか? どちらのテーブルにもIDを持ってそのIDでソートすれば良いのかもしれないのですが、ワケあって入力テーブルにIDを持たせるのが難しいのです。 アドバイスお願いいたします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> オートナンバーを1に戻すことってできるんですかね? できますが、方法はバージョンによって若干違います。 テーブルのオートナンバーを振りなおす方法(β版) http://www.f3.dion.ne.jp/~element/msaccess/AcTipsTblReNumberAutoNumFld.html こちらが参考になると思います。
その他の回答 (4)
- palmmy
- ベストアンサー率38% (841/2169)
[実績テーブル]であれば使用しなくても日付・時間など入れるような気がしますが。(同じ時間でデータが発生する場合は工夫が必要) そういうのは駄目ですか?
お礼
アドバイスありがとうございます。 残念ながら同じ時間で発生する場合があるのです。
- bin-chan
- ベストアンサー率33% (1403/4213)
> オートナンバーを1に戻すことってできるんですかね? レコードの削除があるんですね? でないと、100万件あれば100万通りのナンバーがありますので。 MDBの最適化を行うか、テーブル構造をコピーした後、 レコードをInsertさせ、新旧のテーブル名をリネームでOKのはず。 ただし、オートナンバーのIDでテーブル間のリンクを行っていたら、えらいことになります。 同期した上で行ってください。
お礼
アドバイスありがとうございます。 >レコードの削除があるんですね? そうです。 [入力テーブル]はワークテーブルなので、フォーム起動時にレコードをクリアします。 >MDBの最適化を行うか、テーブル構造をコピーした後、 レコードをInsertさせ、新旧のテーブル名をリネームでOKのはず。 ただし、オートナンバーのIDでテーブル間のリンクを行っていたら、えらいことになります。 同期した上で行ってください。 ということは毎回起動時に[入力テーブル]を作り直すということですよね。 難しそうでね。(汗)
- Gin_F
- ベストアンサー率63% (286/453)
> そのままずっと使っていたらナンバーがオーバーフローしないのでしょうか? Long 長整数型 -2,147,483,648 ~ 2,147,483,647 の範囲の数値が設定できます。 ただし、小数は設定できません。(既定値) なし この範囲を超えてしまうと、オーバーフローか、テーブルがおかしくなると 思います。
お礼
アドバイスありがとうございます。 やはりそうですよね。 オートナンバーを1に戻すことってできるんですかね?
- bin-chan
- ベストアンサー率33% (1403/4213)
よくでてくる質問ですね。 でもデータベースは格納順を意識しません。 1.オートナンバーでIDを振る 2.表示なり、レポートなりではオートナンバー列を表示しない。 しか解決できないでしょう。
お礼
アドバイスありがとうございます。 オートナンバーでID振る場合なのですが、 そのままずっと使っていたらナンバーがオーバーフローしないのでしょうか? 最大数までいったら自動的に1に戻るのでしょうか?
お礼
アドバイスありがとうございます。 やはり最適化するか、テーブルを作り直すのが妥当なようですね。