Accessのデータベースの構築の仕方について
Access初心者です。
1注文書にmax3品目まで記入できる注文書データベースの構築について教えて下さい。
メインテーブルと、サブデータを作っており、
メインテーブルには、注文書Noと注文者名、日付の1注文書内の重複するフィールドを
サブテーブルには、連番(max3)、品名(max3)、金額(max3)の重複しないデータとしています。
以下の様な感じです。
メイン→注文書No 1 2 2 3 3 3
サブ →連番 1 1 2 1 2 3
本当は、注文書Noを主キーにして、同じ注文書Noを入力出来ない様にしたいのですが、インデックス、主キー、リレーションシップで値が重複しているのでテーブルを変更できないというエラーメッセージが出ます。
仕方が無いので、現在は諦めて、以下の様に注文書Noでリレーションシップを組んでいます。なので注文書Noの2度打ちの可能性はあります。
メインIDもサブIDも意味が無いと思っていますが。
メイン サブ(主キー設定無し)
メインID(オートNo)主キー サブID(オートNo)
注文書No-----------注文書No
注文者名 連番
日付 品名
金額
私のやりたいことは、一つの注文書Noに対し、max3つまで連番で紐づけて、同じ注文書Noを入力出来ないようにしたいことなのですが。
この様な場合、どの様にデータベースとして、リレーションシップはどの様にして、主キーもどの様にするのが正しいやり方なのでしょうか?
リレーションシップも良く理解出来ていない状態ですが、宜しくお願いいたします。
No.2ベストアンサー
- 回答日時:
サブのフィールドを下記のように変更します。
尚、得意先、商品等のテーブルも作成することになりますので
区別できるフィールド名にします。
メイン サブ
注文明細ID(オートNo)主キー
注文ID(オートNo)主キー…注文ID(長整数)
注文書No 連番
注文者名 品名
日付 金額
メインテーブルのメインIDとリレーションシップの設定をします。
フォーム作成はフォームウィザードを使います。
ウィザードで最初の画面でメイン、サブの主キーを除いた項目を選択したフィールドに配置します
あとはウィザードに答えていきます。
出来あがったフォームの文字のポイント、配置等にデザインモードで手を加えます。
>メインIDもサブIDも意味が無いと思っていますが。
!!!もったいないことを
注文No.も主キーに出来ますが、これを主キーにすると注文No.の変更ができなくなります
主キーはオートナンバーにしておくとシステムが採番してくれます。
フォーム、レポートの項目には必要ありません
>注文書Noの2度打ちの可能性はあります。
テーブル設計時 注文No.のインデックスを重複なしの設定にします
この回答への補足
ありがとうございます。
メインの注文書Noを重複なしにして、同じ注文書Noは受け付けなくなりました。
再度、相談なのですが
サブフォームに注文書Noも表示したいので、
メイン サブ
メインID 主キー サブID 主キー
注文書No(重複無し)--注文書No(重複あり)
注文者名 連番
日付 品名
金額
でも構わないでしょうか?
でもこれだと注文書Noを変更したとき、サブの変更前のデータがテーブル上に残ってしまうことになり後でテーブルから削除しなければならなくなりますか?
shinkamiさんの通りにやればそんな必要もなくなりますでしょうか?
メイン サブ
サブID 主キー
メインID 主キー --メインID
注文書No(重複無し)--注文書No(重複あり)
注文者名 連番
品名
金額
とメインIDと注文書Noの二つをリレーションすれば
サブにも注文書Noを表示できて、メインの注文書Noを変更してもサブの変更前のデータが残ることを防止できますか?
複数の人が使う可能性があるので、サブテーブルから変更前のデータを削除する作業は怖くてしたく無いと思います。
それとサブの連番(max3)を今は手入力していますが、間違う可能性もあるので、サブのレコードと自動で連動入力することはできますか?
サブレコード1の時、連番1
サブレコード2の時、連番2の感じです。
それと重複なしにして注文書Noの2度打ちは
インデックス、主キー、リレーションが重複しているのでテーブルを変更できませんでした。再定義して下さいのメッセージが出るので防げるようになりましたが、
これを
すでにある注文書Noを入力しています
のようなメッセージに変えることはできますでしょうか?
追加で申し訳ありませんが、お願いいたします。
No.5
- 回答日時:
もし、行き詰っているのならしてなくても良いです。
余裕あれば・・・。
注文書単位のキー
「注文書No」+”0”固定値
注文書明細単位のキー
「注文書No」+「連番」”1”~”3”
こうすれば、全体でも重なることないし意味ある主キーになります。
PS.
テーブル項目が提示しているものだけなら
メイン、サブとテーブル2つにしなくてもなんとかなるのでは、と思います。
チェック仕掛けもより簡単になります。
(メイン、サブ)としていることの方が説明・回答ややこしくしている感じです。
No.4
- 回答日時:
>サブフォームに注文書Noも表示したいので、
>メイン サブ
>メインID 主キー サブID 主キー
>注文書No(重複無し)--注文書No(重複あり)
>注文者名 連番
>日付 品名
> 金額
>でも構わないでしょうか?
>でもこれだと注文書Noを変更したとき、サブの変更前のデータがテーブル上に
>残ってしまうことになり後でテーブルから削除しな>ければならなくなりますか?
メインの注文書No.とサブの注文書No.は別のものならサブに追加してもかまいませんが
フィールド名を注文明細No.とでもして後の混乱を回避してください。
※同じものであれば、サブはメインとセットで使用することになりますので
サブには必要ないでしょう
>shinkamiさんの通りにやればそんな必要もなくなりますでしょうか?
>メイン サブ
サブID 主キー
>メインID 主キー --メインID
>注文書No(重複無し)--注文書No(重複あり)
>注文者名 連番
> 品名
> 金額
>とメインIDと注文書Noの二つをリレーションすれば
>サブにも注文書Noを表示できて、メインの注文書Noを変更してもサブの変更前のデータが残ることを防止できますか?
>複数の人が使う可能性があるので、サブテーブルから変更前のデータを削除する作業は怖くてしたく無いと思います。
リレーションによりメインとサブに上下関係が生れます
下位のレコードが残っていると上位のレコードは削除できません
またテーブル間のリレーションは一つしか受け付けません
>それとサブの連番(max3)を今は手入力していますが、間違う可能性もあるので、
>サブのレコードと自動で連動入力することはできますか?
>サブレコード1の時、連番1
>サブレコード2の時、連番2の感じです。
オートNo.という手はありますが自働採番はテーブル単位なので
メインの注文単位の連番となるとVBAを組み込みます。
自分はやったことはありませんがだいぶ工夫が必要でしょう。
>それと重複なしにして注文書Noの2度打ちは
>インデックス、主キー、リレーションが重複しているのでテーブルを変更できませんでした。
>再定義して下さいのメッセージが出るので防げるようになりましたが、
>これを
>すでにある注文書Noを入力しています
>のようなメッセージに変えることはできますでしょうか?
これもVBAの領域でしょうが 渡来してみましたが判りません
補足
[ファイル]→[印刷]でフォームはそのまま印刷できます
(うまくデザインすれば注文書になるかも)
各ボックスのプロパティーの書式書式タグの表示対象で
画面/印刷、画面のみ、印刷のみの設定が出来ます
No.3
- 回答日時:
>「注文書Noを変更」?
注文書Noは発生する度に番号が増えていくものでは?。
過去に発行している注文書Noを修正ということは、他の金額とかの項目は
そのままで注文書Noのみ付け替えしたもの(他一致)が発生する運用ということでしょうか。
「新レコード追加→他項目は複写して更新→元のレコード削除」でもできますが
まだ難しいですよね?。
------<補足>------------
もし、
回答待ちで時間を持て余しているのであれば、
下記を参考に見るなど参考にしてください。
ほんの一部です。今すぐ使えそうなところ適当に見つけました。
掲示板では言葉だけなので、わからないところあったかと思います。
データ更新前にキーの重複をチェックする方法
http://www.tsware.jp/tips/tips_161.htm
マスタの主キーを変更したら対応するデータテーブルのレコードも更新する方法
http://www.tsware.jp/tips/tips_007.htm
モーグ/Access一般機能
http://www.moug.net/tech/acopr/
AccessTips 初心者講座
http://www.accessclub.jp/actips/index.html
Access Tips
http://www.geocities.jp/cbc_vbnet/tips/Tips.html
027 2006/01/13 サブフォームに枝番を自動的に入力する方法
アプリケーション開発に役に立つ小技集です。
http://fk-plaza.jp/ACS/TIPS/waza53.htm
新規登録時に重複レコードがある場合に警告を出すフォーム
→画面見にくいですが、メニューバーのすべてを選択したら見えやすいです。
マイクロソフトアクセス特設ページ
http://pc-dr.jp/acc/acc-key.htm
「ACCESS」「TIPS」「テクニック」とかでいろいろ検索しています。
最初は結果を聞くと同時に、事例、解説をみるのも理解早くなります。
大きな書店で「テクニック集」とか探すと良いです。
いろいろあります。
No.1
- 回答日時:
正しく動くやり方はいろいろあるので、
無駄があればそれが正しくないやり方といえます。
同じ項目があちこちに散らばらないこと、正規化することが理想でしょう・・・・。
メインテーブルとサブテーブルの決め方、考え方はどうしましたか?。
1次元的なやり方、参考)
注文書No*
注文者名コード*
└-----注文者名
日付
連番*
品コード
└-----品名
金額
作るなら、
これが格となるテーブルで、*が主キー。注文者名や品名は別テーブル。
画面には
メインフォームに注文書No、注文者名、日付
サブフォームに連番項目以下を表示、
注文書Noと連番が親子連結フィールド。
(1つのテーブルでもクエリ使えばメインとサブに表示できたはず)
入力できないようにする=>存在するか確認する、でクエリを使います。
「入力注文書No」がテーブルに存在するか。
「入力注文書No&入力連番」がテーブルに存在するか。
「連番は、1、2、3」となっているか。
さらに
「注文書Noの最大値」を求めるクエリを作っておくこと。
空き連番を見つけるなら
縦軸に注文書No、横軸に連番としたクロス集計クエリ
事例で
あとから
「注文書No1-連番2」での追加や修正はあるのか無いのか????。
たぶんしてはいけないと思いますが・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) accessについて 2 2022/05/31 16:58
- 経営情報システム accessでの請求管理について 12 2022/06/11 16:20
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- Excel(エクセル) VBAで、シート間の転記するコードを教えてください。 4 2023/03/26 10:43
- Oracle SQL update方法 2 2022/06/22 14:07
- 財務・会計・経理 業者間での注文書・請書の取り扱いについて 2 2022/06/27 15:53
- Access(アクセス) MAXで0が出力される 1 2022/03/31 21:43
- Amazon アマゾン 7 2022/06/11 11:03
- Visual Basic(VBA) Excel VBA 同じ名前のフォルダがあれば作成したブックを格納するマクロをつくりたい 2 2023/01/16 16:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パワポで曲がった両矢印の簡単...
-
パワーポイントの表
-
音声マークを一括非表示にしたい。
-
パワーポイント「スライドショ...
-
エクセル・パワーポイントなど...
-
PowerPointで、作成されたファ...
-
ホワイトボード 油性マジックの...
-
【パワーポイントのフォントが...
-
PowerPoint2007を使用していま...
-
パワーポイント2019 図の透...
-
PowerPointでスライドマスタの...
-
Power point で、アニメって作...
-
パワポ初心者で申し訳ありませ...
-
パワーポイント アニメーション...
-
パワーポイントは、ページ番号...
-
ExcelのグラフをPowerPointに貼...
-
PowerPoint で動画を再生中に表...
-
パワーポイントで、プレゼン用...
-
エクセルのマクロについて教え...
-
パワーポイントでの印刷時の枠...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
入力履歴(?)の消し方
-
24を日本人がやるなら
-
パソコン本体ですが。サブ用も...
-
韓国で活躍する日本人と日本で...
-
『靏』という漢字の中国語での...
-
You Tubeセフティーモードについて
-
英語圏に キムと 韓国で キム ...
-
オンラインゲームで好きなジョブ
-
あなたが歌手に! デビュー作の...
-
昔は人気、今は廃ったと思える...
-
韓国歌手の日本の出稼ぎを責め...
-
彼氏がいきなりフルネーム表示...
-
学生時代の同級生が久しぶりに...
-
朝のはよから、弁当箱さげて・...
-
15年程前にタモリが歌っていた歌
-
炭坑節の替え歌を聞きたい
-
是と是个の違い
-
人の口・唇を見てキモイと思う...
-
みなさんには道で偶然すれ違っ...
-
顔がはっきりしていると濃い顔...
おすすめ情報