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

解決済みの質問

ACCESSで在庫管理を実施したい「改善希望1」

在庫の入出庫管理をアドバイスいただき完成しました「ありがとうございます」。しかし、使って「利用者含め」いくうちに改善要望の声があがり、対応できればと思っています。

当件は、私にとって内容が濃いこともあり「分かる質問として纏められない懸念」、作成時のWEBアドレスを掲載させていただく事、お許しください。

https://okwave.jp/qa/q9659826.html

[改善したいこと]
その1,
改善項目:F_入出庫管理「フォーム」に入力途中「どの段階に於いても」で取りや
     めた時、入力済データがクリアーになる様にしたい。
現状内容:フォーム終了させ再度フォームを立ち上げても入力データが残る。

その2,
改善項目:Q_在庫計算「更新クエリ」の実行時に発生する2つのアラートを表示さ
     せない。又は、2つ目に表示されるアラート「1件のレコードが更新さ
     れます」のみ表示させたい。(F_入出庫管理「フォーム」の最後の入力
     フィールド「出庫数」の更新後処理「Q_在庫計算」に実行マクロを設
     定)
現状内容:2つのアラート「1つ目,(更新クエリを実行すると、テーブルのデー
     タが更新されます。2つ目,1件のレコードが更新されます。」表示に
     よる処理工数の減を望む声の存在。

[感想と思い]
実際にアドバイスを頂きながら完成しましたが「ありがとうございます」、使っていくうちに考えていなかった場面に遭遇しました。自分だけが使うならいいですが、そうでない時の声に対しては、真摯に向き合わないといけないと感じましたした「対処スキルも無いのに勝手な言い分・・・」。何事も経験の積み重ねと言いますが、まさに痛感いたしております。しかし、私にとってAccess新分野でもあり、現時点での気になる点の解消方法へのアドバイスを希望します。

[実施したこと(考えたこと)]
実施1,失敗
F_入出庫管理「フォーム」にコマンドボタンを配して、全てのフィールド「入出庫ID、訂正(チェックボックス)、商品コード、商品名、在庫数、日付、入庫数、出庫数、計算済(チェックボックス)、メモ(個別情報入力)」に対して「値の代入(Null)」マクロを登録しました。

実施2,失敗
F_入出庫管理「フォーム」にコマンドボタンを配して「コマンドの実行(元に戻す)」マクロの登録。

実施3,考えただけ(実行スキルなし)
書き込まれたテーブルのレコードを削除、入出庫ID行を削除し新たな行を追加して、入出庫ID(オートナンバー)を書き込むマクロの作成。

以上ですが、宜しくお願いいたします。

投稿日時 - 2019-10-12 07:56:08

QNo.9666206

困ってます

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

> 添付いただきましたビュアーを表示(2)する工程が分からなくて・

過去の質問を見返したら2007でしたね。2007だとIfとかないかもしれません。
イベントプロシージャにしてみます。
F_入出庫入力や計算済みなどは実際のフィールド名にしてください。

「クリア」のコマンドボタンの[イベント プロシージャ]に
(クリア__クリアは実際にできたプロシージャのほうに変更してください。)

Private Sub クリア__クリア_Click()
'↑ここと下の方のEnd Subが自動でできるので
'↓ここからEnd Subの上までを入れ込む「終了」も同じ
On Error GoTo クリア__クリア_Err
DoCmd.GoToRecord acForm, "F_入出庫入力", acLast
If (Forms!F_入出庫入力!計算済み = False) Then
DoCmd.RunCommand acCmdDeleteRecord
End If
クリア__クリア_Exit:
Exit Sub
クリア__クリア_Err:
MsgBox Error$
Resume クリア__クリア_Exit
End Sub



「終了」コマンドボタンの[イベント プロシージャ]に
(終了ボタンは実際にできたプロシージャのほうに変更してください。)

Private Sub 終了ボタン_Click()
On Error GoTo 終了ボタン_Err
DoCmd.GoToRecord acForm, "F_入出庫入力", acLast
If (Forms!F_入出庫入力!計算済み = False) Then
Beep
MsgBox "未確定のデータがあります。" & vbCrLf & vbCrLf & "クリアするか入出庫確定させてください。", vbOKOnly + vbCritical, "入出庫入力情報表示"
ElseIf (Forms!F_入出庫入力!計算済み = True) Then
DoCmd.Close acForm, "F_入出庫入力"
End If
終了ボタン_Exit:
Exit Sub
終了ボタン_Err:
MsgBox Error$
Resume 終了ボタン_Exit
End Sub

投稿日時 - 2019-10-23 15:54:16

お礼

長く引っ張って申し訳ございません。アドバイスの内容で設定してみましたところ、今のレベルで使えそうな感じです。100%満足な完成ではありませんが、希望の機能は付加できましたので、当分の間は使用することで検証してみたいと思います。ありがとうございました。

投稿日時 - 2019-10-26 08:47:49

ANo.10

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

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

回答(11)

ANo.11

その1,改善項目:F_入出庫管理「フォーム」に入力途中「どの段階に
 於いても」で取りやめた時、入力済データがクリアーになる様にしたい。
 現状内容:フォーム終了させ再度フォームを立ち上げても入力データが残る。
左端のレコードセレクタでDELキーの2,

改善項目:Q_在庫計算「更新クエリ」の実行時に発生する2つのアラートを
  表示させない。又は、2つ目に表示されるアラート
  「1件のレコードが更新されます」のみ表示させたい。
   (F_入出庫管理「フォーム」の最後の入力フィールド「出庫数」の
  更新後処理「Q_在庫計算」に実行マクロを設定)
  現状内容:2つのアラート「1つ目、(更新クエリを実行すると、
  テーブルのデータが更新されます。2つ目,
  1件のレコードが更新されます。」
  表示による処理工数の減を望む声の存在。
VBAなら命令文の前行に
  DoCmd.SetWarnings True or  DoCmd.SetWarnings false
  DoCmd.Runsql SQLの基本機能は実行可能
   Delete:レコード削除
   Insert:レコード追加
   Update:レコード更新
   Select:フィールド更新

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

投稿日時 - 2019-10-24 13:03:44

お礼

ありがとうございます。私の受け入れキャパ「知識不足が原因」が小さすぎて先へ進めない状況です。いいとこ取りでやっていますので「知識集約分野なのに」、行き詰まってしまいました。

正直、アドバイス頂いた内容を整理するには時間が必要な状態です。新しい分野でもありチャレンジしたい旨、コメントさせていただいておりますが、消化は牛歩の如くとなっております。そうした中、私側の一方的な問題で引き伸ばせないと感じております。勝手ながら、一旦、閉めさせていただきたいと考えております。尚、ベストアンサーを決めるのがルール「アドバイスに報いてこそ完結」ですので、最初からお付き合いいただきました、kkkkkm「最後のアドバイスを形にできた経緯もあり。」さんをベストアンサーとさせて下さい。しかし、内容的にはchayamatiさんが優れていたかもしれませんが「形にできていないので・・・すいません」、私が反射的に追従できるレベルになかったこと残念に思っています。申し訳ございません。

アドバイス全てにコメントできる状態にありませんでしたので「何を書いても嘘になる・・」、最後のアドバイスにてお詫び申し上げます。ありがとうございました。

投稿日時 - 2019-10-26 08:51:43

ANo.9

> +If [Forms]![F_入出庫管理]![計算済み]=False  どこに書き込むのでしょうか・・・。

新しいアクションの追加でIfをクリックすると右にボックスができるのでそこに
[Forms]![F_入出庫管理]![計算済み]=False
を書きます。

>  メニューコマンドの実行  「アクションのメニューで(コマンドの実行)でしょうか」

Ifのすぐ下の新しいアクションの追加で「レコードの削除」を選びます。
セットされると
メニューコマンドの実行
  コマンド レコードの削除
になります。
(前回の説明ではセットした状態を見てたのでその状態を書いてしまいました)


> オートナンバーが不揃いになると

オートナンバーの連続性を気にすると頭が痛くなりますね。
リセットする方法はあるみたいです。私はやったことがありません。

Access でオートナンバー型フィールドの値をリセットする方法
https://support.microsoft.com/ja-jp/help/812718/how-to-reset-an-autonumber-field-value-in-access

投稿日時 - 2019-10-22 09:56:12

補足

ありがとうございます。レベルが低くて申し訳ございません。教えていただけたら幸いです。

1,+If [Forms]![F_入出庫管理]![計算済み]=Falseは、レコードの移動(1)の次の2行目に作るのでしょうか。
2,添付いただきましたビュアーを表示(2)する工程が分からなくて・・・できません。「やったことがなく全体像(構成)が掴めないです・・・・。」


マクロ1(適当な名前で)
(1)+レコードの移動  → 問題なく設定できます
 オブジェクトの種類 フォーム
 オブジェクト名 F_入出庫管理
 レコード 最後のレコード
(2)+If [Forms]![F_入出庫管理]![計算済み]=False  どこに書き込むのでしょうか・・・。
 メニューコマンドの実行  「アクションのメニューで(コマンドの実行)でしょうか」
  コマンド レコードの削除 「アクションのメニューにない様ですが」

以上ですが、宜しくお願いします。

投稿日時 - 2019-10-23 13:22:04

ANo.8

M_商品マスタ仕上げとリレーションシップ
1.M_商品マスタのテーブル名を「元M_商品マスタ」と改名
 ナビゲーション上の「M_商品マスタ」を右クリック
 →名前の変更→「元M_商品マスタ」と入力
2.空のM_商品マスタを作成
2-1.空のM_商品マスタ
 →「元M_商品マスタ」を右クリック→貼付け→「M_商品マスタと入力」と入力
 →テーブル構造のみ→OK
2-2.主キーの変更
 →M_商品マスタをデザインビューで開く
 →商品コードの左端のレコードセレクタを右クリック→主キー
 →デザインビューを閉じる
3.M_商品マスタにデータをコピー
 実行可能なフォームに「M_商品再生」というラベルボックス配置して
 このラベルのクリックイベントで
 後述のVBAを起動します。ここではメニューに貼り付けます
3-1.メニューフォームに「M_商品再生」のラベルを配置
 →メニューを開く→デザインビュー→ラベル→フォーム画面
 →「M_商品再生」と入力
 →プロパティ―シート→その他タグ→名前に「M_商品再生」と入力
3-2.「M_商品再生」ラベルのクイックイベントにVBAを記述
 →イベントタグ→クリック時の右端の…→次のVBAをコピペ
------------------------------------------------------------------------------------
Private Sub M_商品再生_Click()
DoCmd.SetWarnings False
DoCmd.RunSQL ("insert into M_商品再生(商品名,商品コード,適正在庫,原価) select 商品名,商品コード,適正在庫,原価 from 元M_商品再生;")
DoCmd.SetWarnings True
End Sub
------------------------------------------------------------------------------------
4.リレーションシップ
 データベースツール→リレーションシップ→画面を右クリック→テーブルの表示

投稿日時 - 2019-10-14 10:59:14

ANo.7

回答No.6に重大なエラーがありました。
 エラー箇所は1-1.と1-2.の部分です。
 このエラー部分を訂正して全面的に記述します。
 今のT_入出庫の主キーはID(オートナンバー型)ですね
 要件のみ
------------------------------------------------------------------
>今後は、ACCESSの主機能であるリレーショナルを扱える様に
 努力したいと考えています。
回答
・極端に言うとExccelはWordと同じように手書きの清書用ですね
 Accessに1つのテーブルで出来るのはExccelの世界以上のことは出来ません
 早速リレーショナルを活用しましょう
1-1.T_入出庫をM_商品とT_入出庫に分割
 ・ナビゲーションウインド上でT_入出庫をコピペで
  テーブル名をM_商品とします
 ・M_商品の商品ID,入庫数、出庫数をレコードセレクタでDeleteキーで削除
   適正在庫、原価を新規に追加
 ・T_入出庫の商品名を削除
  商品コードでM_商品の商品コードをルックアップ設定します
  この時点では出来ない可能性が大です。M_商品完成後にします
 ・入出庫は日々累積されます。日付の項目も追加します
1-2.リレーションの設定
 データベースツール→リレーションシップと進むと
 テーブル一覧表示になります
 →T_入出庫とM_商品をドラッグで引き出し
 →T_入出庫の商品コードからM_商品の商品コードへドラッグし
  参照整合性にチェックを入れる
1-3.F_入出庫入力フォームの作成
 フォームウィザードでも作成できますが、今回はツールを使って作成します。
1.3.1フォームの新規作成
 作成リボン→フォームデザイン→プロパティーシート→書式タブ
 →既存のビューの右端→帳票フォーム→データ
 →レコードソースの右端の…→M_商品マスタダブルクリック
 →T_入出庫ダブルクリック→各テーブルの*(ワイルドカードと呼び全て)を
  フィールへドラッグ→クエリビルダを閉じる
 →既存のフィールド追加→必要な項目をドラッグ
  ※日付、商品コード、商品ID,入庫数、出庫数、計算済、訂正
   商品IDは数値型ですがM_商品マスタをルックアップしているので
   商品名が表示される
 →画面のボックッスの全てをアクティブにして→配置リボン→表形式
  (ここで項目名のラベルはフォームヘッダにテキストボックスは詳細へ
   1列に並びます
  お互いに関係を持ちます(左端一つのボックを左右に移動すると
  他のボックッスも同じよう移動、どれかボックスの幅を変更すると
  対のボックス幅も同じになり、他のボックスは左右に移動
  一旦他の位置をクリックしてアクティブを解除し、フィールドの一つを
  上下に移動すると他のフィールドも列として移動)
 →この後スペースの調整(項目間)、サイズの自動調整、
  高いコントロールに合わせる、低いコントロールに合わせる等のツールを
  駆使して形を整えます
今回はここ迄ですがまだ課題は山積しています
M_商品マスタとT_入出庫に分割したことでM_商品マスタの商品コードを重複なしに設定できることです。マスタの重複を登録回避できる
2.入力作業の効率化
3.T_入出庫を集計して在庫計算の仕組み
4.M_商品マスタの商品コードを重複なしにする
 分割したM_商品マスタには重複した商品コードが多く存在しています
 T_入出庫とリレーションを保ちながら一つに纏めるには工夫が必要です
これにはVBAが必要になります。

投稿日時 - 2019-10-14 07:00:46

ANo.6

>今後は、ACCESSの主機能であるリレーショナルを扱える様に
 努力したいと考えています。
回答
・極端に言うとExccelはWordと同じように手書きの清書用ですね
 Accessに1つのテーブルで出来るのはExccelの世界以上のことは出来ません
 早速リレーショナルを活用しましょう
1-1.T_入出庫をM_商品とT_入出庫に分割
 ・ナビゲーションウインド上でT_入出庫をコピペで
  テーブル名をM_商品とします
 ・M_商品の商品ID,入庫数、出庫数をレコードセレクタでDeleteキーで削除
   適正在庫、原価を新規に追加
 ・T_入出庫の商品コード、商品名を削除、主キーマークのIDを
  商品ID、データ型を数値型に変更
  この商品IDでM_商品のIDをルックアップ設定します
 ・入出庫は日々累積されます。日付の項目も追加します
1-2.リレーションの設定
 データベースツール→リレーションシップと進むと
 テーブル一覧表示になります
 →T_入出庫とM_商品をドラッグで引き出い
 →T_入出庫の商品IDからM_商品のIDへドラッグし参照整合性にチェックを
  入れる
1-3.F_入出庫入力フォームの作成
 フォームウィザードでも作成できますが、今回はツールを使って作成します。
1.3.1フォームの新規作成
 作成リボン→フォームデザイン→プロパティーシート→書式タブ
 →既存のビューの右端→帳票フォーム→データ
 →レコードソースの右端の…→M_商品マスタダブルクリック
 →T_入出庫ダブルクリック→各テーブルの*(ワイルドカードと呼び全て)を
  フィールへドラッグ→クエリビルダを閉じる
 →既存のフィールド追加→必要な項目をドラッグ
  ※日付、商品コード、商品ID,入庫数、出庫数、計算済、訂正
   商品IDは数値型ですがM_商品マスタをルックアップしているので
   商品名が表示される
 →画面のボックッスの全てをアクティブにして→配置リボン→表形式
  (ここで項目名のラベルはフォームヘッダにテキストボックスは詳細へ
   1列に並びます
  お互いに関係を持ちます(左端一つのボックを左右に移動すると
  他のボックッスも同じよう移動、どれかボックスの幅を変更すると
  対のボックス幅も同じになり、他のボックスは左右に移動
  一旦他の位置をクリックしてアクティブを解除し、フィールドの一つを
  上下に移動すると他のフィールドも列として移動)
 →この後スペースの調整(項目間)、サイズの自動調整、
  高いコントロールに合わせる、低いコントロールに合わせる等のツールを
  駆使して形を整えます
今回はここ迄ですがまだ課題は山積しています
M_商品マスタとT_入出庫に分割したことでM_商品マスタの商品コードを重複なしに設定できることです。マスタの重複を登録回避できる
2.入力作業の効率化
3.T_入出庫を集計して在庫計算の仕組み
4.M_商品マスタの商品コードを重複なしにする
 分割したM_商品マスタには重複した商品コードが多く存在しています
 T_入出庫とリレーションを保ちながら一つに纏めるには工夫が必要です
これにはVBAが必要になります。

投稿日時 - 2019-10-14 00:11:57

ANo.5

> 名前:訂正「チェックボックス」= 「コントロールソース」訂正(書込「T_入出庫」)

多分これは元にはないものだと思いますので、それでいいのかどうかわかりません。

> 名前:商品コード「テキストボックス」= 「コントロールソース」商品コード(コンボ連結入力)(書込「T_入出庫」)
> 名前:商品名「テキストボックス」= 「コントロールソース」商品名(コンボ連結入力)(書込先「T_入出庫」)
> 名前:在庫数「テキストボックス」= 「コントロールソース」在庫数(コンボ連結入力)(書込先「T_入出庫」)

この3フィールドはT_入出庫に存在しないはずですが…。
マクロの中で以下の語句を変更してください。質問ではF_入出庫管理と記載してましたがF_入出庫入力が正解なんですね。

F_入出庫管理→F_入出庫入力
計算済み→計算済

添付画像はQ_入出庫入力です。

投稿日時 - 2019-10-13 08:40:35

補足

前後を無視「このセクションでのコメントではありませんので」した状態ですが、設定の方法がわからずお尋ねします。「該当セクションでは補足コメント欄を使ってしまった為」

マクロ1(適当な名前で)
+レコードの移動  → 問題なく設定できます
 オブジェクトの種類 フォーム
 オブジェクト名 F_入出庫管理
 レコード 最後のレコード
+If [Forms]![F_入出庫管理]![計算済み]=False  どこに書き込むのでしょうか・・・。
 メニューコマンドの実行  「アクションのメニューで(コマンドの実行)でしょうか」
  コマンド レコードの削除 「アクションのメニューにない様ですが」

レコードの削除方法でのアドバイスでしたので、オートナンバーが不揃いになると考え、手を付けていませんでした。申し訳ございません。尚、リアクショが大幅に遅れていますのは、自身で整理ができていない状況で、先に進めないのがその理由です。なにか一つ形にしないと、一旦であっても終了できないので、オートナンバー不揃いでもと思い、遅ればせながらお尋ねしました。宜しくお願いします。

投稿日時 - 2019-10-22 08:15:30

ANo.4

>在庫の入出庫管理をアドバイスいただき完成しました
 https://okwave.jp/qa/q9665967.html
 ACCESS 条件付き書式の設定について
ですね
これは商品マスタと棚卸テーブルより作成したクエリですね
・原価はここでは必要ないです
・在庫は商品の入出庫に伴い日々変化します。
 以上を踏まえ、(ID,2つに分けます
 M商品マスタ:ID,商品名、商品コード、適正在庫、原価
 T棚卸   :ID,商品ID、棚卸日付、在庫数
・背景色、全レコードが対象で、特定のレコードには無理です
 クエリ内の横の機能で空または文字列を追加したのが添付図です
・T入出庫テーブル追加して、次のステップです

投稿日時 - 2019-10-13 00:38:01

ANo.3

その1,
>改善項目:F_入出庫管理「フォーム」に入力途中「どの段階に於いても」
 で取りやめた時、入力済データがクリアーになる様にしたい。
 現状内容:フォーム終了させ再度フォームを立ち上げても入力データが残る。
1.2つの方法がります
1-1.入力しているレコード(行)を削除する
 レコードの左端の□レコードセレクタと呼びます。これをクリックしてdelキーを
 押下します
1-2.VBAでレコードのフィールドを空または0にする
 ラベル名「初期化」ラベルフォーム上に配置してクリックイベントを作成
--------------------------------------------------------------------------------
Private Sub 初期化_Click()
数値1 = 0: 数値2 = 0: 数値3 = 0: 数値4 = 0: 数値5 = 0
文字列1 = "": 文字列2 = "": 文字列3 = "": 文字列4 = "": 文字列5 = ""
End Sub
※:を挟んで複数の命令文を記述できます
 この初期化はアクティブの行のみに作用します
------------------------------------------------------------------------
その2,
>改善項目:Q_在庫計算「更新クエリ」の実行時に発生する
 2つのアラートを表示させない。又は、2つ目に表示されるアラート
 「1件のレコードが更新されます」のみ表示させたい。
 (F_入出庫管理「フォーム」の最後の入力
  フィールド「出庫数」の更新後処理「Q_在庫計算」に実行マクロを設
     定)
 現状内容:2つのアラート「1つ目,(更新クエリを実行すると、
 テーブルのデータが更新されます。2つ目,
 1件のレコードが更新されます。」表示による処理工数の減を望む声の存在。
2-1「Q_在庫計算」の文の前に次の命令文を追加します。
-------------------------------------------------------------------------
DoCmd.SetWarnings False
------------------------------------------------------------------------
>実施1,失敗
 F_入出庫管理「フォーム」にコマンドボタンを配して、全てのフィールド
「入出庫ID、訂正(チェックボックス)、商品コード、商品名、在庫数
 、日付、入庫数 、出庫数、計算済(チェックボックス)、
 メモ(個別情報入力)」に対して「値の代入(Null)」
 マクロを登録しました。
>実施2,失敗
 F_入出庫管理「フォーム」にコマンドボタンを配して「コマンドの実行
 (元に戻す)」マクロの登録。
2-2.
 2-1の回答をコピペでなく半角モードで 「docmd.」と入力すると
  次に使用できるリストが表示されます。
  全てのボックス(ラベル、テキスト、コマンド、コンボ)で
  イベント起動できます。
  このおかげでマクロを一切使いません
  DoCmd.Close
  DoCmd.GoToControl
  DoCmdDoCmd.OpenForm
  DoCmd.OpenReport
  DoCmd.Quit
  DoCmd.RunSQL
   基本のSQL文(Delete,Insert,Update,Serect)が1行で記述できます
  DoCmd.TransferSpreadsheet
   Excelへエキスポート
  詳細は参考URLをご覧ください
   https://www.feedsoft.net/access/guide-vba/guide10.html

>実施3,考えただけ(実行スキルなし)
 書き込まれたテーブルのレコードを削除、入出庫ID行を削除し新たな行を追加して、
 入出庫ID(オートナンバー)を書き込むマクロの作成。
3.1 オートナンバー型はAccessで管理されています、テーブル、フォームでは変更不可
  従ってクエリ、フォーム、レポート配置しても全く意味を成しません
   また一つのテーブルには複数のオートナンバー型のフィールドはダメです
3.2 テーブルでオートナンバー型のフィールドをIDを主キーとして、
 このIDと関連付けのフィールドを長整数型のフィールド名を主テーブル名ID
お考えのテーブル構成は
 M商品マスタ(ID,商品コード、商品名、在庫数、適正在庫、原価)
 T入出庫(ID,日付、商品ID,入庫数、出庫数)
 ※この商品IDにはテーブルデザインでルックアップでコンボボックッスにして下さい

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

投稿日時 - 2019-10-12 16:07:03

補足

アドバイスをありがとうございます。早速トライしてみましたがどうも上手く行きませんでした。不具合の内容は上手く説明できません。原因がデータベースの構成を回答者に正確に、お伝え出来ていないことに起因すると分かりましたので、恐縮ながら原点に戻るところから説明させていただきます。申し訳ございません。


入力用のフォーム「F_入出庫入力」のレコードソースは、クエリ「Q_入出庫入力(添付ファイルにて)」で、各フィールドの書き込み先テーブルが「T_入出庫」になっています。

[フィールドの内容と機能(タブオーダー順)]
名前:入出庫ID「コンボボックス」= 「コントロールソース」商品ID(書込「T_入出庫」)
名前:訂正「チェックボックス」= 「コントロールソース」訂正(書込「T_入出庫」)
名前:商品コード「テキストボックス」= 「コントロールソース」商品コード(コンボ連結入力)(書込「T_入出庫」)
名前:商品名「テキストボックス」= 「コントロールソース」商品名(コンボ連結入力)(書込先「T_入出庫」)
名前:在庫数「テキストボックス」= 「コントロールソース」在庫数(コンボ連結入力)(書込先「T_入出庫」)

名前:日付「テキストボックス」= 「コントロールソース」日付(書込「T_入出庫」)
名前:入庫数「テキストボックス」= 「コントロールソース」入庫数(書込「T_入出庫」)
名前:出庫数「テキストボックス」= 「コントロールソース」出庫数(書込「T_入出庫」)
名前:計算済「チェックボックス」= 「コントロールソース」計算済(書込「T_入出庫」)

[お詫び]
お恥ずかしい話ですが、クエリ「テーブル連結=クエリ(レコードソース利用)」を使ったリレーショナルデータベースは初めてであります。数多くのデータベースを作りましたが、全てがデータ「生活関連や知識関連等」の蓄積と検索が主になっております。そうした経緯もありまして、結果として回答者様を振り回す結果になったこと、お許しいただければと思います。今後は、ACCESSの主機能であるリレーショナルを扱える様に努力したいと考えています。すいません。

投稿日時 - 2019-10-13 05:23:34

ANo.2

> コマンドボタンで、途中入力データをクリアーにするだけの機能

「クリア」のコマンドボタンのクリックマクロに
マクロ1(適当な名前で)
+レコードの移動
 オブジェクトの種類 フォーム
 オブジェクト名 F_入出庫管理
 レコード 最後のレコード
+If [Forms]![F_入出庫管理]![計算済み]=False
 メニューコマンドの実行
  コマンド レコードの削除


> 更新クエリ「Q_在庫計算」設定のコマンドボタン「確定」の押し忘れ防止策はありませんでしょうか。

「終了」コマンドボタンのクリックのマクロに
マクロ2(適当な名前で)
+レコードの移動
 オブジェクトの種類 フォーム
 オブジェクト名 F_入出庫管理
 レコード 最後のレコード
+If [Forms]![F_入出庫管理]![計算済み]=False
 メッセージボックス 未確定のデータがあります。
 警告音とメッセージ種類やタイトルは適当に
+Else If [Forms]![F_入出庫管理]![計算済み]=True
 ウィンドウを閉じる
 オブジェクトの種類 フォーム
 オブジェクト名 F_入出庫管理

投稿日時 - 2019-10-12 15:53:47

補足

アドバイスをありがとうございます。早速トライしてみましたがどうも上手く行きませんでした。不具合の内容は上手く説明できません。原因がデータベースの構成を回答者に正確に、お伝え出来ていないことに起因すると分かりましたので、恐縮ながら原点に戻るところから説明させていただきます。申し訳ございません。


入力用のフォーム「F_入出庫入力」のレコードソースは、クエリ「Q_入出庫入力(添付ファイルにて)」で、各フィールドの書き込み先テーブルが「T_入出庫」になっています。

[フィールドの内容と機能(タブオーダー順)]
名前:入出庫ID「コンボボックス」= 「コントロールソース」商品ID(書込「T_入出庫」)
名前:訂正「チェックボックス」= 「コントロールソース」訂正(書込「T_入出庫」)
名前:商品コード「テキストボックス」= 「コントロールソース」商品コード(コンボ連結入力)(書込「T_入出庫」)
名前:商品名「テキストボックス」= 「コントロールソース」商品名(コンボ連結入力)(書込先「T_入出庫」)
名前:在庫数「テキストボックス」= 「コントロールソース」在庫数(コンボ連結入力)(書込先「T_入出庫」)

名前:日付「テキストボックス」= 「コントロールソース」日付(書込「T_入出庫」)
名前:入庫数「テキストボックス」= 「コントロールソース」入庫数(書込「T_入出庫」)
名前:出庫数「テキストボックス」= 「コントロールソース」出庫数(書込「T_入出庫」)
名前:計算済「チェックボックス」= 「コントロールソース」計算済(書込「T_入出庫」)

[お詫び]
お恥ずかしい話ですが、クエリ「テーブル連結=クエリ(レコードソース利用)」を使ったリレーショナルデータベースは初めてであります。数多くのデータベースを作りましたが、全てがデータ「生活関連や知識関連等」の蓄積と検索が主になっております。そうした経緯もありまして、結果として回答者様を振り回す結果になったこと、お許しいただければと思います。今後は、ACCESSの主機能であるリレーショナルを扱える様に努力したいと考えています。すいません。

投稿日時 - 2019-10-13 05:24:26

ANo.1

> Q_在庫計算「更新クエリ」の実行時に発生する2つのアラートを表示させない

https://www.relief.jp/docs/003741.html
ここで説明があるところで他のアラートも設定できます。

> _入出庫管理「フォーム」に入力途中「どの段階に於いても」で取りやめた時、入力済データがクリアーになる様にしたい。

終了(閉じる)をXでなくボタンで終了(閉じる)するようにする。
フォームのプロパティの書式で「閉じるボタン」を「いいえ」にする。
終了(閉じる)ボタンを作成して
イベントのクリック時のイベントプロシージャに以下のコードを
Private Sub 終了ボタン_Click()
If Me.Dirty Then
Me.Undo
End If
DoCmd.Close acForm, Me.Name
End Sub

こちらでもいいような気もします。
Private Sub 終了ボタン_Click()
Me.Undo
DoCmd.Close acForm, Me.Name
End Sub

投稿日時 - 2019-10-12 11:06:42

補足

早速のアドバイスを本当にありがとうございます。以下の通りご途中報告させていただきます。

[改善したいこと(アドバイスを求めたテーマ)]
その1,改善項目での結果ご報告(「終了」コマンドボタンにプロシージャを記述後の動向)

最後の入力フィールド「出庫数(更新後処理にコマンドの実行:レコードの保存、クエリの実行:Q_在庫計算のマクロを設定)」まで入力すると、コマンドボタン実行後「F_入出庫管理を閉じ」の再実行「F_入出庫管理を開く」で入力データは残ってしまいました。但し、ラス前入力フィールド「入庫数」の入力までであればデータは残らずクリーにできました。


[(そこでご提案)改善したこと → 変更のご提案]
最後の入力フィールド「出庫数(更新後処理にコマンドの実行:レコードの保存、クエリの実行:Q_在庫計算のマクロを設定)」のプロシージャを無しにしました。「どのフィールドでストップしても対処可のため」

[変更に対する改善策]
最後のフィールド「出庫数」の直下にコマンドボタン「確定」を配して「(クリック時にマクロを設定:レコードの保存、クエリの実行:Q_在庫計算)」マクロを設定しました。F_入出庫管理フォームのフィールド入力終了時に手動でボタンを押す内容です。押し忘れの無い様に最後の入力フォールドの直下に配置。

[対応方法に対する希望]
希望1,

F_入出庫管理フォームのフィールドへのデータ入力を途中で止めた時の処理ですが、F_入出庫管理フォームを一旦終了させてから、再度F_入出庫管理フォームを起動して確認等する方法になります。それを、計算機のクリアー的な考え方でコマンドボタンで、途中入力データをクリアーにするだけの機能を持たせ、別途終了ボタンをF_入出庫管理フォームに配して、作業が終了した時点でF_入出庫管理フォームを終了させる。その様な運用は可能でしょうか。

希望2,これはウォント項目ですが

更新クエリ「Q_在庫計算」設定のコマンドボタン「確定」の押し忘れ防止策はありませんでしょうか。


以上ですが、色々と注文うるさく申し訳ございません。アドバイスをお願いできませんでしょうか。

投稿日時 - 2019-10-12 14:18:45

あなたにオススメの質問