- ベストアンサー
アクセスのテーブルの構造とフォーム作成方法についての質問
- アクセスのテーブルの構造とフォーム作成方法についてアドバイスをお願いします。
- アクセスのテーブルは100番から500番までの20種類あり、フィールドは銘柄、日付、検査日、気温、室温、糖度、サイズ、重量です。
- テーブルを分けた理由は、100番の中に30種類の品番があり、入力時に探す時間を短縮するためです。最終的にはA100とB100を分けてレポート表示とグラフ作成を予定しています。どのようにフォームを作成すれば効率的か教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>どのように作ったら一番効率がいいか、分かりやすいか教えて下さい。 テーブルを1つにしましょう。 フィールドに「品番」を持てば、テーブルを1つにする事が可能で、あとから「この銘柄の、この品番」と言うのを抽出できます。 苦労している原因、躓いてしまった原因は「テーブルを品番ごとに分割しちゃったから」です。 テーブルを今のように30個に分割すれば、それを表示するレポートも30個必要です。 しかし、テーブルが1個であれば、レポートもフォームも1個で済むし、品番ごとに処理したいなら「クエリを使って、特定の品番だけを抽出すれば良い」のです。 まずは「テーブルを1個にする」のを考えましょう。 テーブルを複数に分けるとしたら「特定の項目が、あとから名称変更される可能性がある」と言う場合だけにします。 例えば、Aテーブルの「商品コード」を「一度決めたら変更しない、固有のコード」にしておいて、商品名はAテーブルには含めないでおきます。 で、Aテーブルとは別に、Bテーブルに「商品コードと商品名の対応表」を作っておきます。 Aテーブルの商品コード「A123」の商品名が変更になったら、Bテーブルの商品コード「A123」のレコードの「商品名」フィールドの中身を書き換えます。 すると、Aテーブルは一切手付かずのまま、商品「A123」の商品名が、新しい商品名に変わります。 もし、Aテーブルに商品名まで持ってしまうと、商品名が変更になった時に困ります。 旧名と新名を区別しないで集計しようと思っても「商品名が違ってしまっているので、集計が出来ない」と言う事が起きます。 Aテーブルに「商品コードだけ」を持って、商品名テーブルを別にしておけば「旧名のみで集計」「新名のみで集計」「新旧を区別しないで集計」などのように、集計の方法を自由に選べます。 取り合えずは「テーブル1つ」で作って、困ったら別テーブルに分割する、と言う方法で設計しましょう。
その他の回答 (2)
- chie65536(@chie65535)
- ベストアンサー率44% (8742/19840)
>それぞれの品番に規定値というものがあってそれを外れると文字を赤にしたい マスターテーブルには規定値は含めない方が良いでしょう。 マスターテーブルに入れるのは「すべての品番で、意味や数値が共通のもの」にします。 規定値など「品番ごとに違うもの」は、別テーブルにします。 別テーブルには品番ごとに「品番、最小、最大」などのデータを持ちます。 マスターテーブルと別テーブルを品番で連結してクエリを作ると、品番ごとに対応した規定値が参照されますから「規定値を外れたら×、規定値内なら○を出す」などが可能です。 なお「特定の条件の時だけ赤い字にする」と言うのは不可能ではありませんが難しいので「○や×を出す」の方が簡単です。
補足
例えばマスターテーブルには品番・検査日・サイズ・糖度・重量のフィールドを作成し、 毎日入力するようにします。 別テーブルには規格値を入力するのですがサイズで10以上としたいのですが>10としても多分ダメですよね。 マスターテーブルのサイズは数値型なので一緒の数値型ではないと今度クエリをする時に問題がでてくるのでしょうか? 糖度は11以上・重量は200~300の規定値。 ○xの場合はクエリの演算フィールドで○xを表示するのでしょうか? 難しいかもしれませんが出来ましたら赤文字にする方法も含めて教えて頂けますでしょうか?
- ShowMeHow
- ベストアンサー率28% (1424/5027)
データ件数が多くない場合は、通常テーブルを分ける必要はありません。 A、B、Cなどを入れるフィールドや 100番、200番などを入れるフィールドを作ればよいだけです。 特定のデータを抽出するためにはクエリを使います。 検索も一つのテーブルを検索するだけですみます。 月締め処理とかがある場合は、この限りではありません。
補足
回答ありがとうございます。 テーブルを1つにして作成しようとした所、それぞれの品番に規定値というものがあって それを外れると文字を赤にしたいのですが、テーブル1つでクエリで品番ごとに設定した方がいいのでしょうか? それと全てのデータを合わせるとレコードがかなりの行になってしまうと思いますが どの程度大丈夫なんでしょうか?