投稿者 とくま  (社会人) 投稿日時 2011/3/24 11:26:31
> ②shuさんが言っているように、accessを開くときのイベントでクエリ等を実行して更新する。
そもそも shu さんはマスタテーブルの情報なら、更新処理自体が要らないのでは?
と言ってる気もします。

最初の質問では
> 新たにインサートしたレコードのフォームに品名を追加したいのですが
「品名」はマスタテーブルで1個持っていればいいデータです。「製品コード」
を実績テーブルに入れておいて、表示の Select 文でマスタテーブルと連結
するだけです。

ただし、途中から
> レコードが挿入(製品がカウントされたら)新たに挿入されたレコードへ製品コード(フィールド変更)を行いたいと思っています。
> インサートしているのはどの生産ラインで何時に品物が流れたかを示すためのものです。
となっているので、挿入された時点での履歴管理が必要なデータなのでしょう。
そういったタイミングで処理が必要になる可能性も確かにあります。

が、概要を見ていると、しるふぃんさん提案どおり VB2010 の挿入処理が
やるべき処理の気がします。「トリガー」の話を出しましたが、データを
更新しているのは VB2010 の処理なんだから、正に Trigger(引き金)です
よね。

> ACCESSフォームを見る人は複数でセンサー入力も都度入っているのに影響が無いようにと言う意味でした。
これこそ整合性を保つというのが本システムの肝であり、
> 通常、何か不具合でACCESSが起動できていない時はご指摘の通り、NULLができてしまいますが、
> それはイレギュラーとして今は扱うよう考えています。(とりあえず)
同一アプリケーション内であれば、自分でエラー検知できるので、この
考え方もありますが、別アプリケーション(プロセス)で動いている時点で、
整合性をいかに保つかの仕組みが最重要課題になります。通信などでは
当然、不具合(通信異常)を基準として設計しなければいけません。
イレギュラーな処理では無いからです。通信異常は日常的に起こる事です。
想定して然るべき仕様です。

つまり、VB2010 と Access2007 に処理を分けている時点で、質問者の
言葉を借りるなら「トランザクションは不利」です。

まぁ、それでは処理できないはずですので、実際は VB2010 の処理で、
Access2007 の処理につながる情報を何か入れているはずです。
そうなると、Access2007 の処理は必要ない可能性は非常に高いです。

ま、掲示板で指摘するような内容では無いですけどね。