
現在、Access2007にて、会社の顧客管理システムを作成している超初心者です。
本を数冊買い込んで、作成しているのですが、どうしてもわからず、質問をさせていただきました。どなたかご教授いただければと願っております。
基本的には、自社で取得するオリジナルの管理番号にて、商品の修理受付状態を管理するデーターベースです。
なお、管理番号は、商品別に取得しているので、商品が異なれば、同じ管理番号が存在します。
例えば、
商品 管理番号
AAA 001
AAA 002
BBB 001
BBB 002
商品AAAの管理番号001というものは、1つしか存在しません。また、重複登録をしないような設定もしたいと思っていますが、そのやり方もよくわかっておりません。
現在、作成したテーブルならびにフォームは、
入力者テーブル フィールドは、入力者ID(主キー)、入力者名、ふりがな
顧客テーブル フィールドは、顧客ID(主キー)、顧客名、ふりがな、備考
商品テーブル フィールドは、商品ID(主キー)、商品名、顧客参照ID、備考
管理番号テーブル フィールドは、管理番号ID(主キー)、顧客名参照ID、商品参照ID、管理番号、備考
です。
このあとに、修理受付入力と修理受付明細、作業完了入力、作業完了明細、修理履歴の検索テーブル及び、フォームを作成する予定です。
(実際には、少し作成しているのですが、まったく機能していません。。)
1つの管理番号に対して、最終的に数回の修理を受付します。
現在、私が考えている、修理受付入力と修理受付明細、作業完了入力、作業完了明細フォームに関しては、以下の内容を必要とします。
■修理受付入力フォーム
・修理受付ID(主キー)
・入力日(自動入力)
・入力者(コンボボックス)
・顧客名(コンボボックス)
・商品名(コンボボックス)
修理受付入力フォームのサブフォームとして、
■修理受付明細テーブル
・修理受付明細ID(主キー)
・修理受付親ID
・明細行番号(入力した行について、行数を表示したい)
・管理番号(手入力)
・現在の状態(管理番号を入力したら自動的に状態が表示されるようにしたい。)
・修理回数(管理番号を入力したら自動的に過去の修理回数が表示されるようにしたい。)
・受付日(手入力)
・備考
*「現在の状態」については、受付をする際は、前回の修理分が「納品済」となっているので「納品済」、または、初めての受付の場合は、「新規」と表示したいです。また、修理受付が終わり、受付ボタンにて、作業完了フォームにコピーされた後は、作業完了明細にて、「受付中」と表示され、作業完了登録をすると、また「納品済」と表示したい。
*修理回数は、作業完了明細の完了日を入力した数をCountして、それに作業完了明細にて、修理不能返却をしたものは、完了日のCountマイナス1の数字を表示したい。
*商品AAAに対して、管理番号が異なるものをまとめて20個受付したりすることがあるため、サブフォームにて、異なる管理番号のものを、まとめて入力できるようにしたく、サブフォームを作りました。
■作業完了入力フォーム(修理受付をすると、内容が作業完了にコピーされるようにするつもりです。)
・作業完了受付ID(主キー)
・入力日
・入力者
・顧客名
・商品名
作業完了入力フォームのサブフォームとして、
■作業完了明細テーブル
(基本的には、作業完了入力フォームと同様、コピーされ、商品受付明細のフォームに、追加したフィールドがあります。)
・作業完了受付明細ID(主キー)
・作業完了受付親ID
・明細行番号
・管理番号
・現在の状態
・修理回数
・受付日
・完了日(手入力)
・修理不能返却(Yes/No型)←修理不能の場合はチェックを入れる。
・備考
今、つまずいている部分は数か所あります。
・商品AAAの管理番号001という商品は、1つしか存在しません。管理番号テーブルにて、重複登録をしない設定をしたい。
・明細行番号の表示の仕方
・修理受付明細フォームでの、現在の状態、修理回数の自動表示の方法。(クエリの作り方から、フォームへの反映の仕方が全くわかりません。)
どなたか、ご教授くださいませ。どうぞよろしくお願いいたします。

