fc2ブログ

レコードセットの並び順でドツボにはまった!

顧客管理ソフト「T&A顧客管理」を開発中です。
完成したら、無料で配布します。

予期しない動きのせいで、丸1日ドツボにはまりました。
(ソフトを開発していると、よくあることなのですが・・・)

新しい顧客の登録テストを行っていましたが、登録出来ているはずなのに、アプリを再起動すると消えているのです。
しかし、元のデータベースのテーブルを確認すると、ちゃんと存在しているのです。

当然私のプログラムにバグがあるのだと思い、何度もチェックしましたが、分かりません。
その日は結局最後まで原因が分からず帰宅しました。
こういう時は自宅でも、このことが頭から離れません。
寝床に入ってからも、寝付くまでずっと考えていました。

翌朝、やっと原因に気づきました!
通常新規追加したデータは、テーブルの最後に追加され、実際にテーブルを見ると最後に存在しています。
それがフォームを再表示すると、最後に無いのです。
しかしそれは、消えたり読み込みできていなかった訳ではなく、別の場所(順番)に存在していたのです。

私のプログラムは、Microsoft Accessで作成しており、複数の作業者(PC)でデータを共有して作業をしやすいように、データベースとアプリは別にしており、ADO方式でデータベースと接続しています。
その場合、レコードセット(テーブルの複製みたいなもの)を作成してフォームと連結し、フォームからデータを追加したり更新したりできるようになります。

テーブルから作成されたレコードセットのデータの順番がテーブルの順番と変わるということは、まさか想像していませんでした。
因みにネットで検索しても、同様の情報は見つかりませんでした。
これはあくまでも私の推測ですが、今回の顧客テーブルの主キーのフィールドの型がオートナンバー型で、新しくデータを追加すると自動で連番が付与されます。
このテーブルの中のデータを削除した場合、その席が空席になり、レコードセット場合は新しいデータがその席に座らされるのだと思います。
もしかしたら、これはADOのバグかもしれません。

いずれにしても原因が分かり、やれやれです。
レコードセットをOpenする時に、主キーのフィールド(連番)順に並べ替えるようにプログラムを修正しました。

ソフトを開発していると、壁にぶち当たって時間が掛かることがよくありますが、一晩寝て頭をリセットすると解決することもよくあります。


スポンサーサイト



theme : プログラミング
genre : コンピュータ

プロフィール

tasys

Author:tasys
FC2ブログへようこそ!

カレンダー
プルダウン 降順 昇順 年別

01月 | 2021年02月 | 03月
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 - - - - - -


最新記事
最新コメント
カテゴリ
天気予報

-天気予報コム- -FC2-
フリーエリア
検索フォーム
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード