こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

アクセスの自動入力フォームに手動で入力したい

初心者ですが、ネットで調べながらaccess2013で、納品書フォームを作りました。
納品書明細テーブルと商品マスタテーブル(商品コード、品番、単位)を納品書明細クエリで紐づけしてフォームを作成しました。商品コードを入力すると、自動的に品番と単位が入るようになっています。
ここで、商品コードがついていない商品(商品マスタに含まれず、今後登録する予定もない)も品番と単位の欄に手動で入力できるようにしたいのですが、可能でしょうか。
今手動で入力すると「フィールド'商品コード'とキーが一致しているレコードをテーブル'商品マスタ'で探すことができません」とエラーが出てしまいます。
ご教示いただけましたら幸いです。よろしくお願いいたします。

投稿日時 - 2019-07-26 11:39:30

QNo.9639296

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(16)

ANo.16

>やはり「左端の+」がわかりません。
☆背景が灰色なので見つけにくいですね、背景を白にする
 左端のボックスを選ぶとマークが濃くなります
☆納品書登録の画像です。
 
 左端の▶行の明細が表示されます
 明細の合計はsum関数を使っています
 ここをクリックすると行の伝票金額にコピーします
☆納品書No.が重複なしならピンポイント検索も可能です
 今回色々勉強になりました、フォーム設計、VBAについては最初の
 ご質問と大きくかけ離れます。

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

投稿日時 - 2019-08-19 23:02:44

お礼

何度もご回答いただきありがとうございました。
やってみましたがどうしてもできませんでした。せっかく教えていただいたのに理解できず申し訳ございません。
他の方法でやってみようと思います。
貴重なお時間を頂きまして本当にありがとうございました。

投稿日時 - 2019-08-23 16:01:54

ANo.15

>空のフォーム(メニュー)を新規に作り、
 これにラベルボックスを納品書登録を配置します。
 この時デザインモードですね、コードの表示ツールでコード編集画面
 ここへコピペします。
 こうして作ったフォーム(フォームAとします)に対して、
 No.8の顧客マスタ登録作成の作業を始めたのですが、
>→クエリビルダを閉じる→左端の+をドラッグしてボックスを左へ移動
 この部分で「左端の+」がどこにあるのか全く分かりませんでした。
 どこかで間違っているのでしょうか。
★左端のフィールドの更に左上角より少し離れた左上に影のような?
 表形式:ラベルボックスはフォームヘッダ、
 テキストボックスは詳細に分かれますが編集は一体になって反応します。
  この十字マークは左右の移動
  左端の一方のボックスでそれぞれ領域内の上下移動
  ボックスの並びの移動はラベルとテキストセットで移動
  (単独で移動すると並びが崩れます)Ctrl+Zで元に戻してください 
>クエリビルダで顧客マスタを追加したあとは、
 ワイルドカードとMフリガナの2つを
 フィールドにドラッグしMフリガナの並び替えを昇順にしてクエリビルダを
 閉じればいいんですよね?
★Mフリガナはワイルドカードに含まれているので重複することになるので
 フリガナの表示を外します
 レコードソースはテーブル名からSQL文に変わっています。
 メモ帳にでもコピペして確認下さい
>その後の商品マスタ登録も同じフォームAに対して行えばいいのでしょうか。
★ ハイ!その通りです

>納品書登録、納品書登録明細サブはフォームA
 とは別にそれぞれフォームを作成するのでしょうか
★納品書登録のレコードソースを納品書テーブル
 納品書登録明細サブのレコードソースを納品書明細テーブル
 と同じ要領で作成して
 納品書登録明細サブを納品書登録フォームのフッターにドラッグ
 プロパティーのデータタグでリンク親フィールドをID
           リンク子フィールドを納品書ID
 基準日と税率期限の対比で決めます。
★右の集合ボックスはプロフィールです。
 ここはだれかれなしにみる所ではありません。
 大きなラベルボックッスかぶせておきます

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

投稿日時 - 2019-08-17 00:28:03

補足

ご回答いただきありがとうございます。
やはり「左端の+」がわかりません。
レコードソースのところには
SELECT 顧客マスタ.* FROM 顧客マスタ;
とあります。
クエリビルダを閉じると、フォームのデザイン画面に戻りますが、
詳細の欄には何もありません。

また回答No.8にあった
>→Mフリガナをフィールドに追加→並び替えを昇順に
という部分はどういう作業になりますでしょうか。
フィールドに追加とあったので、ワイルドカードと同じくドラッグして入れてしまいました。

