アクセスのテーブルの構造とフォーム作成方法についての質問

このQ&Aのポイント
  • アクセスのテーブルの構造とフォーム作成方法についてアドバイスをお願いします。
  • アクセスのテーブルは100番から500番までの20種類あり、フィールドは銘柄、日付、検査日、気温、室温、糖度、サイズ、重量です。
  • テーブルを分けた理由は、100番の中に30種類の品番があり、入力時に探す時間を短縮するためです。最終的にはA100とB100を分けてレポート表示とグラフ作成を予定しています。どのようにフォームを作成すれば効率的か教えてください。
回答を見る
  • ベストアンサー

アクセスのテーブルなどの構造。フォーム作成方法。

アクセス超初心者です。バージョンは2002です。 まだまだ勉強不足でどんな風にしたらいいのか行き詰ってしまい ましたので質問させて頂きます。ご教授お願い致します。 テーブル: 100番・200番・300番・400番・500番と20程あります。 テーブルのフィールドは全て一緒で 銘柄・日付・検査日・気温・室温・糖度・サイズ・重量 テーブルを分けた理由として100番の中にも A100・B100・C100と品番が多いもので30種類程あります。 入力は毎日全てであるわけではなく、1日30件程です。 A100と分かりやすいものならいいのですが【ABC】という銘柄が200番にあったりして 慣れない内は探さないといけないので入力するより探す方が時間がかかります。 最終的にA100・B100を分けてレポートで表示し、グラフも作成する予定です。 テーブルを作ったもののフォームをどうすればいいのか 検索するにも多数のテーブルがあるのでどうすればいいのか分からなくなってしまいました。 どのように作ったら一番効率がいいか、分かりやすいか教えて下さい。 分かりにくい説明ではありますが宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8514/19356)
回答No.2

>どのように作ったら一番効率がいいか、分かりやすいか教えて下さい。 テーブルを1つにしましょう。 フィールドに「品番」を持てば、テーブルを1つにする事が可能で、あとから「この銘柄の、この品番」と言うのを抽出できます。 苦労している原因、躓いてしまった原因は「テーブルを品番ごとに分割しちゃったから」です。 テーブルを今のように30個に分割すれば、それを表示するレポートも30個必要です。 しかし、テーブルが1個であれば、レポートもフォームも1個で済むし、品番ごとに処理したいなら「クエリを使って、特定の品番だけを抽出すれば良い」のです。 まずは「テーブルを1個にする」のを考えましょう。 テーブルを複数に分けるとしたら「特定の項目が、あとから名称変更される可能性がある」と言う場合だけにします。 例えば、Aテーブルの「商品コード」を「一度決めたら変更しない、固有のコード」にしておいて、商品名はAテーブルには含めないでおきます。 で、Aテーブルとは別に、Bテーブルに「商品コードと商品名の対応表」を作っておきます。 Aテーブルの商品コード「A123」の商品名が変更になったら、Bテーブルの商品コード「A123」のレコードの「商品名」フィールドの中身を書き換えます。 すると、Aテーブルは一切手付かずのまま、商品「A123」の商品名が、新しい商品名に変わります。 もし、Aテーブルに商品名まで持ってしまうと、商品名が変更になった時に困ります。 旧名と新名を区別しないで集計しようと思っても「商品名が違ってしまっているので、集計が出来ない」と言う事が起きます。 Aテーブルに「商品コードだけ」を持って、商品名テーブルを別にしておけば「旧名のみで集計」「新名のみで集計」「新旧を区別しないで集計」などのように、集計の方法を自由に選べます。 取り合えずは「テーブル1つ」で作って、困ったら別テーブルに分割する、と言う方法で設計しましょう。

IloveCECIL
質問者

補足

回答ありがとうございます。 テーブルを1つにして作成しようとした所、それぞれの品番に規定値というものがあって それを外れると文字を赤にしたいのですが、テーブル1つでクエリで品番ごとに設定した方がいいのでしょうか? それと全てのデータを合わせるとレコードがかなりの行になってしまうと思いますが どの程度大丈夫なんでしょうか?

その他の回答 (2)

  • chie65535
  • ベストアンサー率43% (8514/19356)
回答No.3

>それぞれの品番に規定値というものがあってそれを外れると文字を赤にしたい マスターテーブルには規定値は含めない方が良いでしょう。 マスターテーブルに入れるのは「すべての品番で、意味や数値が共通のもの」にします。 規定値など「品番ごとに違うもの」は、別テーブルにします。 別テーブルには品番ごとに「品番、最小、最大」などのデータを持ちます。 マスターテーブルと別テーブルを品番で連結してクエリを作ると、品番ごとに対応した規定値が参照されますから「規定値を外れたら×、規定値内なら○を出す」などが可能です。 なお「特定の条件の時だけ赤い字にする」と言うのは不可能ではありませんが難しいので「○や×を出す」の方が簡単です。

IloveCECIL
質問者

補足

例えばマスターテーブルには品番・検査日・サイズ・糖度・重量のフィールドを作成し、 毎日入力するようにします。 別テーブルには規格値を入力するのですがサイズで10以上としたいのですが>10としても多分ダメですよね。 マスターテーブルのサイズは数値型なので一緒の数値型ではないと今度クエリをする時に問題がでてくるのでしょうか? 糖度は11以上・重量は200~300の規定値。 ○xの場合はクエリの演算フィールドで○xを表示するのでしょうか? 難しいかもしれませんが出来ましたら赤文字にする方法も含めて教えて頂けますでしょうか?

  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.1

データ件数が多くない場合は、通常テーブルを分ける必要はありません。 A、B、Cなどを入れるフィールドや 100番、200番などを入れるフィールドを作ればよいだけです。 特定のデータを抽出するためにはクエリを使います。 検索も一つのテーブルを検索するだけですみます。 月締め処理とかがある場合は、この限りではありません。

関連するQ&A

  • Access 2つのテーブルで数量の比較をしたい

    Access2007を使用しています。 2つのテーブルに品番と数量がそれぞれ登録されています。 【テーブルA】 品番  / 数量 あ001/ 4 い001/ 5 あ001/ 1 【テーブルB】 品番  / 数量 う000/ 10 あ001/ 1 い001/ 4 い001/ 1 この2つのテーブルから、品番ごとの数量を比較して、異なるデータの品番と差異を取り出したいのです。 【結果】 あ001/ 4(←A-B=4) う000/ 10 A,Bのテーブルで品番ごとに集計した結果から、数量が不一致のものを取り出す方法がわかりません。 どうぞよろしくお願いいたします。

  • アクセスで

    アクセスで、テーブルが5つあり、1番テーブルは、品番、設備名一覧で、品番は重複しているものがありますが、品番と設備の組み合わせは1つしかなく、主キーが設定してあります。 2番テーブルは、品番、設備名に対する、単価、3番テーブルは、品番、設備名に対する生産能力、4番のテーブルは、品番、設備名に対する、使用材料名、5番のテーブルは、品番、設備名に対する担当者名になっています。この5つのテーブルをリレーションシップでつなぎ、クエリで、品番、設備名、生産能力、使用材料名、担当者名を表示しています。 それぞれ既に存在する品番、設備名に対するデータが変更になった時は、それぞれのテーブルの内容を変更するだけでいいのですが、新しい品番が追加になった時に、設備名、単価、生産能力、材料使用名、担当者名のテーブル全てに新しい項目を追加するのは大変手間がかかってしまいます。 そこで、1つのフォームから5つのテーブル全てに情報が登録される様にできますか? フォームで、新品番、設備名・・・を入力すれば、5つのテーブル全てに新品番が登録され、それぞれのデータが入力される様にするにはどの様にしたらいいでしょうか? 誰か教えて下さい。よろしくお願いします。

  • access フォームの作成

    accessの初心者で只今勉強中ですが会社で受発注を一度に管理できるシステムを作れないかと奮闘しています。 まず、現時点での構成を言います。 T_商品 フィールド〔品番(英数混ざっている)〕、品名 T_受注main フィールド〔IDオートナンバー、注番、日付、〕 T_受注sub フィールド〔IDオートナンバー、注番、品番、数量〕 Q_商品反映 T_受注subの品番とT_商品の品番で品名を参照させるクエリ があります。 ここでそれぞれの受注テーブルに入力する為のサブフォームを利用したフォームを作成しました。 サブフォームに品番を入力する際に品名を確認の為だけでいいので表示させたいのですができません。商品数が300程度あるのでコンボボックスで選ぶのは大変なので避けたいのですが、直接入力もできてt_商品にあるものであると認識できるのであれば使用してもいいと思っています(一応試みはしましたが、結局表示できませんでした)。表示させたいフィールドのコントロールソースをクエリに変えてみたのですがNAME?のエラーがでています。Dlookupでも試してみましたがうまくいきませんでした。Dlookupに関してはおそらく私が式の構成方法を理解できていないからだとも思います。 根本的に間違っているのかもしれませんが、どうやって表示させればいいのか教えていただけますでしょうか?

  • Access2000 のテーブルの構造を複写

    マシンAとマシンBにそれぞれ Access2000 がインストールされています。 マシンAでAccess2000 でデータベースがすでに存在します。 このデータベースには複数のテーブルが存在して、そのうちあるテーブル(「テーブルA」とします) とまったく同じ構造のテーブル(データは転送不要)を マシンBにもってくるにはどうすればいいでしょうか? マシンBのデータベース名は別の名称で、かつ、マシンAのDBファイルをマシンBに複写できないのですがどうすればいいでしょうか? (テキストファイル程度ならマシンBにもってこれるという前提です) フィールド数が2個程度なら手入力も考えたのですが・・・

  • アクセスのフォーム作成について

    例えば、商品区分A、B、Cがあり、商品区分Aは商品a,b,c Bはd,e,f Cはh,i,jがあるとします。フォームを作成するときに商品区分Aを入力したら商品名のリストボックスにはa,b,cしか表示されないようにするためには、商品テーブルを商品区分A,B,C分と3つ作っておく以外方法はありませんか? うまく質問できませんが、お願い致します。

  • Access2つのテーブルの差額を出すピボット

    Access2007を使用しています。 以下のような2つのテーブルがあります。 <テーブルA> 区分 品番 金額  数量 A  001 10000  10 A  S12 5000   5 A  002 8000   8 A  001 6000   6 <テーブルB> 区分 品番 金額  数量 B  001 2000  2  B  S12 3000  3 このデータを元に、以下のような結果をピボットで表示したいと思っています。       区分       A  |  B   |合計 品番  数量 金額|数量 金額 |数量 金額 差額(A-B) 001 16 16000| 2 2000 | 18 18000 14000 002 8 8000 |      | 8  8000  8000 S12 5 5000 | 3 3000 | 8  8000  2000 テーブルAとBをユニオンクエリでまとめ、ピボットを作って みたのですが、差額の部分が出せず・・・ どうぞよろしくお願いします。

  • ACCESS2007でテーブルへの書き込み

    何時も大変お世話になっております。 ご教授をお願い申し上げます。 環境 ・windows7 ・ACCESS2007 過去事例に似たケースが有ったのですが、上手く行かなかったので 書き込みさせて頂きました。 画像の様な画面があります。 入力日・品番・数量・備考・消化区分・支払日は手入力で それ以外の 品名・単価・購買先・勘定区分はDlookUpにて商品マスタと購買先マスタから 引っ張って来ております。 全ての項目は別のテーブルに蓄積させて行く考えでおります。 上手く行かない部分は手入力以外の部分が蓄積させたいテーブルに 書き込まれない事です。 コードで引っ張って来ているので、他でも同様にコードで引っ張ればよいのでは? というお話もあるかと思うのですが、どうしてもテーブルに書き込みたく苦慮しております。 変なやり方かとは思いますが、何とぞアドバイスをお願い申し上げます。

  • accessのテーブル別けについて

    accessのテーブルの分け方について 現在、工場から毎日上がってくる作業日報を集計したいのですがテーブル別けの基準がわかりません ちなみに打ち込む内容は下記の通りです 1.作業者 2.作業日 3.得意先 4.品番 5.品名 6.使用設備 7.作業内容 8.加工時間 9.加工数 ※上記のうち1.3.6.7はコンボボックスにて入力を簡略化する予定です ☆データの注出を予定しているのは、作業者、作業日、得意先、品番といったものです、ちなみに作業日は○○年○日~○○年○日と指定できるものを考えているのですが? どなたか詳しい方宜しくお願い致します。

  • フォームの作り方 アクセス2000

    アクセス2000を使い始めた初心者です。 顧客群に関するテーブルAがすでにあります。 このテーブルは事情があって、フィールドを追加することはできません。 もうひとつのテーブルBを作って、こちらに情報を追加するためのフィールドをいくつか作ります。 やりたいことは、 入力用のフォームに、テーブルAの情報内容を表示させて、テーブルBの入力をしたいのです。 クエリを作ってリレーションを設定するのだろうと思うのですが、具体的に進め方がわかりません。 よろしくお願いします。

  • ACCESS テーブル作成クエリ

    ACCESS2000で、別のデータベースAのテーブルを定期的に最新のものにするために、データベースBにテーブル作成クエリを作成します。Aを開くときにはパスワードが設定されているので、テーブル作成クエリでそのパスワードの入力を求められるため、正しく入力して実行するのですが、パスワードが正しくありませんとエラーになってしまいます。 Aのパスワードを解除して実行すればテーブルが作成できますが、パスワードを解除しないで作成する方法はないでしょうか。

専門家に質問してみよう