フォーム コントロールの値に基づいて vba で作成した SQL を使用して、クエリまたはレコードセットなど (データシート ビュー) を開く必要があります。私のデータには「多対多」の関係があります(一種の)。Person テーブル、Pet テーブル、および ID Pet_Person テーブルがあるとします。返されたデータの 1 行にすべてのペットを連結した文字列を含む People のリストを作成したいと考えています。そう....
Row Person Pets
1 Kim Lucius, Frodo, Cricket, Nemo
2 Bob Taco
そして、グーグルで調べたところ、VBAで関数を記述してSQLから呼び出すことができることがわかりました。そう。これが問題です。多くのレコードがあり、一度開くと、行をクリックするたびにその連結関数が呼び出されないと、データシートビュー/クエリ/その他を移動できません。SQLが最初に実行されたときに一度だけ呼び出す必要があります...スナップショットなどのように。
私は Access とその可能性にあまり精通していません。オンラインで見つけたいくつかのことを試してみましたが、すべて同じ結果になりました...その結果のデータセットにまったく触れたときに連結関数が呼び出されました。
最後に試したのは次のようなものです。
With db
Set qdf = .CreateQueryDef("Search Results", q)
DoCmd.OpenQuery "Search Results", , acReadOnly
.QueryDefs.Delete "Search Results"
End With
StackOverflow は、私のものを正しくフォーマットすることは決してありません。おそらくユーザーエラー....ああ、まあ。
編集:
ああ、バート S. ありがとうございます。でも、あなたはすぐに去ってしまい、そこに答えがあるかどうかを理解できませんでした。ありがとうございました。
あ、レム。 はい、あなたの投稿を見ました。私はあなたの投稿を使用しました。このプロジェクトに取り組んでいる間、私はあなたの投稿の多くを使用しました。Access がすべての SQL 関数をサポートしていない理由は、MySQL に慣れているためわかりません。あなたはこのサイトのすばらしい仲間です。質問にリンクするべきでしたが、コーヒーはまだ入っていませんでした。
連結関数があり、SQL 内で呼び出しています。そのrecorsetやクエリなどを開くためにdocmdで開いていました。しかし、これが私の問題です(一度にあまりにも多くのソリューションを試して自分でこれを作成している可能性があります。または、何かを見落としている可能性があります)...結果のデータセット/クエリ/ものに触れるたびに、その関数を呼び出し続けますそして、それが起こるにはデータが多すぎます。砂時計を見すぎているだけです。これは、私がそれを開く方法が原因であると確信しています。これは、検索フォーム画面の結果であることを意図しています。私は文字通りアクセスで別のフォームを作成し、結果のレコードセットを入力する必要があると考えています。皆さんのおっしゃる通りだと思います。わからない。これは奇妙な例です。しかし... Excelでは、各行の値を取得するためにある種のインライン関数を作成するとわかります...そして、値だけに特別なコピーアンドペーストを行います(関数ではありません)...私はそれが必要です。この関数(明らかにExcelではありません)はクエリを実行する必要があり、行がクリックされるたびに再適用するのに時間がかかるためです(単一の行がクリックされた場合、実際には各行を再クエリしていると思います. SQLまたは何かを再実行します)。NIN/Depeche Mode の曲のように Dead Souls... それは私/それを呼び続けます。