- 締切済み
不一致クエリで空き番号を求めることはできますか
以前こちらで違う内容で質問したものですが http://okwave.jp/qa4823586.html movenextを使っているためか処理が非常に重く最後まで動作する事ができませんでした。(VBAがまだ完全ではないのもあるとは思いますが・・・) 不一致クエリで登録している番号の空き番号を求めてフォームに登録番号を 出力したいのですが、どのようにしたらいいのかわかりません・・・ 何かいい方法はありますか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- 30246kiku
- ベストアンサー率73% (370/504)
直接的な回答にはなりません。 文字と数値を抱き合わせて1つのフィールドデータにすることはナンセンスだと思っています。 http://okwave.jp/qa4823586.html で、間違ったことは言われていないと思いますし、実際にどんなデータから成り立っているのかいまいち分からなかったので様子を見ていました。 > ZZZZ8939 私なら、「状態」「数字」みたいにフィールドを分割します。 「状態」は、個人データ/未特定データを示す何か。(未特定="ZZZZ"など) 「数字」は文字ではなく、数値。 不一致クエリで求める、でも用はたすともいます。 (不一致クエリ用の0001~9999までの数字(数値?)のみがあるテーブルが必要になりますが) 要は、データをどのように扱っていくかで決まると思います。 私は、1度登録したデータは、よほどの事がない限り削除しません。 その代りに、有効/無効のフラグ用フィールドは設けています。 例えば、XXさんへの給与支払データがあったとします。 XXさん退職により、XXさんの社員情報を削除しました。 その後、給与支払合計を出したところ、帳簿と一致しません。 なんで、、、 退職により社員情報XXさんフラグOFF 給与支払合計時、社員情報のフラグを無視した集計。。で合致。。とか このような運用をしている時には、次に登録するレコードは、前回までの数値MAX+1を用いるようにしています。 (数値MAX+1という規則は、たまたま登録時に便利なように決めたものにすぎない?) 特に、空き番号を使い回ししないといけないって言うこともありませんので。 (番号が連番になっていなくてはならないっていう規則には何の意味があるのかわかりません) フィールドを分ける=桁数を決めなくてもいい と同じなので、変動部分は別フィールドにするようにしています。 これがいいのか悪いのかわかりません。
お礼
9999の連番テーブルを作って比較に使うことにします。 午後いっぱい悩んで見ましたがDoLoopとかifなど使って自動でレコード追加しようとしましたが失敗してしまいました。 別でまた質問してみようと思います ありがとうございました!
補足
ご回答ありがとうございます。 >私は、1度登録したデータは、よほどの事がない限り削除しません。 前回自分でもデータの削除と書いてしまいましたが、実際にはその登録番号の書き換えを行っている感じになります。 なので書き換えを行って空いた登録番号を活用したい・・・という流れです。 説明が下手で申し訳ありませんでした。 なるほど、有効/無効という方法もあったのですね。 昔からあるサーバなので既に空きが多数出来ている状態だったのでこの方法しかないかなと思いまして・・・ 本当であればこの最小の空き番号を取得しその空き番号を見つけ次第、新規登録フォームへ移る感じが理想なのですが、空き番号最小値もまだの状況ですT_T