No.8
- 回答日時:
>大分類や中分類の選択フォームにて、選択のテストをする際、名称欄の内容を手打ちで入力し直した場合には、テーブルのレコード内容が書き換えられてしまうのですが、手打ちで入力してテストすることは間違ってるのでしょうか
間違っています。必ずレコードの移動でやってください。親子フォームのリンクはIDによってなされています(そうでなければ修正してください)。レコードを移動すると、ユーザーから理解しやすい名称で確認しながら、リンク自体は確実なIDによってなされます。この仕組みを利用すれば、同じ名称があっても、備考で区別してリンクすることも可能になります。
現在作成中のプロトタイプはともかく、最終的に現場で使って貰うものは、フォーム自体を「更新の許可」を「いいえ」にするなど、データ保護の必要があります。そうしないとDBが収拾不能の混乱に陥ります。
この回答への補足
早速のご回答、ありがとうございます。
やっぱりそうですよね。。なんか変だなと思いつつ、やり過ごすところでした。
お伺いすることができて、ほんとうに良かったです。
ちなみに、当然でしょうが、レコードの移動で選択すると、レコード内容が書き換えられることはありませんでした。
小さいながら、重要な疑問が解決され、とてもスッキリしました。ありがとうございました。
なお、「商品選択」ボタンについては、あれから何度かやり直したりしてみましたが、やはり、うまく動作しません。
また、お時間がございます時に、ご教授くださいますよう、よろしくお願い申し上げます。
いつも、ほんとうにほんとうに、ありがとうございます。

No.7
- 回答日時:
#6で示した大分類選択方法は、一覧ができないので使いにくいです。
しかしAccess2000では、「親子フォームの親は単票形式」と云う、仕様上の制限があり、何ともなりません。Access2007は持っていないので試験できませんが、お試しになり「帳票フォーム」が可能であれば変更してください。もしできなければその旨を補足してください。コンボボックスとVBAを使用する改善案を、後で示しますで、以下は中分類から商品選択です
1.商品一覧フォーム作成
「中分類一覧フォーム」と同様に作ってください
2.中分類選択フォーム作成
これも「大分類選択フォーム」と同様に作り、商品一覧フォームを子フォームとします
3.移動ボタンなどの非表示
中分類を替えることにより、商品が絞り込まれることを確認したらフォームの書式で「レコードセレクタ」と「移動ボタン」を「いいえ」に替え、非表示にしてください。
4.中分類一覧フォーム変更
中分類一覧フォームの「中分類名称」テキストボックスの右側に、コマンドボタンを追加します(ツールボックスから持ってくる)。ウィザードが起動するので
フォームの操作/フォームを開く/中分類選択フォーム/特定のレコードを表示する
と進み
中分類ID<->中分類ID
と関連づけてください。ボタンの表示は「文字列」ラジオボタンをチェックして「商品選択」ぐらいでよいでしょう(適当に変更してください)。
これを動かして、一覧から選んだ中分類で、商品が絞り込まれることを確認してください。これが上手く行けば、大分類選択から商品選択までが実行できるはずです
この回答への補足
こんばんは。
早速、試してみました!
>#6で示した大分類選択方法は、一覧ができないので使いにくいです。しかしAccess2000では、「親子フォームの親は単票形式」と云う、仕様上の制限があり、何ともなりません。Access2007は持っていないので試験できませんが、お試しになり「帳票フォーム」が可能であれば変更してください。
についてですが、Access2007でも、親フォームは単票フォームしか使えないようです。恐れ入りますが、改善案をご教授くださいませ。
次に、1~3まではうまく動いたのですが、4でつまずいています。
中分類一覧フォームにて、「商品選択」ボタンをクリックすると、どの中分類のボタンをクリックしても、中分類ID:1 中分類名称:Aaしか表示されません。サブフォームの商品一覧フォームは、中分類IDで絞り込まれた商品のAa1、Aa2、Aa3(私がテストで入力したものです。)が表示されています。
(たとえば、中分類一覧フォームにて、中分類ID:4 中分類名称:Baの横の「商品選択」ボタンをクリックしても、中分類ID:1 中分類名称:Aa、サブフォームの商品一覧フォームは、Aa1、Aa2、Aa3となります。)
どこか、私の操作が誤っておりますでしょうか。恐れ入りますが、検証くださいませ。
また、質問なのですが、大分類や中分類の選択フォームにて、選択のテストをする際、名称欄の内容を手打ちで入力し直した場合には、テーブルのレコード内容が書き換えられてしまうのですが、手打ちで入力してテストすることは間違ってるのでしょうか。実際に使用する段階にきた際には、手打ちで入力するものではないのでしょうか。
恐らく、初歩的なことだとは思うのですが、どうか教えてくださいますようお願い申し上げます。ほんとうにド素人ですみません。
どうか、よろしくお願いいたします。