次にご回答いただいても理解できなかったら、
私の能力を超えているのだと思いますので、解答を締め切らせていただきます。
貴重な時間を割いて丁寧に教えてくださっているのに理解できず申し訳ございません。

投稿日時 - 2019-08-19 16:07:02

ANo.14

>ANo.7にフォームを添付してくださっていますが、品番が二つあります。
 片方が自動入力される欄で、もう片方が手入力する欄なのでしょうか。
☆左端の商品コード(納品書明細テーブルのフィールド)に入力すると
 商品マスタの主キーである商品コード繋がりで商品が確定します。
 右端の基準単価、品番それに単位名は商品マスタの情報です。
 !!この項目を修正すると他のレコードにも反映しますので、
   フィールドの編集ロックをはいにします
 この情報をBVAで単価、品番にコピーします。
 コピー後単価、品番に手入力で更新とが可能です。
 右端の基準単価、品番コードをプッロパティーで表示しない設定しても
 VBAに影響することはありません
>印刷し、取引先に送付するわけですが
☆このまま印刷できますが、取引先に送付するには敬称、住所等他に複数の
 項目が必要ですので登録画面は単票形式
 またはレポートで様式を整えたものの一括印刷になります。

投稿日時 - 2019-08-10 01:20:21

ANo.13

>せっかくお答えいただいたのに申し訳ございませんが、
 よく理解できずにいます。
 下記部分は、どこかに書き込まないといけないのでしょうか。
 また、回答5までで作ったものはそのまま使うのでしょうか。
 クエリは使わないということでよろしいのでしょうか。
☆新規にフォームを作成し、顧客のコンボボックス配置します。
 命令文でお分かりかと思いますがフォームを開くコマンドボタン使いません
 -----------コンポボックッスの値で絞り込み-------------
  Private Sub 納品書登録_Change()
   DoCmd.OpenForm "納品書登録", , , "T顧客ID=forms!メニュー!納品書登録"
  End Sub
 -----------------------------------------------------------------------------
※テーブルには複数年の情報が蓄えられています。
 無条件でフォームを開くと全てのレコードが対象になります。
 企業のシステムでは数万のレコードは普通に存在します。
 無条件で開くと大変ことになります。そのフォームが単票フォームならなおさらです。
 そのため条件付きで開きますが、開いてから条件を指定しても無駄です。
 その条件は今回の場合:納品書番号、日付、お客様、
 今月分(月初日~月末日)、期間(開始日~終了日)
 それぞれのボックスを配置したフォーム(メニュー)を新規に作成し、
 これを開いて条件入力後このメニューで目的のフォーム目的のフォームを
 開くことになります。

投稿日時 - 2019-08-09 17:23:51

ANo.12

追伸 オートナンバー形式のIDフィールドはAccessにお任せなので
意識して外しています。ポカミスではありません
添付図は商品マスタ登録の画面です。
商品コードでソートがかかっていますので、どのような順で登録しても
閉じて再度開くとコード順にならびます
以上でお伝えしたい事は全てだと思っていますが、漏れている事も多々あるかと
ご不明の点はご遠慮なく。
お陰で色々勉強になり有難うございました。

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

投稿日時 - 2019-08-08 20:23:44

補足

さらにご回答いただきありがとうございます。
ANo.7にフォームを添付してくださっていますが、品番が二つあります。
片方が自動入力される欄で、もう片方が手入力する欄なのでしょうか。
このフォームから納品書のレポートを作り、印刷し、取引先に送付するわけですが、
レポートのなかの品番の位置は、自動入力された場合も手入力した場合も同じ位置にくるようにできるのでしょうか。

投稿日時 - 2019-08-09 16:10:53

ANo.11

今日も暑かったですね。
フォームの表形式いかがですか
表形式作成すると
 最初ラベル部分はフォームヘッダーに、
 テキスト部分は詳細に分かれますが
 ・どちらかのボックス幅を変えると他のボックスの幅もついてきます。
 ・一つのラベルの高さを変えると他のラベルもついてきます
 ・一つのテキストの高さを変えると他のテキストもついてきます
 ・ボックスの場所を移動するには移動したい位置にドラッグします
 ・テーブルにフィールドを追加したとき、既定のフィールドの追加から
  挿入したい場所にドラッグ
 ・表全体は左端のラベルボックスの近くの左の十字矢印で捕まえ
  左右の移動のみ
 ・ラベルだけの左端のラベルでフォームヘッダ内で上下移動
 ・テキストだけは左端のテキストで詳細内で上下移動
 ・同じフォームヘッダ、詳細、フォームフッタのどれかに集めたいときは
  テキストから縁を切るためラベルを切取り、
  集めたい場所に貼付け、テキッストを移動
