プロが教える店舗&オフィスのセキュリティ対策術

アクセスのフォームでデータを入力する際に、
タブストップさせずに自動採番で入力Noを入力
したいのです。元のテーブルのデータ型をカウント
型にする方法はあるのですが、そうすると入力途中で
取消し(コマンドボタン)するとカウントだけは進んで
しまいます。基本的に1,2,3,4と順に番号をふってくれれば
いいのですが、取消した時には入力Noも戻って欲しいのです。
これが上手くゆきません。どうしたらいいのでしょうか?

A 回答 (2件)

VBAが分からないレベルですとはっきり言って難しいです。



私が行なう場合は「レコード表示」と「新規・編集」の2つのフォームを作成し、[新規・編集フォーム]は非連結にします。

1.[レコード表示フォーム]より[新規追加]ボタンを押すと編集フォームが開く。
2.上記1でフォームを開く際、フォームのOpenArgsプロパティに、新規の場合は0を、既存レコードの編集の場合は1を入れておき、フォームの各コントロールに対象レコードの値を入れる。
3.ユーザーが一通りの編集を追えて[更新]ボタンを押す。

4.新規レコードの場合は以下の処理をすべて行なう。既存レコード編集の場合は以下の処理のうち8・9・10・12を行なう。
5.番号管理テーブルには最終番号を記録したレコードが1つだけあり、そのレコードをレコードセット型の変数で開く。
6.数値型の変数[lngLastNum]に番号を取得。
7.lngLastNumに+1した数値を編集フォームの[番号]テキストボックスに入れる。
8.コネクションオブジェクトのトランザクションを開始。
9.編集フォーム上の各コントロールの値をそれぞれ変数に代入。
10.その変数を使い、SQLのINSERTで新規レコードをテーブルに追加する。またはSQLのUPDATEで既存レコードを更新する。
11.番号管理テーブルのレコードを+1して更新する。
12.トランザクションをコミットする。
※ 途中でエラーが起きた場合はエラーのラベルにジャンプし、トランザクションをロールバックする。

ざっと書くとこんな感じです。(間違ってるかも・・・(^_^;;
私はレコードを単体表示するは非連結のフォームを使うのが好きなのでこんな感じになってしまいます。(なにしろWebアプリを作るのが多いので)

上記手順が理解できないと難しいと思います。
    • good
    • 0
この回答へのお礼

回答いただき本当にほんとうにありがとうございます。
残念ながら殆ど理解不能ですが、しばらく格闘してみようと
思います。。。。

お礼日時:2002/08/21 16:37

最終番号を管理するテーブルを作ればどうでしょうか。



Form_BeforeInsertイベントやVBAコードから新規レコードを作製したときに番号管理テーブルから値を取得し、+1した値をテキストボックスに設定する。

新規レコードが更新されるタイミングや、VBAコードから新規レコードを保存するときに番号管理テーブルの値を更新する。

こんな感じではどうでしょうか?
    • good
    • 0
この回答へのお礼

早速のご回答有難うございます。
大変恐縮なのですが、なんとなく
意味はわかるのですが、初心者なもんで
具体的にどうすればよいかよく分かりません。
教えていただけますでしょうかm(__)m

Form_BeforeInsertイベント・・・????
これは入力Noのテキストボックスのプロパティに
設定するのでしょうか

VBAコード・・・???

VBAコードから新規レコードを作製したときに・・・???

新規レコードが更新されるタイミング・・・これはフォームで
データを入力し終わったときに、確認ボタンをクリックするので、
ここにマクロを組んでおけばよいわけですよね(^^ゞ 

お礼日時:2002/08/20 09:34

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