- ベストアンサー
いちばん最後のレコードに値の追加ができません
- ある条件を基に複数のテーブルを参照しデータ加工を行った後に、レポート作成用テーブルのいちばん最後のレコードに必ず追加登録をしたいのですが、結果が異なるため困っています。
- RecordsetオブジェクトはテーブルタイプとAddnew、Updateメソッドで追加登録していましたが、思うように動作せず、ダイナセットタイプに変更しても変わりませんでした。
- 参考書にはダイナセットタイプのRecordsetオブジェクトは必ずいちばん最後のレコードに追加されると記載されていましたが、実際にはうまくいかず困っています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
レコードの並び順は保証されていません。 http://support.microsoft.com/kb/834927/ja http://www.naboki.net/access/achell/achell-03.html 指定してやる必要が有ります。 入力順などというプロパティは無いので、 入力順に並べたい場合は、オートナンバー型のフィールドを追加して そのフィールドを並び替えのキーに指定するとかではないですかね。
その他の回答 (2)
- nicotinism
- ベストアンサー率70% (1019/1452)
オートナンバー型は長整数型です。 『4 バイトで、-2,147,483,648 ~ 2,147,483,647の範囲の整数を表すデータ型。Visual Basic では、キーワードは Long で、型宣言文字はアンパサンド (&) です』 限界に達したらどうなるかというと オートナンバー型フィールドが上限値を超えた場合はどうなる? http://www.ruriplus.com/msaccess/Exp/Exp0901.htm 負の数を使い始めたら入力の並び替えには使えませんね。 もっとも、その前にAccessでは重たくて。。。 道草ですが日付時刻型に時刻の部分も入れれば(Now()とかで)もっと使えます (^^ゞ データ型の限界の前にAccessが過労死するのは間違いないと思います。 『倍精度浮動小数点数型 (Double) の変数は、IEEE 64 ビット (8 バイト) の浮動小数点数の変数です。負の値は -1.79769313486231E308 ~ -4.94065645841247E-324、正の値は 4.94065645841247E-324 ~ 1.79769313486232E308 の範囲の値をとります。倍精度浮動小数点数型の型宣言文字はシャープ記号 (#) です。』 >初期値(1からスタート)に戻すこと 『Access オートナンバー リセット』でGoogleって見てください。 http://support.microsoft.com/kb/812718/ja テーブルのオートナンバーを振りなおす方法(β版) http://www.f3.dion.ne.jp/~element/msaccess/AcTipsTblReNumberAutoNumFld.html などなど。 AccessClub.jp さんが見えなくなってる?。
お礼
ありがとうございました。 とても勉強になりました。
- bin-chan
- ベストアンサー率33% (1403/4213)
> ある条件を基に複数のテーブルを参照し キーの構成が気になりますね。主キーだったり、ソートしてませんか?
お礼
おかげさまで解決することができました。 ありがとうございました。 ACCESSではレコードの並び順は保障されていないのですね! レポート作成テーブルにオートナンバー型のフィールドを追加しそのフィールドの並び替えを行うことで解決できました。
補足
さっそくのご回答ありがとうございます。 ご指摘のキーの構成ですが、レポート作成用のテーブル及び参照しているテーブルには主キーの設定はありません。 参照しているテーブルには一部インデックスの設定がありレポートデータの編集処理で並び替え処理を行っていますが、デバック時に並び替えルーチンを通らないようダミーデータで試してみましたが結果は同じでした。 デバック時にレポート作成用テーブルに登録するデータをUPDATEする前にフォーム上に表示させ確認しましたが、フォームに表示されるデータは期待する順番で表示されるのですが、登録処理完了後にレポート作成用テーブルを見てみるとフォームで確認した順番で登録されていません。(処理を行うたびに登録順が異なり規則性が無い。ただし、正常に登録されることもある)
お礼
おかげさまで解決することができました。 教えて頂いたオートナンバー型のフィールドを追加しそのフィールドの並び替えを行った結果レポート作成テーブルは希望通りに作成できましたが、レポートを作成するとテーブルデータのレコード順に表示されなかったので少し悩んでしまいましたが、レポートにもオートナンバー型のフィールドを追加し並び替え指定を行ったら解決できました。 ほんとうに有難うございました。
補足
ご回答ありがとうございました。 回答を見た瞬間に これだ! と納得しました。 これから検証を行いたいと思いますが解決できそうな気がします。 前から気になっていたことがありますが、オートナンバー型のフィールドはデータを登録するたびにナンバーが加算されていきますが、限界値があれば限界値以降のナンバーはどうなるのでしょうか? また、テーブルデータを全て削除してもオートナンバーは削除する前の最終ナンバーから加算されていきますが初期値(1からスタート)に戻すことはできないのでしょうか? 今作成しているツールを何十年も使うことは無いとは思いますが気になります。