----------------------------------------------------------------------------
VBAとはVisual Basic for Applicationsttと呼ぶようにアプリケーションに
特化した言語でAccessVBAはフォームも含む各種ボックス(ラベル、テキスト、コンッボ)のイベントがきっかけで起動します。
VBAの記述画面へ入るには二通りあります。
1.ボックッスのイベントプロパティーでイベントの種類を選ぶ
2.コードの表示ツールから入る
 添付図はコードの表示ツールをクリック→左側のプルダウンをクリック
 したところです。イベント対象の一覧が表示されています。
 イベント対象の一つを選んで右側のプルダウンリストが
 に実行可能なイベントになります。
 このイベントの一つをクリックすると
 Private行とEnd Sub行の2行が表示されます。
 この間に命令文を記述します。
3.命令文の記述に入る前に
3-1.演算子 = の意味
  数学では A=A+B Bは0以外になく意味のない式になりますが
  VBAでは 右の式を計算してAの値にすると云うことで普通に使います。
  例えば 金額=金額+金額*税率と元の税抜き金額が税込金額に変わります
3-2.コード表示画面のツールオプションから編集タグ内で
  変数の宣言を強制するにチェックを入れる
  元祖は1970年代後半に開発されたBasicプログラムの仕様が
  引き継がれてれているようです。
  宣言(DIM)のない変数は暗黙の宣言であるとしていた内容が今も残っている
  当初「得意先」開発途中で「得意先名」、「会社名」と入れ替わる
  バカミスがことがあます。
  実行すると別変数として取り扱われ、エラーなしで終了するのですが、
  結果はとんでもないことになり
  私も体験しました。
  Accessをインストールするとこの宣言を強制するにチェックが
  外れています。
☆VBAに戻ります。
 納品書登録の主フォーム1行のレコードを入力すると次の行に移り
 次のレコード入力になります。
 マウスで元の行に戻し、サブフォームをクリックする2回の操作が必要です。
 入力の最終フィールド(お客様名)の次はサブフォームに改良します

 1.ボックッスのイベントプロパティーでイベントの種類を選ぶやります。
  納品書登録フォームをデザインモードで開きます。
  →顧客ID→イベントタグ→フォーカス喪失後の右端
  →命令文はPrivat subの次の行から記述しますが字下げのため
  →Tab→半角モードにして→docmd.で次に可能な命令文を表示され
  →Gotocontrol→ "納品書登録明細サブ" と入力
  →コード表示の一番外側で閉じます。
実行して動作を確認下さい
docmd.でコマンドツールの全てが可能と確認頂けましたか
詳しくは参考URLをご覧ください
☆仕組み上品番コードは省略できません。
 未定又は手入力の品番登録ではだめですか
☆フォームのその他タグのコメントプロパティはお気付ききですか
 登録時ここへマウスカーソルを近付けるとツールのように
 コメントを表示します
 マニュアルレスのシステムになりませんか


https://www.feedsoft.net/access/guide-vba/guide10.html

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

参考URL:https://www.feedsoft.net/access/guide-vba/guide10.html

投稿日時 - 2019-08-08 19:26:31

ANo.10

テーブルの設計は完了し、いよいよフォームの設計です。
納品書登録と納品書登録明細サブを単独で作りましたね、
これらのテーブルをリレーションでドッキングすることは触れましたか
自信がないので
 納品書登録をデザインモードで開く
 →納品書登録明細サブをナビゲーションウインドよりフォームフッタへドラッグ
 →警告メッセージにOK
 →納品書登録明細サブの枠の高さをドラッグで
  画面の半分ぐらいまで伸ばして
 →納品書登録明細サブの枠外
 →納品書登録の書式プロパティーの既定のフォームを帳票フォームに
