Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Access 2016)
フィールドに入力後、他のフィールドの値を更新
投稿日時: 22/05/23 14:14:29
投稿者: yurappy

お世話になります。
 
フォームで表示して編集している同じテーブル内にあるフィールドGの値が更新されたら、
フィールドHのチェックボックスがチェックされた状態にする事ができるのかと
悩んでおります。
 
 
テーブルの構成はこの様になってます。
 
 
テーブル名  発送管理
 
フィールド
 発送月日 日付型
 注文番号 テキスト型
 大きさ 数値型
 運送会社 数型(ルックアップ)
 便種 テキスト型
 担当者 数型(ルックアップ)
 発送番号 テキスト型
 発送済み Yes/No型 チェックボックス
 
 
このテーブルを、表形式のフォームで一覧表示して運送会社などを選択したり発送番号を入力してます。
 
その際、発送番号を入力したタイミングで 発送済み のチェックボックスがチェックされた状態 に
更新をしたいのです。
 
フォームを閉じて再度開くタイミングで更新クエリを実行して更新をする方法は、ネットで調べて
見つけたのですが入力の都度に閉じて開くこともできず、入力する都度にそのまま更新できる方法が
ありましたら教えてください。
 
お願いいたします。

回答
投稿日時: 22/05/23 14:35:57
投稿者: sk

引用:
フォームで表示して編集している同じテーブル内にある
フィールドGの値が更新されたら、フィールドHの
チェックボックスがチェックされた状態にする

「フィールドG」が[発送番号]、「フィールドH」が[発送済み]のことを
指しているとして、
 
引用:
表形式のフォームで一覧表示

引用:
発送番号を入力したタイミングで 発送済み のチェックボックスが
チェックされた状態 に更新をしたい

[発送番号]と連結しているテキストボックスの[更新後処理]イベントの発生時に、
そのテキストボックスの値が Null であるか否かに応じて、
[発送済み]と連結しているチェックボックスに対して False または
True を代入する処理を、イベントマクロかイベントプロシージャで
実行するようになさればよろしいでしょう、

投稿日時: 22/05/23 15:51:39
投稿者: yurappy

sk様
 
お世話になります。
ご親切にありがとうございます。
 
発送番号を入力する箇所の 更新処理後のイベント の場所は見つけたのですが、
 

引用:

[発送済み]と連結しているチェックボックスに対して False または
True を代入する処理を、イベントマクロかイベントプロシージャで

 
の イベントマクロとイベントプロシージャが不明で、Replace関数などかとも調べたのですが
違っているようでVBAかと検索をして
 
 https://tasukete-access.com/2021/07/14/vba_update/
 
などを見たのですが、わからず試したのですエラーになって再度調べてますが、こちらの
VBAみたいなことを 発送番号 を入力する箇所の 更新処理後のイベント に記述すれば
よろしいとの理解で合ってますでしょうか?
 
マクロかプロシージャの前に疎いのですみません。
 
ご教授頂ければ幸いです。
 
お願い申し上げます。

回答
投稿日時: 22/05/23 16:33:55
投稿者: sk

引用:
イベントマクロとイベントプロシージャが不明

1. テーブル[発送管理]をレコードソースとする連結フォームを
   デザインビューで開く。
 
2. 詳細セクション上の連結テキストボックス[発送番号]を選択した状態で、
   プロパティシートの[イベント]タブ上にある[更新後処理]プロパティの
   右端にある[...]ボタンをクリックし、[ビルダーの選択]ウィンドウを開く。
 
3. イベントマクロ(埋め込みマクロ)を作成したい場合は「マクロビルダー」を、
   イベントプロシージャを作成したい場合は「コードビルダー」を選択し、
   [OK]ボタンをクリックする。
 
引用:
こちらのVBAみたいなこと

4. 「コードビルダー」を選択して Visual Basic Editor を起動させた場合は、
   コードウィンドウ上に表示されたフォームモジュールの
   発送番号_AfterUpdate プロシージャに、次のようなコードを挿入する。
 
(フォームモジュール)
------------------------------------------------------------------------
Option Compare Database
Option Explicit
 
Private Sub 発送番号_AfterUpdate()
 
    Me![発送済み].Value = Not IsNull(Me![発送番号])
 
End Sub
------------------------------------------------------------------------

投稿日時: 22/05/23 18:39:40
投稿者: yurappy

sk様
  
お世話になります。
ご親切にありがとうございます。
 
とてもわかりやすく、ありがとうございます。
おかげさまで、思うように動くようになりました。
 
コードの内容がわからないので、勉強しながら理解していきます。
 
ご面倒をお願いして、すみませんでした。
 
また困った時にはご指導をお願いいたします。
 
本当にありがとうございました。
 
助かりました。