アプリ版:「スタンプのみでお礼する」機能のリリースについて

ACCESSで、何週間も原因がどうしても解らず困っております。お助けください。

ある条件を基に複数のテーブルを参照しデータ加工を行った後に、レポート作成用テーブルのいちばん最後のレコードに必ず追加登録をしたいのですが、いちばん最後のレコードに登録できたり、既に登録されているレコードの間に割り込んで登録されたり処理の検証を行うたびに結果が異なるのです。
何度もデバッグを行いましたが、レポート作成用テーブルへUPDATEするまでの処理及びデータには間違いありません。レポート作成用テーブルで勝手にデータ入れ替わっているとしか思えないのですが・・・・・・

最初はRecordsetオブジェクトはテーブルタイプを指定し、Addnew及びUpdateメソッドで追加登録していましたが、思うように動作しないためRecordsetオブジェクトをダイナセットタイプに変更してみましたが処理結果は変わりません。
※RecordsetオブジェクトでIndexプロパティの設定はありません

参考書にダイナセットタイプのRecordsetオブジェクトは、設定されている並べ替え規則にかかわらず、必ずいちばん最後のレコードに追加されると記載されていたので試してみましたが駄目でした。

おおざっぱな説明で現状を理解して頂けるかわかりませんが宜しくお願いいたします。

A 回答 (3件)

レコードの並び順は保証されていません。


http://support.microsoft.com/kb/834927/ja
http://www.naboki.net/access/achell/achell-03.html
指定してやる必要が有ります。

入力順などというプロパティは無いので、
入力順に並べたい場合は、オートナンバー型のフィールドを追加して
そのフィールドを並び替えのキーに指定するとかではないですかね。

この回答への補足

ご回答ありがとうございました。

回答を見た瞬間に  これだ!  と納得しました。
これから検証を行いたいと思いますが解決できそうな気がします。

前から気になっていたことがありますが、オートナンバー型のフィールドはデータを登録するたびにナンバーが加算されていきますが、限界値があれば限界値以降のナンバーはどうなるのでしょうか?

また、テーブルデータを全て削除してもオートナンバーは削除する前の最終ナンバーから加算されていきますが初期値(1からスタート)に戻すことはできないのでしょうか?

今作成しているツールを何十年も使うことは無いとは思いますが気になります。

補足日時:2012/08/21 09:39
    • good
    • 0
この回答へのお礼

おかげさまで解決することができました。

教えて頂いたオートナンバー型のフィールドを追加しそのフィールドの並び替えを行った結果レポート作成テーブルは希望通りに作成できましたが、レポートを作成するとテーブルデータのレコード順に表示されなかったので少し悩んでしまいましたが、レポートにもオートナンバー型のフィールドを追加し並び替え指定を行ったら解決できました。

ほんとうに有難うございました。

お礼日時:2012/08/21 16:34

オートナンバー型は長整数型です。


『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/AcTip …

などなど。
AccessClub.jp さんが見えなくなってる?。
    • good
    • 0
この回答へのお礼

ありがとうございました。  とても勉強になりました。

お礼日時:2012/08/21 16:46

> ある条件を基に複数のテーブルを参照し


キーの構成が気になりますね。主キーだったり、ソートしてませんか?

この回答への補足

さっそくのご回答ありがとうございます。

ご指摘のキーの構成ですが、レポート作成用のテーブル及び参照しているテーブルには主キーの設定はありません。
参照しているテーブルには一部インデックスの設定がありレポートデータの編集処理で並び替え処理を行っていますが、デバック時に並び替えルーチンを通らないようダミーデータで試してみましたが結果は同じでした。
デバック時にレポート作成用テーブルに登録するデータをUPDATEする前にフォーム上に表示させ確認しましたが、フォームに表示されるデータは期待する順番で表示されるのですが、登録処理完了後にレポート作成用テーブルを見てみるとフォームで確認した順番で登録されていません。(処理を行うたびに登録順が異なり規則性が無い。ただし、正常に登録されることもある)

補足日時:2012/08/21 00:09
    • good
    • 0
この回答へのお礼

おかげさまで解決することができました。 ありがとうございました。

ACCESSではレコードの並び順は保障されていないのですね!

レポート作成テーブルにオートナンバー型のフィールドを追加しそのフィールドの並び替えを行うことで解決できました。

お礼日時:2012/08/21 16:42

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!