エクセルではデータ入力画面と印刷画面がおなじになりがちですが、
Accessではミス入力を回避しながら、入力効率上げるような工夫をし、
報告書は納品書のように、住所、電話番号等沢山の情報を盛り込みます。
このような理由で登録は単票形式より複数の帳票形式がよろしかと
今回は、データ入力の必要な場所にマウスカーソルが移動る仕組みを
フィールドのプロパティーで
プロパティーに無い所をVBAで補完すると考えて下さい。
以下はこのシステムに組み込んだ全てです。
納品書登録明細サブコードの表示画面にコピペするだけで、運用可能です
----------------------------------------------------------------------------
Option Compare Database
Option Explicit
'--------------------------------------
Private Sub T金額_GotFocus()
Parent!T金額 = 合計
End Sub
'--------以下のように:で区切ると一行に2つの命令文 ------------------------
Private Sub T商品コード_LostFocus()
T品番 = M品番: T単価 = M基準単価
End Sub
'-------------------------------------
Private Sub T数量_BeforeUpdate(Cancel As Integer)
T金額 = T数量 * T単価
End Sub
'-----------------------------------------
Private Sub T単価_BeforeUpdate(Cancel As Integer)
T金額 = T数量 * T単価
End Sub
'-----------------------------------------
☆納品書登録内
 T金額:編集ロックはい データタグ内
    明細行の合計が設定される
  明細行と整合性が取れないので、修正するときは明細サブで
☆T品番、T単価:タブストップいいえ そのたタブ内
 M単位名、M商品コード、M 品番、M基準単価:タブストップいいえ
 M単位名、M商品コード、M 品番、M基準単価:編集ロックはい

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

投稿日時 - 2019-08-07 19:29:42

ANo.9

>下記部分は、どこかに書き込まないといけないのでしょうか。
☆フォームを開くときはナビゲーションウィンドから開いていますね
 これを別のフォームから開くのです。
 空のフォーム(メニュー)を新規に作り、
 これにラベルボックスを納品書登録を配置します。
 この時デザインモードですね、コードの表示ツールでコード編集画面
 ここへコピペします。
>また、回答5までで作ったものはそのまま使うのでしょうか。
☆そのまま使います
 最新のテーブルのリレーションシップを添付します
 フィールド名をチェックして下さい
 ここに単独のプロフィールと呼ぶテーブル
 最終的にはメニューのレコードソースにします。
 この件新規にQして頂くと有難いです。
>クエリは使わないということでよろしいのでしょうか。
☆はい、ただクロス集計クエリを一つ使っていて脱却できていません。
 そちらも意味不明なクエリが溜まっているのでは?

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

投稿日時 - 2019-08-07 17:58:08

ANo.8

こんばんは
・顧客マスタ登録作成
 フォームデザイン→プロパティー→書式タグ
 →既定のビューを帳票フォームに→詳細枠の未使用部分をクリック
 →プロパティ→データタグ→レコードソース右端
 →クエリビルダー→顧客マスタ→追加→テーブルを閉じる
 →ワイルドカード(*)をフィールドにドラッグ
 →Mフリガナをフィールドに追加→並び替えを昇順に
 →クエリビルダを閉じる→左端の+をドラッグしてボックスを左へ移動
 →ボックス外をクリックして、左端のラベルを上へ移動
 →詳細バーを止まるまで上へ
 →左端のテキストボックスを止まるまで上へドラッグ
 →フォームフッタバーを止まるまで上へドラッグ品目マスタ
 →フォームフッタの下の空白の下辺を上へドラッグ
 フリガナの部分はカーソが止まらないようする
 →プロパティー→Mフリガナのテキストボックス→その他タグ
 →タグストップいいえ
・商品マスタ登録
 顧客マスタ登録と同じ手順ですの説明を省きます。
・納品書登録
 これは納品書テーブルと顧客テーブルのリレーションで繋がった
 2つのテーブルの取り扱いになります。
 これもテーブルを2つ配置するだけで他は変わりませんが抽出条件も
 加わるかも
 ワイルドカードを使うのは後日フィールド追加したとき
 このクエリのステップをはぶく為です。
・納品書登録明細サブ【ナビゲーションの表示がバラバラにならないためです】
 このフォームでは、
 (1)商品コードで参照した品番を他のレコードに与えずに修正する
 (2)金額=数量×単価
 (3)明細書の金額の合計計算
 (4)金額の合計を納品書に送る
 これらはVBAの範疇です。
このように納品書登録と納品書登録明細を別々作成して、リレーションシップで
つないでサブフォームのあるフォームに仕上げます。
納品書登録明細サブが出来たといって頂ければVBAで済むので助かりますが
 次回をお楽しみに。

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

