よろしくお願いいたします。
フォーム上(フォームヘッダ)にある複数のコンボボックスに、リンクテーブルT_売上の
値を入れて、下記の条件でデータを検索し、サブフォーム上の帳票フォームにデータを取得させたいと
考えています。
実行はボタンクリックイベントです。
検索条件(コンボボックス)
①会社、年度、期までは指定必須。
②ブランドG or ブランドはどちらか一方で OK。
以上①、②を併せた条件でデータを検索したいと考えています。
真ん中のサブフォームは、リンクテーブル「T_売上」がレコードソースです。
途中までコードを書いてみたものの、
条件の書き方などがわからず、手詰まりになってしまいました。
Dim objCn As New ADODB.Connection Dim objRs As New Recordset Dim strSch As String Set objCn = CurrentProject.Connection objRs.Open "T_売上", objCn, adOpenKeyset, adLockOptimistic strSch = "T_売上のから、①、②の条件に合うもの " //ネットでは特定の列を表示するサンプルしか見当たらない objRs.Find "strSch に代入した値を入れたい"
「access ado 検索 」でググり、
Find
Findその2
などを参考にしたのですが、目的の実現に沿うような記述の仕方がわからず、
試行錯誤の結果こちらで質問することにいたしました。
Findでなく、SQLなどを使った方が良いのか…?等、やり方の指南もご教示いただければありがたいです。
*追記
本業務を提示してきた上司によると、「Find」は使わないとのことで、
「SQL」を使うよう言われました。
「Filter」はどうかと聞いたところ、「Filterの条件にSQL を使うのも良いかも」との返答でした。
*(18:30現在)
有職者の皆様、ヒントやサンプルコードなど、実現させる為のお知恵をお貸しください。
よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答3件
0
他の方との質問-回答のやり取りを見ていて、1つ気になった点があります。
今回、objRsに取得したデータに対してFilterをかけたいのだと思いますが、
提示いただいているコードでは
objRs.Open "T_店頭推進部予実管理", objCn, adOpenKeyset, adLockOptimistic とか objRs.Open "T_店頭管理", objCn, adOpenKeyset, adLockOptimistic
のように記載されています。
>サブフォームは、リンクテーブル「T_売上」がレコードソースです。
であれば、
objRs.Open "T_売上", objCn, adOpenKeyset, adLockOptimistic
なのではないでしょうか?
そのうえで、T_売上に持っている列を条件に指定して絞り込みを行うのではないかと思うのですが。
あと、条件文の作成のところで苦戦されているようでしたので、その部分だけ簡単なサンプルを作成してみました。
'条件文用変数を初期化 strCrit = "" If Textbox1.Text = "" Then '必須項目のためエラー Msgbox "必須項目が指定されていません" Exit Sub Else '値があれば条件に追加 strCrit = strCrit & " Col1 = '" & Textbox1.Text & "'" End If If Textbox2.Text = "" Then '必須項目ではないため何もしない Else '値があれば条件に追加 If strCrit <> "" Then strCrit = strCrit & " AND " End If strCrit = strCrit & " Col2 = '" & Textbox2.Text & "'" End If
対象データを抽出して画面に表示、というのはよく求められる機能ですので、がんばって完成させてください。
投稿2016/06/17 03:16
総合スコア3020
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/17 03:22
2016/06/17 03:32
2016/06/17 05:11

0
ベストアンサー
ひとまずヒント
- サブフォーム部分に表示されているデータは、【サブフォーム】オブジェクトのプロパティとして、
SELECT * FROM T_売上
に該当するレコードセットオブジェクトが設定されているもの、と考えてみましょう - つまりフィルタする対象は、サブフォームオブジェクトのレコードセットです
その上でこちらをどうぞ http://accessvba.pc-users.net/form/filter.html
投稿2016/06/16 08:35
総合スコア2042
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

0
Filter
を使えば要件を満たせそうです。
http://www.geocities.jp/cbc_vbnet/ADO/filter.html
投稿2016/06/16 07:22

退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/06/16 08:23 編集

退会済みユーザー
2016/06/16 08:36

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。