- 締切済み
ACCESS
どうか皆さんのお力添えを下さい。 ACCESS2010を利用して、以下の様な注文フォームaccdbを完成させていと考えています。現在、以下のところまで作業が進んでいます。 (1)テーブル (1) 注文履歴テーブル 注文ID・・・オートナンバー型 商品No・・・テキスト型 数量・・・数値型 (2) 商品テーブル 商品No・・・テキスト型 商品名・・・テキスト型 単価・・・通貨型 (3) 顧客テーブル 顧客ID・・・数値型 顧客名・・・テキスト型 パスワード・・・テキスト型 (2)フォーム (1)ログインフォーム 顧客ID入力用テキストボックス パスワード入力用テキストボックス ログインボタン・・・VBAを使って顧客テーブルに入っている顧客ID、パスワードが一致すれば注文フォームが開くところまではできました。 (2)注文フォーム(商品画像一覧があり、それをクリックすると商品No毎に個別に作成した注文フォームにジャンプします) ・コントロールボックスで数量を選ぶ ・注文ボタンを押すと注文履歴テーブルに商品ID、商品名、商品数が反映されます。 ここからが質問内容になります。 まず、はじめにログインフォームで入力後、照合OKになった顧客ID、パスワードを その後開いた注文フォームでの注文作業が完了、または中断するまでの間、 注文履歴に自動的に入力させ続けることはできますでしょうか?複数商品の注文が あった際は注文履歴テーブルにおいて複数レコードが連続して同じ顧客IDになるような 方法はあるでしょうか? ネット通販のようなものをイメージしております。 その他にもっと効率の良いやりかたなどあればご教授下さい。 どうぞよろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- naoto0216
- ベストアンサー率46% (183/391)
#2です。 少し勘違いしてました。 ログインフォーム ⇒ 注文フォーム ⇒ 商品毎注文フォーム というフォームの階層だったんですね。 だとしたら、注文フォームから商品毎注文フォームを開くときに(商品画像 がクリックされたときに)、注文フォームで保持している顧客ID及びパスワード を商品毎注文フォームにコピーします。 なので、商品毎注文フォームにもテキストボックスを用意しておく必要が あります。 『商品No毎に個別に作成した注文フォームにジャンプします』ってことは ログインフォーム ⇒ 注文フォーム ⇒ 商品No1注文フォーム ⇒ 商品No2注文フォーム ・ ・ って感じなのでしょうか。 商品No毎にフォームを作成された意図としては、これらのフォームに商品画像 があるから?ってことなのでしょうか。 そうなら、商品毎に作成せず1つだけつくって、注文フォームで画像がクリック されて商品毎フォームを開く際に、 Forms![商品毎フォーム]![イメージ] = "C:\Pic\商品No1.jpg" ってやればよいかと思います。
- naoto0216
- ベストアンサー率46% (183/391)
#2です。 注文フォームにテキストボックスを2つ追加します。 テキストボックスの名前はそれぞれ「顧客ID」、「パスワード」とします。 ※本来ならこれらのテキストボックスを非可視にしますが、検証中と いうことなので、とりあえずコピーされたことが見えるよう可視のまま。 次にログインフォームでログインボタンを押され、注文フォームを 開いた後に、 Forms![注文フォーム]![顧客ID] = Forms![ログインフォーム]![顧客ID] Forms![注文フォーム]![パスワード] = Forms![ログインフォーム]![パスワード] とします。 これで、注文フォームのそれぞれのテキストボックスに顧客IDとパスワードが 表示されていればOKです。 次に、注文フォームの注文ボタンが押されたら、 (注文フォーム上の必須項目にちゃんと入力されているかチェック) ↓ 注文履歴テーブルにレコード追加(AddNew) ↓ 注文フォーム上に入力されている商品IDや、商品名、商品数を登録。 このときに、注文フォーム上の顧客IDとパスワードも登録 ↓ 注文履歴テーブルをアップデート ↓ 次の注文入力に備え、商品IDや商品名、商品数をリセット(Null)して 顧客IDとパスワードはそのまま(引き続き同じ顧客が注文するので) って感じでしょうか。 注文フォームが閉じられるまでは、ずっと同じ顧客IDとパスワードを キープされるので、注文ボタンが押された後に、注文フォームを閉じない ようにする必要があります。
- naoto0216
- ベストアンサー率46% (183/391)
わたしだったら・・・ 注文フォームに非可視のテキストボックスを2つ作っておいて、そこに 注文フォームが開かれるタイミングで顧客IDとパスワードをそれぞれ コピーします。 注文フォームから注文ボタンがおされたときに、顧客IDとパスワードを 作成されたレコードに登録するって感じでしょうか。 >複数レコードが連続して同じ顧客IDになるような方法はあるでしょうか? この意味があまり分かりませんでしたが、上記のように注文ボタンが おされる都度、注文フォーム上に保持している顧客IDとパスワードを レコードに登録すれば、同じ顧客IDで複数レコード作成されるかと思います。 もっとよい方法はあるかと思いますが、わたしの思いつくのはこんな感じです。 ちなみに、ひとつのaccdbを複数の顧客に配布するんですか? だとしたら、他の顧客情報(顧客名や顧客ID、パスワード)が見られちゃったら マズイのでは?
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
課題1、[顧客ID]の値の保持・引き渡し要領の決定。 A:広域変数にて値を保持する。<------ 非推奨 B:ログインフォームを参照する。<---- 非推奨 C:OpenArgsプロパティを利用する。<-- 推奨 http://www.happy2-island.com/access/gogo03/capter40203.shtml 課題2、[顧客ID]の値の反映要領の決定。 A: 入力フォームのオープン時に値を代入する。<------ 非推奨 B:「規定値」プロパティに値を設定する。<----------- 推奨 http://www.officepro.jp/access/field/index5.html >それをクリックすると商品No毎に個別に作成した注文フォームにジャンプ。 ウーン!どういう意味なのかな!? >注文履歴テーブルのレコードが連続して同じ顧客IDになるような方法はあるでしょうか? [注文履歴.注文ID]=顧客ID*100000+同一顧客のMAX+1 と[注文履歴.注文ID]を採番すればOK。だが、普通は、そんなことはしませんね。
お礼
さっそくのご返事、誠にありがとうございます。 >注文フォームから注文ボタンがおされたときに、顧客IDとパスワードを作成されたレコードに登録するって感じでしょうか。 この方法ももう少し詳しく教えていただけますでしょうか? ログインフォームで顧客ID,パスワードを入力して以降の作業からご教授頂けると大変 ありがたいのです。 >ちなみに、ひとつのaccdbを複数の顧客に配布するんですか? 今のところその予定はございません。まだまだ検証の段階です。 仰る通り、実運用においては複数の顧客データベースが必要かと思われます。 お手数おかけしますがよろしくお願いします。