投稿日時 - 2019-08-06 18:55:38

補足

引き続きご回答いただきありがとうございます。
以下の作業をしました。
ANo.9にありますように
>空のフォーム(メニュー)を新規に作り、
 これにラベルボックスを納品書登録を配置します。
 この時デザインモードですね、コードの表示ツールでコード編集画面
 ここへコピペします。

こうして作ったフォーム(フォームAとします)に対して、ANo.8の顧客マスタ登録作成の作業を始めたのですが、

>→クエリビルダを閉じる→左端の+をドラッグしてボックスを左へ移動

この部分で「左端の+」がどこにあるのか全く分かりませんでした。
どこかで間違っているのでしょうか。
クエリビルダで顧客マスタを追加したあとは、ワイルドカードとMフリガナの2つをフィールドにドラッグし、
Mフリガナの並び替えを昇順にしてクエリビルダを閉じればいいんですよね?

また、その後の商品マスタ登録も同じフォームAに対して行えばいいのでしょうか。

納品書登録、納品書登録明細サブはフォームAとは別にそれぞれフォームを作成するのでしょうか。

私が初心者のため理解が追い付かず申し訳ありません。

投稿日時 - 2019-08-16 16:06:35

ANo.7

今日は
>自動入力フォームに手動で入力したい
☆見通しがつきましたので、結果(納品書の登録画面)
 と仕掛けです。
 ・納品書登録と納品書登録明細サブの2つのフォーム
 ・お客様は倉敷店だけですね
  メニューフォーム上のお客様名のコンボボックスVBAで絞り込んで開いています
----------納品書テーブルの全レコード-----------------------
  Private Sub 納品書登録_DblClick(Cancel As Integer)
   DoCmd.OpenForm "納品書登録"
  End Sub
-----------コンポボックッスの値で絞り込み-------------
  Private Sub 納品書登録_Change()
   DoCmd.OpenForm "納品書登録", , , "T顧客ID=forms!メニュー!納品書登録"
  End Sub
-----------------------------------------------------------------------------
 ・フィールドの背景の色分け
  黄色:VBAの計算 表示後手入力出来る
  オレンジ:マスタテーブルのフィールドここでは修正不可
       ここで修正すると他のレコードも一斉に修正される
  無色:入力する。
☆テーブルに関することはここ迄です。
 舌足らず、漏れ等多々あると思います、不明な点はコメント下さい。
☆クエリの種類
 選択クエリ、クロス集計クエリ、テーブル作成クエリ、更新クエリ、
 追加クエリ、削除クエリですが
 テーブルのルックアップが選択クエリーであることにお気付きですね
 フォーム、レポートも同じように、レコードソースが選択クエリ
 なので自分は単独のクエリは作ていません
☆フォームのデザイン
 前準備として、よく使うツールをクイックアクセスツールバーに配置します。
 例えばホームリボンのフォントを右クリック
→クイックアクセスツールバーに追加
 この要領で次のツールを追加します
 ・テーブルデザイン、・フォームデザイン・レポートデザイン
 ・既存のフィールド追加・プロパティシート
 ・集合形式・表形式・スペースの調整の無・レイアウトの削除
 ・サイズの自動調整・高いコントロールに合わせる・低いコントロールに合わせる
 ・広いコントロールに合わせる・狭いコントロールに合わせる・左右の間隙を均等に
 ・上下の間隙を均等に・左揃え・右揃え・上揃え・下揃え・枠線の幅
 ・コントロール・コンボッボックッス・コードの表示・フォントの色
 ・線の色・背景色
 これだけ追加すると、1行だけですので画面からはみ出します。
 右端クリックから使えますが使用する都度表示が消えます。
 クイックアクセスツールバーをリボンの下に表示すると表示幅が
 ディスプレイの横幅迄広がりますがやはりはみ出します。
 我慢できず、ツールの表示順を入れ替えることがあります。
 次回 フォームのデザインとVBAです。

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

投稿日時 - 2019-08-05 16:10:48

補足

ご回答いただきありがとうございます。
せっかくお答えいただいたのに申し訳ございませんが、よく理解できずにいます。
下記部分は、どこかに書き込まないといけないのでしょうか。
また、回答5までで作ったものはそのまま使うのでしょうか。
クエリは使わないということでよろしいのでしょうか。