No.6
- 回答日時:
「大分類」「中分類」を利用して商品選択を行う一案。
今回「小分類」は省略しました。基本的には同じ事の繰り返しですが、アクセスの仕様により面倒です。それからテーブルやフォームの名称は、説明しやすいように適当なものを使用しています。貴方での環境に合わせ、適切なものに変えてください。いい加減な名称が着いていると、システムが大きくなったり、担当者が交替した場合に、訳がわからなくなります。では1.テーブルの追加作成
「大分類テーブル」
大分類ID:オートナンバー
大分類名称:テキスト型
「中分類テーブル」
中分類ID:オートナンバー
中分類名称:テキスト型
大分類ID:数値型
2.フィールドの追加
「商品テーブル」
中分類ID:数値型
3.フォームの作成
「中分類一覧フォーム」
新規/デザインビュー で開始する。プロパティウィンドウのレコードソース(空欄)の右側に出る「...」ボタンをクリックし、クエリビルダを起動する。
テーブル「中分類テーブル」を「追加」し、全ての項目をフィールドに割り振る。中分類名称で「昇順」になるようにセット
プロパティの更新をして、レコードソース欄から移動すると。フィールドリストが表示される。「中分類名称」と「中分類ID」を貼り付け、フォームの「規定のビュー」は「帳票にする」これをほぞんして「中分類一覧フォーム」作成終了
「大分類選択フォーム」
レコードソースは「大分類テーブル」、項目は「大分類ID」と「大分類名称」(昇順に並べ替え。フォームの「規定のビュー」は「単票」
ツールボックスの中から「サブフォーム/サブレポート」ボタンを押し、フォーム上に貼り付ける。ウィザードが起動するので
・既存のフォームを利用するラジオボタンチェック
・「中分類一覧フォーム」を選択し「次へ」ボタン
・一覧から選択するするラジオボタンチェックで、「大分類IDでリンクし、<SQLステートメント>の各レコうー土に<SQLが反転していることを確認し「次へ」ボタン、「完了」ボタン
・フォームを動かして、大分類選択を変えたとき、その下にある中分類が表示されることを確認する。ちなみに試験データは
大分類
ID 名称
1 A
2 B
3 C
中分類
ID 名称 大分類ID
1 Aa 1
2 Ab 1
3 Ac 1
4 Ba 2
5 Bb 2
6 Bc 2
7 Ca 3
8 Cb 3
9 Cc 3
など作っておくと試験が楽。取り敢えずこれを動かしてください。
先は長い(^^;
この回答への補足
「大分類」「中分類」について、できました!!
とってもわかりやすいご説明に心より感謝いたします。
試験で動かしてみたところ、大分類の名称を変更すると、サブフォームの中分類が変わりました!!

No.4
- 回答日時:
#1、#2、#3です。
サンプルを多少いじって「管理番号」の意味が推測できました。商品と顧客の関係を管理するためですね。ということで「このようなテーブルは不必要にも思えます。」は誤り。この回答への補足
ほんとうに、ほんとうに感謝いたします。
#1、#2、#3についてですが、
まず、#1、#3について。
根本的に希望のシステムは、商品1点、1点を管理番号で管理することを目的としています。
売り上げなどについては、すでに他のシステムで管理をしており、今回作っているものは、あくまでも、「商品1点、1点の修理受付状況ならびに修理履歴を管理番号で管理する」というシステムです。
そのため、どちらかというと、顧客ベースではなく、管理番号ベースで商品1点1点を管理したいのです。
ちなみに、管理番号については、商品の修理作業をする際に商品自体に刻印する番号となっておりますので、これだけは必須となります。
>ひょっとしてフォームにはテーブルがそれぞれ対応すると誤解されているのでしょうか?
については、完全に誤解しているかもしれません。
1つのフォームに、1つのテーブルが必要と思っておりました。
また、確かに、受付のフォームに、作業完了日と、引渡し日の項目があれば、作業完了フォームは不要ですよね?!
受付フォームにて、受付をし、作業が完了した際には、再度、受付フォームを開いて、完了日を入力すれば良いのですよね?!
#2についてです。
各テーブルに主キーは必須と思っており、無意味にすべてに設定していたようです。
商品テーブルについては、商品名(商品名が型番のようなものです。)さえ登録できれば良いので、
「商品テーブル」は、商品ID(オートナンバー)、商品名、備考(備考は本当に一応設定しておこうと思います。)のみで良いということになります。
とにかく、実際に入力作業をすることになった際には、現場の作業員が入力するため、なるべく簡潔で、間違い入力をしないようにと考えております。
そのため、顧客名や商品名も手打ちで入力しても良いのですが、あらかじめそれぞれのテーブルに入力しておいて、コンボボックスで選択できるようにしたいと思っております。
顧客テーブルについても、顧客名さえあれば電話番号や住所等はこのシステムでは必要ないので、顧客ID(オートナンバー)顧客名、ふりがな、備考のみで良いことになります。
すみません、本当にあつかましく、いろいろ考えてくださり、感謝感謝であります。
どうか、良い方法をご教授くださいませ。

No.3
- 回答日時:
#1、#2です。
書き忘れた点をいくつか>「商品テーブル」商品ID(主キー)、商品名、顧客参照ID、備考
普通は「顧客参照ID」を入れずに、「仕入れ先ID」とか「単価」などから構成すると考えます。
商品IDに限らずIDを(主キー)にしていますが、意味がないと考えます。IDはオートナンバーにすれば重複は起きません。これをリレーションに使うのはよいと思います。でも主キーは顧客テーブルで云えば「顧客名」と「電話番号」あるいは「住所」などにして、二重登録を防ぐのに利用するべきです。

No.2
- 回答日時:
#1です。
少し真面目に回答しようかと、サンプルデータベースを作り始めて、判らないところや疑問に感ずるところが出てきました。まず「管理番号テーブル」はなんのためにあるのでしょうか。商品と顧客の関係を一元的に管理し、修理の履歴などを見るためでしょうか。同じ商品を、同じ顧客が、複数持つのでなければ、このようなテーブルは不必要にも思えます。
「修理関係のテーブル」
普通は一つのテーブルで
・受付日
・作業開始日
・作業完了日
・引き渡し日
・入力者ID
・顧客ID
・商品ID
・その他諸々
などで管理できると考えます。修理履歴も「商品ID」と「顧客ID」ですぐまとまるし、「作業開始日」で時系列化や修理回数もすぐ出ます。
>(修理受付をすると、内容が作業完了にコピーされるようにするつもりです。)
このような作業も不要では?
ひょっとしてフォームにはテーブルがそれぞれ対応すると誤解されているのでしょうか?

No.1
- 回答日時:
>商品AAAの管理番号001という商品は、1つしか存在しません。
管理番号テーブルにて、重複登録をしない設定をしたい複数のフィールドにまたがって主キーを作成できます。なので「商品参照ID」と「管理番号」を主キーにすれば重複できなくなります。「管理番号ID」はオートナンバーにして、リレーションなどにはこれを利用すればよいでしょう。
>明細行番号の表示の仕方
サブクエリーを使用する方法しか思いつきませんが、多少面倒です。
>修理受付明細フォームでの、現在の状態、修理回数の自動表示の方法
何を希望されているのか具体的イメージが湧きません(^^;
この回答への補足
ご回答いただき、ほんとうに感謝いたします。
早速、主キーについては訂正をいたしました。ほんとうにありがとうございました。
また、明細行番号につきましては、一度にまとめて20件の入力をした際などに、入力漏れがないか確認できやすくなると思い、行数が表示できればなと思っておりました。
なお、
>修理受付明細フォームでの、現在の状態、修理回数の自動表示の方法
についてですが、実際に入力を始めた際、絶対に間違い入力があってはならないものなので、入力状況を随時確認しながらできればと思い、入力時に、その商品が前回の修理の際に確実に作業完了入力がなされているかが簡単に確認できるようにしたいと思っております。
もし、受付する際の状態が「受付中」になっていたら、作業完了入力ができていないことがわかりますし、手打ちで管理番号を入力した際の入力ミスを防げると考えております。
また、修理回数についても、商品により、修理の限界数があるため、受付入力の際に、それも簡単に表示でき、確認できれば最高のシステムになると思っております。
何か、良い方法はございますでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessでテーブル名やクエリ名...
-
2つのテーブルを比較して一致し...
-
Accessでvlookupみたいなことは...
-
ファイルメーカ 検索実行せず...
-
Accessの追加クエリで既存のテ...
-
Accessでテーブルからテーブル...
-
ACCESSのSQLで数値型に変換する...
-
2つのテーブルAとBをマージ...
-
MS ACCESS でのメッ...
-
デザインビューで、連結式 を...
-
アクセスのメインフォームとサ...
-
INSERT時にデータ登録とmaxの発...
-
テーブル作成クエリで主キーを設定
-
AccessでのNULLのレコードの表...
-
ACCESS n対nのデーターを結合...
-
access テーブル内のレコード...
-
Accessクエリでの、LIKE条件
-
FileMakerで2テーブルを(仮想的...
-
ACCESSに同時アクセス(編集)を...
-
Accessデータベースで測定デー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessでテーブル名やクエリ名...
-
Accessでテーブルからテーブル...
-
Accessレコードの追加や変更が...
-
3つの表を1つに縦に連結する
-
2つのテーブルを比較して一致し...
-
Accessクエリでの、LIKE条件
-
ACCESSのSQLで数値型に変換する...
-
access テーブル内のレコード...
-
Accessでvlookupみたいなことは...
-
Accessの追加クエリで既存のテ...
-
SQLで条件指定結合をしたいがNU...
-
テーブル作成クエリで主キーを設定
-
ACCESSで指定されたテーブルか...
-
デザインビューで、連結式 を...
-
INSERT時にデータ登録とmaxの発...
-
AccessでのNULLのレコードの表...
-
ODBCで接続するとDBに変更/追加...
-
Accessでテーブルにパスワード...
-
ツリー構造をRDBで表現するには?
-
Accessで、複数のテーブルで随...
おすすめ情報