ACCESSで在庫管理の改善希望:入力データのクリアー化とアラート表示の改善

このQ&Aのポイント
  • 在庫管理の改善希望:F_入出庫管理「フォーム」に入力途中で中断した際に、入力済データがクリアーになるようにしたい。
  • 在庫管理の改善希望:Q_在庫計算「更新クエリ」の実行時に表示される2つのアラートを減らしたい。
  • アドバイスを頂きながら在庫管理を実施しましたが、使っていくうちに改善要望が出てきました。これからも新分野での解消方法へのアドバイスを希望します。
回答を見る
  • ベストアンサー

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(オートナンバー)を書き込むマクロの作成。 以上ですが、宜しくお願いいたします。

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.10

> 添付いただきましたビュアーを表示(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

eokwave
質問者

お礼

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

その他の回答 (10)

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.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
eokwave
質問者

お礼

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

  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.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

eokwave
質問者

補足

ありがとうございます。レベルが低くて申し訳ございません。教えていただけたら幸いです。 1,+If [Forms]![F_入出庫管理]![計算済み]=Falseは、レコードの移動(1)の次の2行目に作るのでしょうか。 2,添付いただきましたビュアーを表示(2)する工程が分からなくて・・・できません。「やったことがなく全体像(構成)が掴めないです・・・・。」 マクロ1(適当な名前で) (1)+レコードの移動  → 問題なく設定できます  オブジェクトの種類 フォーム  オブジェクト名 F_入出庫管理  レコード 最後のレコード (2)+If [Forms]![F_入出庫管理]![計算済み]=False  どこに書き込むのでしょうか・・・。  メニューコマンドの実行  「アクションのメニューで(コマンドの実行)でしょうか」   コマンド レコードの削除 「アクションのメニューにない様ですが」 以上ですが、宜しくお願いします。

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.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.リレーションシップ  データベースツール→リレーションシップ→画面を右クリック→テーブルの表示

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.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が必要になります。

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.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が必要になります。

  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.5

> 名前:訂正「チェックボックス」= 「コントロールソース」訂正(書込「T_入出庫」) 多分これは元にはないものだと思いますので、それでいいのかどうかわかりません。 > 名前:商品コード「テキストボックス」= 「コントロールソース」商品コード(コンボ連結入力)(書込「T_入出庫」) > 名前:商品名「テキストボックス」= 「コントロールソース」商品名(コンボ連結入力)(書込先「T_入出庫」) > 名前:在庫数「テキストボックス」= 「コントロールソース」在庫数(コンボ連結入力)(書込先「T_入出庫」) この3フィールドはT_入出庫に存在しないはずですが…。 マクロの中で以下の語句を変更してください。質問ではF_入出庫管理と記載してましたがF_入出庫入力が正解なんですね。 F_入出庫管理→F_入出庫入力 計算済み→計算済 添付画像はQ_入出庫入力です。

eokwave
質問者

補足

前後を無視「このセクションでのコメントではありませんので」した状態ですが、設定の方法がわからずお尋ねします。「該当セクションでは補足コメント欄を使ってしまった為」 マクロ1(適当な名前で) +レコードの移動  → 問題なく設定できます  オブジェクトの種類 フォーム  オブジェクト名 F_入出庫管理  レコード 最後のレコード +If [Forms]![F_入出庫管理]![計算済み]=False  どこに書き込むのでしょうか・・・。  メニューコマンドの実行  「アクションのメニューで(コマンドの実行)でしょうか」   コマンド レコードの削除 「アクションのメニューにない様ですが」 レコードの削除方法でのアドバイスでしたので、オートナンバーが不揃いになると考え、手を付けていませんでした。申し訳ございません。尚、リアクショが大幅に遅れていますのは、自身で整理ができていない状況で、先に進めないのがその理由です。なにか一つ形にしないと、一旦であっても終了できないので、オートナンバー不揃いでもと思い、遅ればせながらお尋ねしました。宜しくお願いします。

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.4

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

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.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
eokwave
質問者

補足

アドバイスをありがとうございます。早速トライしてみましたがどうも上手く行きませんでした。不具合の内容は上手く説明できません。原因がデータベースの構成を回答者に正確に、お伝え出来ていないことに起因すると分かりましたので、恐縮ながら原点に戻るところから説明させていただきます。申し訳ございません。 入力用のフォーム「F_入出庫入力」のレコードソースは、クエリ「Q_入出庫入力(添付ファイルにて)」で、各フィールドの書き込み先テーブルが「T_入出庫」になっています。 [フィールドの内容と機能(タブオーダー順)] 名前:入出庫ID「コンボボックス」= 「コントロールソース」商品ID(書込「T_入出庫」) 名前:訂正「チェックボックス」= 「コントロールソース」訂正(書込「T_入出庫」) 名前:商品コード「テキストボックス」= 「コントロールソース」商品コード(コンボ連結入力)(書込「T_入出庫」) 名前:商品名「テキストボックス」= 「コントロールソース」商品名(コンボ連結入力)(書込先「T_入出庫」) 名前:在庫数「テキストボックス」= 「コントロールソース」在庫数(コンボ連結入力)(書込先「T_入出庫」) 名前:日付「テキストボックス」= 「コントロールソース」日付(書込「T_入出庫」) 名前:入庫数「テキストボックス」= 「コントロールソース」入庫数(書込「T_入出庫」) 名前:出庫数「テキストボックス」= 「コントロールソース」出庫数(書込「T_入出庫」) 名前:計算済「チェックボックス」= 「コントロールソース」計算済(書込「T_入出庫」) [お詫び] お恥ずかしい話ですが、クエリ「テーブル連結=クエリ(レコードソース利用)」を使ったリレーショナルデータベースは初めてであります。数多くのデータベースを作りましたが、全てがデータ「生活関連や知識関連等」の蓄積と検索が主になっております。そうした経緯もありまして、結果として回答者様を振り回す結果になったこと、お許しいただければと思います。今後は、ACCESSの主機能であるリレーショナルを扱える様に努力したいと考えています。すいません。

  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.2

> コマンドボタンで、途中入力データをクリアーにするだけの機能 「クリア」のコマンドボタンのクリックマクロに マクロ1(適当な名前で) +レコードの移動  オブジェクトの種類 フォーム  オブジェクト名 F_入出庫管理  レコード 最後のレコード +If [Forms]![F_入出庫管理]![計算済み]=False  メニューコマンドの実行   コマンド レコードの削除 > 更新クエリ「Q_在庫計算」設定のコマンドボタン「確定」の押し忘れ防止策はありませんでしょうか。 「終了」コマンドボタンのクリックのマクロに マクロ2(適当な名前で) +レコードの移動  オブジェクトの種類 フォーム  オブジェクト名 F_入出庫管理  レコード 最後のレコード +If [Forms]![F_入出庫管理]![計算済み]=False  メッセージボックス 未確定のデータがあります。  警告音とメッセージ種類やタイトルは適当に +Else If [Forms]![F_入出庫管理]![計算済み]=True  ウィンドウを閉じる  オブジェクトの種類 フォーム  オブジェクト名 F_入出庫管理

eokwave
質問者

補足

アドバイスをありがとうございます。早速トライしてみましたがどうも上手く行きませんでした。不具合の内容は上手く説明できません。原因がデータベースの構成を回答者に正確に、お伝え出来ていないことに起因すると分かりましたので、恐縮ながら原点に戻るところから説明させていただきます。申し訳ございません。 入力用のフォーム「F_入出庫入力」のレコードソースは、クエリ「Q_入出庫入力(添付ファイルにて)」で、各フィールドの書き込み先テーブルが「T_入出庫」になっています。 [フィールドの内容と機能(タブオーダー順)] 名前:入出庫ID「コンボボックス」= 「コントロールソース」商品ID(書込「T_入出庫」) 名前:訂正「チェックボックス」= 「コントロールソース」訂正(書込「T_入出庫」) 名前:商品コード「テキストボックス」= 「コントロールソース」商品コード(コンボ連結入力)(書込「T_入出庫」) 名前:商品名「テキストボックス」= 「コントロールソース」商品名(コンボ連結入力)(書込先「T_入出庫」) 名前:在庫数「テキストボックス」= 「コントロールソース」在庫数(コンボ連結入力)(書込先「T_入出庫」) 名前:日付「テキストボックス」= 「コントロールソース」日付(書込「T_入出庫」) 名前:入庫数「テキストボックス」= 「コントロールソース」入庫数(書込「T_入出庫」) 名前:出庫数「テキストボックス」= 「コントロールソース」出庫数(書込「T_入出庫」) 名前:計算済「チェックボックス」= 「コントロールソース」計算済(書込「T_入出庫」) [お詫び] お恥ずかしい話ですが、クエリ「テーブル連結=クエリ(レコードソース利用)」を使ったリレーショナルデータベースは初めてであります。数多くのデータベースを作りましたが、全てがデータ「生活関連や知識関連等」の蓄積と検索が主になっております。そうした経緯もありまして、結果として回答者様を振り回す結果になったこと、お許しいただければと思います。今後は、ACCESSの主機能であるリレーショナルを扱える様に努力したいと考えています。すいません。

  • kkkkkm
  • ベストアンサー率65% (1615/2454)
回答No.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

eokwave
質問者

補足

早速のアドバイスを本当にありがとうございます。以下の通りご途中報告させていただきます。 [改善したいこと(アドバイスを求めたテーマ)] その1,改善項目での結果ご報告(「終了」コマンドボタンにプロシージャを記述後の動向) 最後の入力フィールド「出庫数(更新後処理にコマンドの実行:レコードの保存、クエリの実行:Q_在庫計算のマクロを設定)」まで入力すると、コマンドボタン実行後「F_入出庫管理を閉じ」の再実行「F_入出庫管理を開く」で入力データは残ってしまいました。但し、ラス前入力フィールド「入庫数」の入力までであればデータは残らずクリーにできました。 [(そこでご提案)改善したこと → 変更のご提案] 最後の入力フィールド「出庫数(更新後処理にコマンドの実行:レコードの保存、クエリの実行:Q_在庫計算のマクロを設定)」のプロシージャを無しにしました。「どのフィールドでストップしても対処可のため」 [変更に対する改善策] 最後のフィールド「出庫数」の直下にコマンドボタン「確定」を配して「(クリック時にマクロを設定:レコードの保存、クエリの実行:Q_在庫計算)」マクロを設定しました。F_入出庫管理フォームのフィールド入力終了時に手動でボタンを押す内容です。押し忘れの無い様に最後の入力フォールドの直下に配置。 [対応方法に対する希望] 希望1, F_入出庫管理フォームのフィールドへのデータ入力を途中で止めた時の処理ですが、F_入出庫管理フォームを一旦終了させてから、再度F_入出庫管理フォームを起動して確認等する方法になります。それを、計算機のクリアー的な考え方でコマンドボタンで、途中入力データをクリアーにするだけの機能を持たせ、別途終了ボタンをF_入出庫管理フォームに配して、作業が終了した時点でF_入出庫管理フォームを終了させる。その様な運用は可能でしょうか。 希望2,これはウォント項目ですが 更新クエリ「Q_在庫計算」設定のコマンドボタン「確定」の押し忘れ防止策はありませんでしょうか。 以上ですが、色々と注文うるさく申し訳ございません。アドバイスをお願いできませんでしょうか。

関連するQ&A

  • ACCESSで在庫管理 備考欄の組み込み方?

    ACCESSで在庫管理を始めました。 なんとか在庫管理だけはできるようになりましたが、 備考欄を設けたら、備考を入れたものは数が別でカウントされるように なってしまいました。 今の在庫管理の状態は <テーブル> ・商品ベース(商品ID、商品名が入っている) ・入出庫明細 <フォーム> ・入荷票(入出庫明細テーブルに入力される) ・出荷票(入出庫明細テーブルに入力される) <クエリ> ・在庫表 ・要発注表(在庫が1以下のものだけ表示する設定) <レポート> ・在庫表(クエリの在庫表のレポート) ・要発注表(クエリの要発注表のレポート) という感じです。 フォームに商品IDを入れると、自動で商品名が表示されるようにしており(DLOOKUP)、 その下に入庫や出庫数を入力する欄、最後に備考入力欄を設けています。 たとえば、返品によって在庫が1つ増えたときに「返品」などというふうに 備考を入れたいのですが、そうすると在庫表や要発注表で 備考情報なしの物は今までの入出庫明細の合計で1行に在庫数が ずばっと出ますが、備考を入れた物はその下に同じ商品IDで 数行に出ます。 (結局最後はそれを手で計算する) 本当は、1行におさめて、備考欄を大きめにとって、そこに備考は どんどん追加されるような感じにしたいのですが、可能でしょうか? 質問の仕方も下手ですみません。 補足要求してください。宜しくお願い致します。

  • access 在庫計算

    今accessで在庫管理をしています 売上入力のフォームに、在庫テーブルから在庫数を表示させて 売却数を入力したついでに自分で計算して在庫数を変更しています 計算を自動化して在庫数が更新されるようにしたいのですが、どうやったらいいでしょうか?

  • Accessで在庫管理する時の在庫数の出し方

    在庫管理をaccessで行おうとしています。 在庫数の出し方が分かりません。 =DLookUp("[在庫数]","[T_発注]","助成物コード='" & [Forms]![F_受注]![助成物コード] & "'")-nz([数量]) とすると、それらしい数は表示されるのですが、次のレコードで同じ商品(助成物コード)を指定すると、前のレコードの在庫と同じ数になってしまいます。 =DLookUp("[在庫数]","[T_発注]","助成物コード='" & [Forms]![F_受注]![助成物コード] & "'")-nz([数量]) した結果を次の『=DLookUp("[在庫数]"』の在庫数に引き継いでもらいたいのですが、どうすれば良いか分かりません。 上記で『助成物コード』が商品コードで、 『数量』が受注数です。 他にどんな情報があれば良いか分かりませんので、不足している情報があればご指摘下さい。

  • 在庫数を表示させたい

    アクセスの超初心者なのです。 今、簡単な在庫管理をしようとしてるのですが、フォームで入出庫数を入力すると下のほうに在庫数を表示させたいのです。 例えば「A-1」の在庫が10個合ったとします。A-1はコンボボックスを使いたいです。 10個のうち5個出庫したとすると下のように在庫数の欄が5個と表示させたいです。説明が下手ですみません(ーー;) カタログ番号  A-1 入庫数 出庫数   5   在庫数   5

  • アクセスでの在庫管理で。

    アクセスで物品の在庫管理をしています。 こちらのサイトを参考にさせてただきながら、 がんばっております。よろしくご指導くださいm(._.)m 物品毎に入庫、出庫、在庫の計をクエリで出し、一覧 を表示するフォームがあります。そのフォーム内で、 リストボックスに物品区分を表示させ、ある区分を選択した際に、サブフォーム内(クエリ)の一覧に該当の 区分に属する物品を抽出したいと思っております。 ちなみにアクセス2002では、リストを選んだ際に、 対応するレコードを検索するというのがあるのですが。 List区分 ------------- 文房具 工具 パソコン用品 一覧(クエリ) ------------- 品名   仕様  区分  入庫数 出庫数 在庫 えんぴつ B    文房具   10    5   5 定規   30cm  文房具   20   10   10 という感じにしたいと思っております。 よろしくお願いいたします。

  • アクセス2000で在庫管理ファイルを作っているのですが・・・

    メニュー画面を作って [発注入庫]・[出庫]のコマンドボタンを作り そのコマンドボタンから[フォーム発注入庫]・[フォーム出庫]を表示します (↑オートNOフィールドのある一つのテーブルを基に作りました) それぞれには明細テーブルのデータがサブフォームで埋め込んであります 1)レコードを移動する時にレコードバーではなく  [フォーム発注入庫]に作ったテキストボックスに  オートNOフィールドで取った番号を入力して  Enterキーを押すと  [フォーム発注入庫]の中で表示する様にしたいのですが、  上手くいきません・どうしたら良いのでしょうか? 2)[フォーム発注入庫]に表示するのは  明細データの発注個数があるレコードのみ  [フォーム出庫]に表示するのは  明細データに出庫個数があるレコードのみ  でも、それぞれのフォームから  基にした一つのテーブルの  新規レコード番号(オートNOフィールド)が取れる!!様にしたいのです   在庫確認や棚卸は出来るのですが、フォームの操作が今ひとつです。 いつまでも「調整中」で置いておくわけにもいかず ギブアップです。 考えているうちに訳がわからなくなって来た・というのも原因なので 質問内容も伝わるかどうか、不安です。 素人なので、簡単に説明していただけると助かるのですが どうかよろしくお願いします。

  • 手書きの在庫(貸出)管理表

    手書きで管理する在庫管理表を作りたいと思います。 エクセルなどで管理しないのは、製品のそばにその管理表を置いておきたいからです。また、入出庫はしょっちゅうある為、いちいちデータ入力して出力し直す手間を省く為です。 ただ、1つの製品に対し、入庫、出庫を何度か繰り返すのです。入出庫と言っても厳密に言えば貸出表です。 貸出があれば、貸出中かどうか、貸出先、返却日、が分かるようにし、尚且つ、一見して現在の在庫数=貸出可能な数、が分かるようにしたいのです。 製品は50個ほどあります。 エクセルでフォーマットを作り、貸出→返却→再び貸出、と手書きで管理できるようにするには、どのようなフォーマットにすればいいのでしょうか。 単純な作業なのですが、アイデアが浮かびません。 どうぞお知恵を貸してください。

  • ACCESS where条件式

    アクセス初心者です。 フォームで表形式の一覧「在庫一覧F」を作っています。 もうひとつ単票形式のフォーム「在庫表F」も作っています。 もとは同じテーブルのデータです。 表形式のフォームの一覧で、現在選択してるレコードの単票形式のフォームを開きたいのですがうまくいきません。 選択中のレコードをひらくというコマンドボタンを作成し、クリック時にマクロを割り当てています。 フォーム名:在庫表F ビュー:フォームビュー where条件式:Me.CurrentRecord=[Forms]![在庫表F]![ID] 以前マクロを使ってうまくできていたのですが、サーバーがこわれ作り直しています。どこを直したらうまくいくのでしょうか…。 どなたか教えてください。よろしくお願いします。

  • 教えてアクセス2007!「在庫管理を求める方法」

    教えてアクセス2007!「在庫管理を求める方法」 アクセス2007を扱うのは初心者ですが在庫管理のデーターを作っていて フォームを開いた時に商品の在庫だけが表示される方法を教えて下さい たとえば 入荷              出荷 商品  日付 入荷数      商品   日付  出荷数 りんご 5/1  10     りんご  5/10  10 いちご 5/5  10     ばなな  5/15  10 ばなな 5/10 10     みかん  5/16  10 みかん 5/11 10 メロン 5/13 10 この場合、いちごとメロンが残ってます フォームを開いた時、残ってる商品だけを表示させたいのですが どうしたら良いでしょうか?教えて下さい。  

  • エクセルVBとアクセスでの在庫管理

    おはようございます。 お世話になります。 エクセルVBとアクセスでの在庫管理をしたと考えています。 この質問では仕様の詳細ではなく、もっと手前の段階の疑問を ご教示いただきたいと思っています。 ●背景 日々手作業での在庫の管理に限界を感じ、商品が売れるたびに 簡単に在庫消込を行いたいと考えているが、ネットショップには登録していない 商品も在庫管理する必要があり、ネットショップへの登録は手間が大きいし 利点がすくないので選ぶつもりがありません。 そこで、本日から一気に全在庫を数えていくつもりですが、それで固まった在庫数を 今後は売れるたびにエクセル&アクセスで管理したいと考えています。 ●目的 Office2010のエクセルとアクセスを使って在庫を管理する。 実際の在庫自体はアクセスに入れておき、エクセルはコマンドボタンなどがあるので あくまで各スタッフのユーザビリティ向上のために(簡単に行えるように)用意する。 ※アクセスは日々ネットショップの商品管理に使っているのである程度の操作は できますが、在庫消込用のVB画面のようなものを用意できるのかなどは不明な状態です。 ◎質問したいこと 1.エクセルとアクセスで連動して管理することは可能ですか? 2.世の中には在庫管理用のソフトがあると思います。費用削減のために自前で   今回のように作りたいなと思っていますが、どう思われますか?   例)データ紛失の恐れがあるので危険やめたほうがよい   例)非常に安価またはフリーソフトの在庫管理システムがある   例)上記ソフトで実現するのは非常に負荷が高い   などなど… この質問では詳しいことは述べませんし、おおまかに実現したい機能は以下です。 商品番号、カラー、サイズを打ち込める画面的なものをエクセルに用意する。 そこにデータを打ち込むと、対象候補のレコードを検索して結果を表示する。 その中から対象のレコードを選択して、更新したい在庫数に変更する。 更新ボタンを押すとアクセス側にレコード更新に向かい、処理を完了する。 です。 プログラム経験はVB・SQLはありますが、VBAはありません。 なのでエクセル&アクセスでこの機能を実現するのがどれくらい大変かまたは簡単か わかっていません。 この質問で「大して大変な機能ではないので作って管理してもいいんじゃない?」という回答を頂けるようなら、その機能の実装についても 別の質問を用意してアドバイス頂きたいと考えています。 アドバイス頂いた中でわからない部分についてはググったり試行錯誤したりはする覚悟がありますが、本を用意して新しい概念や知識を入れないと作れないような場合は そこまでする時間がないので諦めようと思っています。 以上を踏まえて、ご教示いただければと思います。 (以上といっても私の知識がどの程度なのかわかりづらいと思うので アドバイスしづらいかもしれませんが、上記の説明内容でおおまかにどれくらい わかっていないのかは伝わったら幸いと思っています。) よろしくお願いいたします。

専門家に質問してみよう