----------納品書テーブルの全レコード-----------------------
  Private Sub 納品書登録_DblClick(Cancel As Integer)
   DoCmd.OpenForm "納品書登録"
  End Sub
-----------コンポボックッスの値で絞り込み-------------
  Private Sub 納品書登録_Change()
   DoCmd.OpenForm "納品書登録", , , "T顧客ID=forms!メニュー!納品書登録"
  End Sub
-----------------------------------------------------------------------------

投稿日時 - 2019-08-07 16:01:38

ANo.6

>商品コードは取引先のほうで発注の際に書いてくださっているので、
 そのまま数字を入力するのが一番簡単な方法なのです。
 商品コードの数字を入力したら、品番が自動入力され、
 コードにない品番は手動で入力する方法を探していました。
 ドロップダウンリストは品番の性質上使いづらいかと思います。
☆なるほど
 納品書明細に品番コードのフィールドを追加して
 商品マスターをルックアップすればと思うのですが
 単純な事とは思いますが頭が混乱しています。
 再挑戦します。締め切りの時間切れの時は悪しからず
尚添付は納品書明細を商品マスタ挟んで商品名と規格のSフリガナ順のくえり

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

投稿日時 - 2019-08-04 07:48:03

ANo.5

こんにちわ
複数のフィールドを主キーすることは出来ても、不都合があり、考えたようには動作してくれません
テーブルのデザインを次のように変えて下さい。
・商品名
 ・ID
 ・S商品名:フィールドプロパティーで重複なし
 ・Sフリガナ:ルックアップのリスト順の為
・規格名
 ・ID
 ・S規格名:フィールドプロパティーで重複なし
 ・Sフリガナ:ルックアップのリスト順の為
・商品マスタ
 ・ID
 ・M品目:テキスト型 重複なし
 !追加項目です。
  VBAでS商品名 & "_" & S規格で計算
  するので入力不要、重複なしですのでダブって入力できない
 ・M商品名ID:長整数型、表題=商品名、商品名をルックアップ
 ・M規格ID:長整数型、表題=規格名、規格名をルックアップ
 ・M単位名
 ・M基準単価
 ・M商品コード:これは不要。ルックアップを使います。
・納品書明細
 ・ID
 ・納品書ID:長整数型
 ・商品マスタID:長整数型、
  高度のルックアップ(商品マスタを通して商品名と規格名をルックアップ)
 ・T納入品名:テキスト型
 !T商品名_規格を気分で替えました
  商品マスタID(ルックアップ)で確定後
  VBAで T納入品名=M品目 とします
  これがQの課題でしたね
  事後 T納入品名は手入力可です。
 ・T数量:数値型、規定値=0、小数点以下
 ・T単位:テキスト型
 ・T単価:数値型、規定値=0、小数点以下
 ・T金額:数値型、規定値=0、小数点以下
・納品書
 ・ID
 ・T納品書No.
 ・日付:日付/時刻型
 ・お客様名:テキスト型、インデックスで重複なし
  ここは顧客ID(長整数型)かも
各テーブルのIDが全て主キーです。

以上途中報告です
次回、商品マスタM商品名IDと規格IDのルックアップで
テーブルの説明を終わります。
主キーのID以外のフィールドの
 プロパティーの標題は必ず入力しておいてください
 フォームのデザインで有難いことが起こります。

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

投稿日時 - 2019-08-03 17:32:27

ANo.4

今晩は
>結合の種類ですが、「2」ではないでしょうか?
 「3」にすると回答2で示していただいた図と矢印の方向が
 反対になってしまいます。
☆どちらがわからないまま マスタテーブルがトランザクションテーブルの
 上かと判断しました
 このように複数のフィールドを持つテーブルは、
 実は未体験で曖昧なままの回答になってしまた。
>対象は商品マスタの商品名IDに商品名をルックアップです。
 示していただいた図では納品書明細テーブルになっています。
☆そうですね、すみません添付します
 (1)ここが空だとボックッス名に:を付けてM商品名ID
 (2)ルックアップタブをクリックでテキストボックッス を枠右から
  コンポッボックッスに
 (3)値集合タイプ
 (4)連結列 規定値は1ですね、商品名と規格のように複数も可能かも
 (5)列数IDと商品名の2つ
 (6)プルダウンリストの表示;見出し入りませんね
 (7)列幅:IDと商品名の表示幅ID=0:非表示、商品名の幅省略:ボックス幅
 (8)リスト行数:16行は変更可
 (9)リストの幅をテキスト幅を超えて表示したいとき
