Microsoft Access Club Access超初心者対象Forum Access初級者対象Forum Access初・中級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

投稿記事の一括表示

タイトル1種類のフォームを使って複数のフォームを開いた時、新しいフォームの内容に上書きされてしまう。
記事No16854
投稿日: 2017/03/06(Mon) 10:37
投稿者Ken!!
解決済: ON
OS:Windows10
Access Version:Access2016

お世話になります。
色々と調べたのですが、どうしても解決できずご質問させていただきました。

Access VBA で Staticステートメントを使ってフォームを複数開いた時、それまでに開いたフォームの内容(=レコード)が、一番新しいフォームで表示した内容に置き換わってしまうことに悩んでします。

現状は・・・
メニューフォームからチェックボックスで目的の氏名を選択します。
---------------
■ 顧客.氏名A
□ 顧客.氏名B
□ 顧客.氏名C
---------------
上記のように1つだけの氏名Aを選択して抽出すると、Staticステートメントで定義したフォームが開いて、氏名Aのレコードが表示されています。

悩んでいるのは、これを複数選択した時のフォームの動作です。
---------------
■ 顧客.氏名A
■ 顧客.氏名B
□ 顧客.氏名C
---------------
上の状態は、氏名Aと氏名Bを選択した状態です。
SQLで1件目の氏名のレコードを抽出してフォームに表示したあと、2件目の氏名レコードを抽出して新しいフォームに表示する仕掛けにしています。SQLで引っ張ってきた各レコードの抽出結果は確認済みです。

分からないのは、1件目のフォームに氏名Bのレコードが表示されたあと、その前面に2つめのフォームが開いて2件目の氏名Aのレコードを表示しているのですが、後ろに隠れた氏名Bのフォームを表示すると、そのフォーム内容が氏名Aのレコードに置き換わってしまいます。
デバッグすると1件目のフォームが表示された時は氏名Bのレコードが正しく表示されていました。
2件目のフォームが開いた直後に、1件目のフォームの氏名Aのレコードにに置き換わっていました。
レコードソースが違うのにナゼ?な状態です。

最初に開いた氏名Bフォームに、あとから開いた氏名Aフォームの内容が更新されるのかが分かりません。
何か大きな勘違いをしているのかもしれませんが、この症状を解決したいので、どなたかご教示いただけますと幸いです。


Option Compare Database
Option Explicit
-------
Public Sub NameSearch()
Dim i as Integer
 :
Dim sSQL as String
Static frm(2) As New Form_frm顧客一覧
 :
<氏名毎に抽出するSQLを変数にセット>
For i=1 to 2 (...選択した氏名 2件分を繰り返す)
 :
 sSQL= "SELECT 〜 ;"(...顧客テーブルから氏名のレコードを抽出するSQL文をセット)
 :
<フォームのオブジェクト変数を割り当て>
 Set frm(i) = New Form_frm顧客一覧
  With frm(i)
  .RecordSource = sSQL
  .Visible = True
  End With
 End Sub
 :
Next i
 :
End Sub

どうぞ、よろしくお願いします。


<追記>
2017.3.6 12:55

自己解決しました。

上記のSQL命令を発行する直前で、顧客テーブルに更新クエリーをかけたあと、それをそのままSQLで引っ張り出して、フォームのレコードソースにセットしていました。
これを別のテーブルに書き出してから試したところ、フォームの内容が置き換わることなく意図通りに表示するようになりました。

お騒がせしました。
今後ともよろしくお願い申し上げます。

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

ページの先頭へ 前ページへ戻る