>リスト行とはドロップダウンリストに表示させる行数のことでしょうか。
☆エクセルの8行表示と違って行数は任意に設定でき、リスト順も指定できます
>商品コードを入力したら商品名が出るようにしたいのですが、

 教えていただいている方法はドロップダウンリストから選ぶという方法になりますでしょうか。
☆コード一覧表を見ながらの入力より、マウス操作の方が楽ですよ
 コードの管理も必要でしょう
 自分はもっぱらフリガナ順です。コードではありませんが使用頻度とフリガナで表示順決めています
 ルックアップの実体は、クエリですよね

 

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

投稿日時 - 2019-08-01 02:35:55

お礼

ご回答いただきありがとうございます。

最初に書いておけばよかったのですが、商品コードは取引先のほうで発注の際に書いてくださっているので、一覧表を見る必要がありません。そのまま数字を入力するのが一番簡単な方法なのです。
そのため、商品コードの数字を入力したら、品番が自動入力され、コードにない品番は手動で入力する方法を探していました。ドロップダウンリストは品番の性質上使いづらいかと思います。

私のつたない質問に丁寧にお答えくださり、本当にありがとうございました。

投稿日時 - 2019-08-02 12:05:41

ANo.3

今晩は
回答No.3に誤字がありました。誤りは表題 正しくは標題
この回答のキーワードの一つにこのような事があり、ゴメン
>「商品マスタ」から「納品書明細」に伸びる矢印はなんでしょうか。どのように操作すればできますか?
☆良いところにお気付きですねきですね
 通常IDが主キーなら完全整合性のリレーションシップになるのですが
 商品名のインデックスプロパティーを重複なしとしたいのですが、
 これをするには規格、サイズ、色柄、品質も商品名に含める必要がります。
 そのため参照テーブルを間に入れ、
 参照テーブル側でそれぞれの参照名に重複なしにします。
 さて、複数のフィールドの組合せを主キー にするには
 テーブルのデザインモードで
 1.フィールドが連続しているとき開始フィードクリック
  →終了フィールドを右クリック→主キーマークをクリック
 2.フィールドがバラバラのとき開始フィードクリック→CTL+次のフィールド…
  →CTL+終了フィールドを右クリック→主キーマークをクリック
 リレーションシップは参照整合性受け入れてくれないので
 商品マスタのIDはオートナンバー型なので重複なしです
 結合の種類で
  1.両方のテーブルの結合フィールドが同じ行だけ含める
  2.納品書明細の全レコードと商品マスタの同じ結合フィールドのレコードだけを含める
  3.商品マスタの全レコードと納品書明細の同じ結合フィールドのレコードだけを含める
   それぞれどのような不都合が生じるか不明ですが、3.にしています。
---------------------------------------------------------------------------
テーブルのデザインモードでルックアップ定義です
対象は商品マスタの商品名IDに商品名をルックアップです。
商品名IDは長整数型の数値ですが、表示は商品名の文字列です。
テキストボックスを配置すると、
ボックス名がボックスの見出しラベルの標題になります。
この標題枠に「商品名」と入力します。
次に標準タグからルックアップをクリックすると表示コントロルがテキストボックスだけに変わります
これの右端クリックからコンポボックスを選びます。
次に空白の値集合ソースの右端の…クリックで、お馴染みのクエリ画面です
同時表示されたテーブル一覧から商品名クリック選択後テーブルの表示を閉じ
ID、商品名、Sフリガナを配置、Sフリガナに昇順としクエリビルダを閉じます
ルックアップ画面に戻ったら 列数2(IDと商品名)、IDの表示幅0、
リスト行適度、ACCESSの枠を超えてデスクいっぱいに表示します。
因みに私は1000行を超えるマスタテーブルの検索に48行です。
----------------------------------------------------------------------------
この表示行数の多さとリレーションシップ、オートNo.型の為
煩わしいコード管理から解放されます。

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

投稿日時 - 2019-07-29 19:28:39

補足

ご回答いただきありがとうございます。
ご指示のとおりやってみました。そのなかでいくつか質問があります。
まず、結合の種類ですが、「2」ではないでしょうか? 「3」にすると回答2で示していただいた図と矢印の方向が反対になってしまいます。

次に
>対象は商品マスタの商品名IDに商品名をルックアップです。
とありますが、示していただいた図では納品書明細テーブルになっています。

>この標題枠に「商品名」と入力します。
以下の作業は、商品マスタテーブルに対して行っていいのでしょうか。

それから、
>IDの表示幅0
これは、列幅のことでしょうか。

あと、
リスト行というのはドロップダウンリストに表示させる行数のことでしょうか。
私は、商品コードを入力したら商品名が出るようにしたいのですが、
教えていただいている方法はドロップダウンリストから選ぶという方法になりますでしょうか。

基本的な質問ばかりで恐縮いたしますが、よろしくお願いいたします。

投稿日時 - 2019-07-31 15:02:19

ANo.2

お待ちしていました。
少し長いお付き合いになると思います。
テーブルは添付のようなリレーションシップが必要です。
フィールド名の頭ににテーブルの用途によりT,M,Sを付けました
T:トランザクションのT
M:マスタのM
S:なぜか参照のS
各テーブルはID(オートナンバー型)で始ります。
では個別にあたります。
・商品マスタ
 ・ID
 ・M商品名ID:長整数型、表題=商品名、商品名をルックアップ
 ・M規格ID:長整数型、表題=規格名、規格名をルックアップ
 ・M単位名
 ・M基準単価
 ・M商品コード:これは不要。ルックアップを使います。
 *このテーブルは他と違って複数フィールドが主キー印ですね
  商品を特定する手段です。
  サイズID、等級ID、柄IDも必要かもしれません
・商品名
 ・ID
 ・S商品名:フィールドプロパティーで重複なし
 ・Sフリガナ:ルックアップのリスト順の為
・規格名
 ・ID
 ・S規格名:フィールドプロパティーで重複なし
 ・Sフリガナ:ルックアップのリスト順の為
 納品書登録時にT商品名_規格=S商品名 & "_" & S規格とする
 この後手入力可能
・納品書明細
 ・ID
 ・納品書ID:長整数型
 ・商品マスタID:長整数型、高度のルックアップ(商品マスタを通して商品名と規格名をルックアップ)
 ・T商品名_規格:テキスト型
 ・T数量:数値型、規定値=0、小数点以下
 ・T単位:テキスト型
 ・T単価:数値型、規定値=0、小数点以下
 ・T金額:数値型、規定値=0、小数点以下
・納品書
 ・ID
 ・T納品書No.
 ・日付:日付/時刻型
 ・お客様名:テキスト型、インデックスで重複なし
  ここは顧客ID(長整数型)かも
今回はここ迄ですが
ルックアップ、フォームについてお伝えしたいことがあります。
進捗状況をコメント下さい。

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

投稿日時 - 2019-07-29 05:47:47

補足

ご回答いただきありがとうございます。
土日は会社が休みの為(家のPCにはアクセスが入ってません)お返事が遅くなりましたことお詫び申し上げます。
基本的なことがわかっていないため私が理解できないのだと思いますが、
回答No.1では、すでに作っている納品書フォームを手直しするだけで可能かと感じましたが、
回答No.2では、最初から作り直したほうがよいように感じまして、少し混乱しております。
とりあえず、ご指示のとおりのテーブルを最初から作ってみました。
そこで質問です。添付いただいた画像にある「商品マスタ」から「納品書明細」に伸びる矢印はなんでしょうか。どのように操作すればできますか?

また質問させていただいている身で恐縮ですが、外出も多い仕事のためすぐに進めることができないこともあるかと思いますがお許しいただけましたら幸いです。

投稿日時 - 2019-07-29 11:24:11

ANo.1

今晩は
VBAは大丈夫ですね
納品書のテーブルに手入力用のフィールドを追加します。
商品マスタの商品コードが確定した時点で
 商品マスタの商品名を追加した商品名に貼り付けます。
 登録画面には商品名が2つ並ぶことになりますが
 レポート(納品書)には追加した商品名を使います。
ややこしいですね、
商品マスタの商品コードは主キーですね、
商品マスタ商品名をM商品名、追加した商品名をT商品名とします。
---------------------------------------------------------
Private Sub Mコード_LostFocus()
T商品名 = M商品名
End Sub
--------------------------------------------------
尚、T商品名のタブストッププロパティーをいいえにします


 

大変申し訳ございませんが、この投稿に添付された画像や動画などは、「BIGLOBEなんでも相談室」ではご覧いただくことができません。 OKWAVEよりご覧ください。

マルチメディア機能とは?

投稿日時 - 2019-07-26 23:29:45

あなたにオススメの質問