Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1633 / 2272 ツリー ←次へ | 前へ→

【5854】検索用のフォーム作成 QOO 05/8/14(日) 15:29 質問[未読]
【5857】Re:検索用のフォーム作成 小僧 05/8/15(月) 10:30 発言[未読]
【5862】Re:検索用のフォーム作成 QOO 05/8/16(火) 23:58 質問[未読]
【5863】Re:検索用のフォーム作成 小僧 05/8/17(水) 10:04 発言[未読]
【5955】Re:検索用のフォーム作成 QOO 05/8/22(月) 14:54 発言[未読]
【5958】Re:検索用のフォーム作成 QOO 05/8/22(月) 16:05 質問[未読]
【5961】Re:検索用のフォーム作成 小僧 05/8/22(月) 16:57 発言[未読]
【5962】Re:検索用のフォーム作成 QOO 05/8/22(月) 18:04 質問[未読]
【5963】Re:検索用のフォーム作成 小僧 05/8/22(月) 18:52 回答[未読]
【5976】Re:検索用のフォーム作成 QOO 05/8/23(火) 14:25 質問[未読]
【5978】Re:検索用のフォーム作成 小僧 05/8/23(火) 15:15 回答[未読]
【5986】Re:検索用のフォーム作成 QOO 05/8/24(水) 11:24 質問[未読]
【5987】Re:検索用のフォーム作成 小僧 05/8/24(水) 11:55 回答[未読]
【5994】Re:検索用のフォーム作成 QOO 05/8/24(水) 13:59 お礼[未読]
【5995】Re:検索用のフォーム作成 QOO 05/8/24(水) 14:00 質問[未読]
【5999】Re:検索用のフォーム作成 小僧 05/8/24(水) 14:45 発言[未読]
【6003】Re:検索用のフォーム作成 QOO 05/8/24(水) 17:49 質問[未読]
【6007】Re:検索用のフォーム作成 小僧 05/8/25(木) 9:11 回答[未読]
【6016】Re:検索用のフォーム作成 QOO 05/8/25(木) 17:10 質問[未読]
【6018】Re:検索用のフォーム作成 小僧 05/8/25(木) 17:18 発言[未読]
【6020】Re:検索用のフォーム作成 QOO 05/8/25(木) 17:36 質問[未読]
【6027】Re:検索用のフォーム作成 小僧 05/8/26(金) 9:03 発言[未読]
【6071】Re:検索用のフォーム作成 QOO 05/8/26(金) 15:47 発言[未読]
【6076】Re:検索用のフォーム作成 小僧 05/8/26(金) 16:07 発言[未読]
【6077】Re:検索用のフォーム作成 QOO 05/8/26(金) 16:22 発言[未読]
【6079】Re:検索用のフォーム作成 小僧 05/8/26(金) 16:49 発言[未読]
【6083】Re:検索用のフォーム作成 QOO 05/8/29(月) 11:50 質問[未読]
【6084】Re:検索用のフォーム作成 小僧 05/8/29(月) 16:16 発言[未読]
【6218】Re:検索用のフォーム作成 QOO 05/9/8(木) 0:18 お礼[未読]

【5854】検索用のフォーム作成
質問  QOO  - 05/8/14(日) 15:29 -

引用なし
パスワード
   こんにちは。
検索用フォームの作成で、
1.部署名 2.年 3.月 の3点でAND検索するマクロをボタンに組み込みたいのですが、どのようなマクロを作成すればよいのでしょうか?
検索結果の表示は検索レコードの表示と+A:件数とB:(売上)合計金額を表示できるようにしたいのです。
件数は、下のレコード数で見ればわかるのでは、と思われますがaccessがわからない人にでも、わかるような画面にしたいのです。
ちなみに、3点ともコンボボックスでそれぞれ選択できるようになっています。
宜しくご教授願います。

【5857】Re:検索用のフォーム作成
発言  小僧  - 05/8/15(月) 10:30 -

引用なし
パスワード
   ▼QOO さん:
こんにちは。

>検索用フォームの作成で、
>検索結果の表示は…

現在どのような形で検索結果を返そうとされているのでしょうか。

A) 3つの条件を選択後、コマンドボタンをクリックすると別のフォームが開く。
B) 全件が表示されているフォームがあり、ヘッダに配置されたコンボボックスを変更すると
  フィルタによって絞り込まれたレコードのみ表示される。

>A:件数と

A) でしたら「フォームを開いた時」
B) でしたら「コンボボックスの値が変化した時」

のタイミングで、件数を表示したいテキストボックス(フォームフッタに配置)に

Me.Recordset.RecordCount

と値を代入すれば表示されます。(VBAで行うことになりますね。)

>B:(売上)合計金額

結果を表示したいテキストボックス(フォームフッタに配置)のコントロールソースに

=Sum([売上金額])

のような感じで合計金額が表示されると思います。

【5862】Re:検索用のフォーム作成
質問  QOO  - 05/8/16(火) 23:58 -

引用なし
パスワード
   ▼小僧 さん:
こんばんは。

>>検索用フォームの作成で、
>>検索結果の表示は…
>
>現在どのような形で検索結果を返そうとされているのでしょうか。
>
>A) 3つの条件を選択後、コマンドボタンをクリックすると別のフォームが開く。
>B) 全件が表示されているフォームがあり、ヘッダに配置されたコンボボックスを変更するとフィルタによって絞り込まれたレコードのみ表示される。

→ B)のタイプが理想です。
最初のフォームでコンボボックスでそれぞれ選択し、「検索」ボタンをクリックすると、同一WINDOWで以下に検索結果が出て、件数&合計金額はコンボボックスと同じヘッダに設定したいと思っています。

【5863】Re:検索用のフォーム作成
発言  小僧  - 05/8/17(水) 10:04 -

引用なし
パスワード
   ▼QOO さん:
おはようございます。

テーブルやフォームのご提示がありませんので、
仮テーブルを作って例を作ってみます。
T_選手
背番号  :数値型(主キー)
選手名  :テキスト型
ポジション:テキスト型
年齢   :数値型
年棒   :通貨型

背番号  選手名  ポジション  年齢  年棒
2      もとき  内野手   34  \12,000
5      きよはら 内野手   38  \45,000
6      こくぼ  内野手   34  \21,000
8       にし   内野手   34  \15,300
18      くわた  投手    37  \30,500
20      ろおず  外野手  37  \54,000
33      えとう  内野手   35  \21,500
47      くどう  投手    42  \28,000

このテーブルを基に帳票フォームで「F_選手」を作成して下さい。
レポートヘッダを広げて、そこに

【cmbポジション】:コンボボックス
   値集合ソース:SELECT [T_選手].ポジション FROM T_選手 GROUP BY [T_選手].ポジション;

【cmb年齢】:コンボボックス
   値集合ソース:SELECT [T_選手].年齢 FROM T_選手 GROUP BY [T_選手].年齢;
  
【txt人数】:テキストボックス

【txt年棒合計】:テキストボックス
  コントロールソース:=Sum([年棒])

【検索ボタン】:コマンドボタン

を配置します。

検索ボタンの「クリック時」イベントに下記コードを記述します。

Private Sub 検索ボタン_Click()
  Me.Filter = "ポジション = '" & Me.cmbポジション & "' AND 年齢 = " & Me.cmb年齢
  Me.FilterOn = True
  Me.txt人数 = Me.Recordset.RecordCount
End Sub


コンボボックスで「ポジション」「年齢」を選んだ後、検索ボタンを押して
結果を確認してみて下さい。

【5955】Re:検索用のフォーム作成
発言  QOO  - 05/8/22(月) 14:54 -

引用なし
パスワード
   ▼小僧 さん:
>▼QOO さん:
>おはようございます。
>
>テーブルやフォームのご提示がありませんので、
>仮テーブルを作って例を作ってみます。
>T_選手
>背番号  :数値型(主キー)
>選手名  :テキスト型
>ポジション:テキスト型
>年齢   :数値型
>年棒   :通貨型
>
>背番号  選手名  ポジション  年齢  年棒
>2      もとき  内野手   34  \12,000
>5      きよはら 内野手   38  \45,000
>6      こくぼ  内野手   34  \21,000
>8       にし   内野手   34  \15,300
>18      くわた  投手    37  \30,500
>20      ろおず  外野手  37  \54,000
>33      えとう  内野手   35  \21,500
>47      くどう  投手    42  \28,000
>
>このテーブルを基に帳票フォームで「F_選手」を作成して下さい。
>レポートヘッダを広げて、そこに
>
>【cmbポジション】:コンボボックス
>   値集合ソース:SELECT [T_選手].ポジション FROM T_選手 GROUP BY [T_選手].ポジション;
>
>【cmb年齢】:コンボボックス
>   値集合ソース:SELECT [T_選手].年齢 FROM T_選手 GROUP BY [T_選手].年齢;
>  
>【txt人数】:テキストボックス
>
>【txt年棒合計】:テキストボックス
>  コントロールソース:=Sum([年棒])
>
>【検索ボタン】:コマンドボタン
>
>を配置します。
>
>検索ボタンの「クリック時」イベントに下記コードを記述します。
>
>Private Sub 検索ボタン_Click()
>  Me.Filter = "ポジション = '" & Me.cmbポジション & "' AND 年齢 = " & Me.cmb年齢
>  Me.FilterOn = True
>  Me.txt人数 = Me.Recordset.RecordCount
>End Sub
>
>
>コンボボックスで「ポジション」「年齢」を選んだ後、検索ボタンを押して
>結果を確認してみて下さい。

小僧さん
こんにちは。
上記サンプル試してみましたが、以下のような疑問点がでてきました。

>【cmbポジション】:コンボボックス
>   値集合ソース:SELECT [T_選手].ポジション FROM T_選手 GROUP BY [T_選手].ポジション;
>
>【cmb年齢】:コンボボックス
>   値集合ソース:SELECT [T_選手].年齢 FROM T_選手 GROUP BY [T_選手].年齢;

→これですと、フィールドの項目に[ ]があるものとないものがありますが、
全部につけなくていいのでしょうか?
このままコピーで使うと選択肢がでてきません。

>【検索ボタン】:コマンドボタン
>
>を配置します。
>
>検索ボタンの「クリック時」イベントに下記コードを記述します。
>
>Private Sub 検索ボタン_Click()
>  Me.Filter = "ポジション = '" & Me.cmbポジション & "' AND 年齢 = " & Me.cmb年齢
>  Me.FilterOn = True
>  Me.txt人数 = Me.Recordset.RecordCount
>End Sub
>

→これもそのままコピーして使用したら、
Me.Filter = "ポジション = '" & Me.cmbポジション & "' AND 年齢 = " &
の部分で構文エラーがでます。Me.cmb年齢 を全行に持ってきて1行にすると赤い表示
は消えるのですが、それで検索ボタンを押しても動かないです。
これはホカのコンボボックスの設定がおかしいせいでしょうか?

■実際私が扱うデータは下記です■
元データ:クエリからフォームを作成してます。
〜フォームのフィールド〜
1.部署(テキスト型)
2.年(テキスト型)
3.月(テキスト型)
4.日(テキスト型)
5.NO,(テキスト型)
6.種別(正式、概算)(テキスト型)
7.客先名(テキスト型)
8.取引先名(テキスト型)
9.MODEL NO,(テキスト型)
10.コスト(通貨型)
  ※月日等、一見数値型では?と思われますが、検索用にわざとそうしております。

〜フォームのレイアウト〜
ヘッダに
・年(コンボボックス)
・月(コンボボックス)
・種別(コンボボックス)

・検索 (コマンドボタン)

・件数(テキストボックス)
・合計金額(テキストボックス)

★行いたいこと★
年、月、種別をコンボボックスから選択し、「検索」ボタンをクリック
→それにあたるレコードが詳細で表示され、件数、合計金額にそれの合計が表示される。

と したいです。

小僧さんが作成いただいたサンプルがまさにその通りなんですが、私ではうまく動かせない為、実際扱うデータでご教示願いますでしょうか?
宜しくお願い致します。(AcのVer.は97です)

【5958】Re:検索用のフォーム作成
質問  QOO  - 05/8/22(月) 16:05 -

引用なし
パスワード
   小僧さん

すいません。1ケ前のレス「他」としましたが、「問」です。

【5961】Re:検索用のフォーム作成
発言  小僧  - 05/8/22(月) 16:57 -

引用なし
パスワード
   ▼QOO さん:
こんにちは。

>→これですと、フィールドの項目に[ ]があるものとないものがありますが、
>全部につけなくていいのでしょうか?

掲示板への転記ミスが嫌なので、Access から直接コピー&ペーストしているのですが、
何故そうなったのか不思議です…。

ですが、
>SELECT [T_選手].ポジション FROM T_選手 GROUP BY [T_選手].ポジション;

をコピーして Access に貼り付けると普通にデータが表示されましたけど…。

ちなみに[ ] については表記しなくてもかまいません。
明示的にテーブル名やフィールド名を表したい時に使いますので
つけてあげたほうが解りやすくなる場合があります。

>Me.Filter = "ポジション = '" & Me.cmbポジション & "' AND 年齢 = " &
>の部分で構文エラーがでます。Me.cmb年齢 を全行に持ってきて1行にすると
>赤い表示は消えるのですが、それで検索ボタンを押しても動かないです。

ちょっと意味が解りかねますが、コードは1行で書いて下さい。
2行に分けたい時は、

Me.Filter = "ポジション = '" & Me.cmbポジション & "'" _
     & " AND 年齢 = " & Me.cmb年齢

というように「_」と「&」で繋ぐ形になります。

>■実際私が扱うデータは下記です■

テーブルで使っているフィールド名はフォームで使っている名前と
全く一緒なのでしょうか?

そうですと、
A) NO,(テキスト型)の名前が良くないです。
  このままですと、SQL や VBA で誤作動を招く恐れがありますので、
  名前の変更をおすすめします。
  ちなみに「NO」も、Access が「Yes/No」の「No」と勘違いする可能性があるので
  避けておいた方が無難です。

B) 年(テキスト型)、月(テキスト型)、日(テキスト型)も個人的には…。
  このままですと年月日の計算が複雑になります。

  [#5900] 辺りで他の方に回答をつけておりますが、
  テーブルでの値の持たせ方は「2005/08/22」の様に日付型にするのが一般的です。

>※月日等、一見数値型では?と思われますが、検索用にわざとそうしております。

  という事ですが、テーブルに格納する値は日付型が良いと思います。
  (問題なく検索できますよ)

データ型によって VBA の記述の仕方が変わってくるので実際のコードは載せませんが、
QOO さんが検討された結果全部テキスト型で行きたいというのでしたら、
テキスト型用のコードを組んでみようと思います。

【5962】Re:検索用のフォーム作成
質問  QOO  - 05/8/22(月) 18:04 -

引用なし
パスワード
   >>■実際私が扱うデータは下記です■
>
>テーブルで使っているフィールド名はフォームで使っている名前と
>全く一緒なのでしょうか?

→同じです。そこからテーブルからクエリ作成し、クエリからフォームウィザードで
フォームを作成しました。

>そうですと、
>A) NO,(テキスト型)の名前が良くないです。
>  このままですと、SQL や VBA で誤作動を招く恐れがありますので、
>  名前の変更をおすすめします。
>  ちなみに「NO」も、Access が「Yes/No」の「No」と勘違いする可能性があるので
>  避けておいた方が無難です。

→このフィールドは正確にはアルファベットと数字か混在しているナンバリングなので、
 「文字列」になります。フィールド名は「R NO」と変更しておきます。

>B) 年(テキスト型)、月(テキスト型)、日(テキスト型)も個人的には…。
>  このままですと年月日の計算が複雑になります。
>
>  [#5900] 辺りで他の方に回答をつけておりますが、
>  テーブルでの値の持たせ方は「2005/08/22」の様に日付型にするのが一般的です。
>
>>※月日等、一見数値型では?と思われますが、検索用にわざとそうしております。
>
>  という事ですが、テーブルに格納する値は日付型が良いと思います。
>  (問題なく検索できますよ)

→年だと「05」、月だと「1」というように表示させたい為、それに年、月、日をそれぞれで検索しやすいように独立させたいので日付/時刻型ではこのような表示がないので、テキスト型としております。
検索する際に「*」ワイルドカードで「○年の○月は何件?」と検索するフォームの作成のほうがややこしいかと思ったりもするのですが・・・。やはりテキスト型が希望です。
>
>データ型によって VBA の記述の仕方が変わってくるので実際のコードは載せませんが、
>QOO さんが検討された結果全部テキスト型で行きたいというのでしたら、
>テキスト型用のコードを組んでみようと思います。

データ型によってVBAも変わってくるとは知りませんでした(汗)
それだけデータ型は重要なキーになるんですね。
しかし、上記のような諸事情により、テキスト型で是非お願い致します。
宜しくお願い致します。

【5963】Re:検索用のフォーム作成
回答  小僧  - 05/8/22(月) 18:52 -

引用なし
パスワード
   ▼QOO さん:
こんばんは。
テキスト型で行う基本はこんな感じです。

Private Sub 検索_Click()
Dim strFil As String
  strFil = "年 = '" & Me.年 & "' AND " _
      & "月 = '" & Me.月 & "' AND " _
      & "種別 = '" & Me.種別 & "'"
  Me.Filter = strFil
  Me.FilterOn = True
End Sub

>それに年、月、日をそれぞれで検索しやすいように独立させたい

日付:「2005/08/22」という日付型の値に対して

Format([日付],"yyyy") → 2005
Format([日付],"mm")  → 08



Year([日付]) → 2005
Month([日付]) → 8



Left([日付],4) → 2005
Mid([日付],6,2) → 08

という数値(文字列)が取り出せますので日付型でも別々に検索できますよ。

テキスト型の問題は日付計算を行わなければいけない時ですね。
まぁ、日付に関するような計算(月次処理や上半期処理等)を
行わないのでしたら関係ありませんけどね。

>フィールド名は「R NO」と変更しておきます。

スペースも悪さをする原因になりえるので、「R_NO」「MODEL_NO」
(「 _ 」は良いようです)がおすすめですね。

【5976】Re:検索用のフォーム作成
質問  QOO  - 05/8/23(火) 14:25 -

引用なし
パスワード
   小僧さん

こんにちは。
検索用の構文ありがとうございました。
試してみましたら、検索ボタンうまくいきました。
ですが、1.前回教えて頂いた中で、

>A:件数と

A) でしたら「フォームを開いた時」
B) でしたら「コンボボックスの値が変化した時」

のタイミングで、件数を表示したいテキストボックス(フォームフッタに配置)に

Me.Recordset.RecordCount

と値を代入すれば表示されます。(VBAで行うことになりますね。)

の部分がうまく表示されません。
コードビルダで登録時、前文に「検索」ボタンの構文があるため?
ブランクとなってしまいます。
件数表示させたいテキストボックスのイベントタブの
「更新後処理」にこのMe.Recordset.RecordCountをいれております。
ちなみに合計金額はうまくいきました。

2.あと、帳票型フォームですが、詳細部分に例えば検索後2件のレコードがあるとして、
この2件を一度に表示する方法はあるのでしょうか?
今の時点では1件ずつの表示で下の▼で送るようになってますよね。
何度も申し訳有りません。

【5978】Re:検索用のフォーム作成
回答  小僧  - 05/8/23(火) 15:15 -

引用なし
パスワード
   ▼QOO さん:
こんにちは。

>件数表示させたいテキストボックスのイベントタブの
>「更新後処理」にこのMe.Recordset.RecordCountをいれております。

当方の説明がうまくなかったようです。すみません。

>>A) でしたら「フォームを開いた時」
>>B) でしたら「コンボボックスの値が変化した時」

でなく、

C) 「検索ボタンを押してフィルタが実行された時」という新しいパターンになっていますね。

Private Sub 検索_Click()
Dim strFil As String
  strFil = "年 = '" & Me.年 & "' AND " _
      & "月 = '" & Me.月 & "' AND " _
      & "種別 = '" & Me.種別 & "'"
  Me.Filter = strFil
  Me.FilterOn = True
'→追加
  Me.txt件数 = Me.Recordset.RecordCount
End Sub

こんな感じでいかがでしょうか。


>2.あと、帳票型フォームですが、

結果が1件ずつ表示されるのは「単票フォーム」で、
複数表示されるのが「帳票フォーム」の特徴なんですが…。

フォームのプロパティの「既定のビュー」はどうなっていますか?

【5986】Re:検索用のフォーム作成
質問  QOO  - 05/8/24(水) 11:24 -

引用なし
パスワード
   小僧 さん
こんにちは。

>C) 「検索ボタンを押してフィルタが実行された時」という新しいパターンになっていますね。
>
>Private Sub 検索_Click()
>Dim strFil As String
>  strFil = "年 = '" & Me.年 & "' AND " _
>      & "月 = '" & Me.月 & "' AND " _
>      & "種別 = '" & Me.種別 & "'"
>  Me.Filter = strFil
>  Me.FilterOn = True
>'→追加
>  Me.txt件数 = Me.Recordset.RecordCount
>End Sub
>
>こんな感じでいかがでしょうか。

申し訳ありませんが、上記をそのまま使ってみたのですが、やはり、「件数」部分が
でてきません。
表形式に変えてからは、下記のようなことになってますので、エラーがでてVBAが開く
ということはないのですが、それまでは上記構文の「検索」部分が黄色くなって
「Recordset」がアクティブになってエラー表示になってたような気がします。
あと、「検索」ボタンをクリックすると、どんな選択をしても、一番上のレコード(最初に入れたID:1のもの)しか絞られてこないのですがどうしてでしょうか?
AND検索なはずなのに・・・。仮に新規レコードで一番最初のレコードと同じ検索条件のものを追加すると、どんな条件で検索かけてもこの2件が表示されてしまいます。

>>2.あと、帳票型フォームですが、
>
これは、表形式型で作成しなおしたら、表示できました。
今のところ、全件表示されてます。
ちなみに、ver97なので、フォームのプロパティは「標準」タブしかでてこないです。

【5987】Re:検索用のフォーム作成
回答  小僧  - 05/8/24(水) 11:55 -

引用なし
パスワード
   ▼QOO さん:
こんにちは。

>「Recordset」がアクティブになってエラー表示になってたような気がします。

Ac97で検証したところ、再現致しました。

以下修正をお願いします。

>>'→追加
>>  'Me.txt件数 = Me.Recordset.RecordCount
'→修正
   Me.txt件数 = Me.RecordsetClone.RecordCount

>「検索」ボタンをクリックすると、どんな選択をしても、
>一番上のレコード(最初に入れたID:1のもの)しか絞られてこない

こちらについては再現しませんね。

>  Me.Filter = strFil
'→追加
    MsgBox strFil
>  Me.FilterOn = True

とでもして、変数:srtFil の値が思い通りになっているかを確認されてみて下さい。

【5994】Re:検索用のフォーム作成
お礼  QOO  - 05/8/24(水) 13:59 -

引用なし
パスワード
   ▼小僧 さん:


>>>'→追加
>>>  'Me.txt件数 = Me.Recordset.RecordCount
>'→修正
>    Me.txt件数 = Me.RecordsetClone.RecordCount

→今度は、「Me.txt件数」でアクティブになり「コンパイルエラー:メソッドまたはデータメンバがみつかりません。」となります。
>
>>「検索」ボタンをクリックすると、どんな選択をしても、
>>一番上のレコード(最初に入れたID:1のもの)しか絞られてこない
>
>こちらについては再現しませんね。
>
>>  Me.Filter = strFil
>'→追加
>    MsgBox strFil
>>  Me.FilterOn = True
>
>とでもして、変数:srtFil の値が思い通りになっているかを確認されてみて下さい。

→メッセージを確認したところ、月がおかしかったようです。最初のレコードの月が表示されてます。前回教えて頂いたデータ型がテキスト型にしてるのが原因でしょうか?
でも、今から変更してしまうと、レコードが失われたりするので、できればテキスト型で「01」月ではなく「1」月という表記で値リストに「1;2;3;・・・」と入れたいのですが、無理でしょうか?

【5995】Re:検索用のフォーム作成
質問  QOO  - 05/8/24(水) 14:00 -

引用なし
パスワード
   小僧さん

すいません。またもや・・・。
1個前のレスは「質問」です。

【5999】Re:検索用のフォーム作成
発言  小僧  - 05/8/24(水) 14:45 -

引用なし
パスワード
   ▼QOO さん:
こんにちは。

>→今度は、「Me.txt件数」でアクティブになり
>「コンパイルエラー:メソッドまたはデータメンバがみつかりません。」
>となります。

txt件数 は当方が検証するためにフォームにつけた名前です。
QOO さんのフォームに、合計を表示したいテキストボックスを配置して
そのテキストボックスの名前にして下さい。


>できればテキスト型で「01」月ではなく「1」月という表記で値リストに
>「1;2;3;・・・」と入れたいのですが、無理でしょうか?

こちらが良く解らないのですが、
現在テーブルに入っている値は「1」「01」どちらでしょうか?

テーブルに入っている値が 「01」 で
コンボボックスに入っている値 「1」 と比較させたいのであれば、

>"月 = '" & Me.月 & "' AND " _

'修正
"月 = '" & Format(Me.月,"00") & "' AND " _

のような形になりますね。

【6003】Re:検索用のフォーム作成
質問  QOO  - 05/8/24(水) 17:49 -

引用なし
パスワード
   小僧 さん

>
>>→今度は、「Me.txt件数」でアクティブになり
>>「コンパイルエラー:メソッドまたはデータメンバがみつかりません。」
>>となります。
>
>txt件数 は当方が検証するためにフォームにつけた名前です。
>QOO さんのフォームに、合計を表示したいテキストボックスを配置して
>そのテキストボックスの名前にして下さい。

→サンプルの「txt」はフォーム名の一部だったんですね。
てっきりVBA言語かと思ってました。
私のフォーム名も「件数」だったので、これで件数表記うまく表記されました。

>>できればテキスト型で「01」月ではなく「1」月という表記で値リストに
>>「1;2;3;・・・」と入れたいのですが、無理でしょうか?
>
>こちらが良く解らないのですが、
>現在テーブルに入っている値は「1」「01」どちらでしょうか?
>
>テーブルに入っている値が 「01」 で
>コンボボックスに入っている値 「1」 と比較させたいのであれば、
>
>>"月 = '" & Me.月 & "' AND " _
>
>'修正
> "月 = '" & Format(Me.月,"00") & "' AND " _
>
→テーブルもフォームも「1」月(半角)のテキスト型で入力しています。
そのまま上記使っていいですか?

【6007】Re:検索用のフォーム作成
回答  小僧  - 05/8/25(木) 9:11 -

引用なし
パスワード
   ▼QOO さん:
おはようございます。

>テーブルもフォームも「1」月(半角)のテキスト型で入力しています。

と言う事でしたら、

>  strFil = "年 = '" & Me.年 & "' AND " _
>      & "月 = '" & Me.月 & "' AND " _
>      & "種別 = '" & Me.種別 & "'"

のままですが、一つ思い当たることが…。

ヘッダに配置している検索用の「年」を表すコンボボックス名の名前を

cmb年
cmb月
cmb種別

として、

  strFil = "年 = '" & Me.cmb年 & "' AND " _
      & "月 = '" & Me.cmb月 & "' AND " _
      & "種別 = '" & Me.cmb種別 & "'"

でどうでしょうか。

【6016】Re:検索用のフォーム作成
質問  QOO  - 05/8/25(木) 17:10 -

引用なし
パスワード
   小僧 さん:
こんにちは。


>>  strFil = "年 = '" & Me.年 & "' AND " _
>>      & "月 = '" & Me.月 & "' AND " _
>>      & "種別 = '" & Me.種別 & "'"
>
>のままですが、一つ思い当たることが…。
>
>ヘッダに配置している検索用の「年」を表すコンボボックス名の名前を
>
>cmb年
>cmb月
>cmb種別
>
>として、
>
>  strFil = "年 = '" & Me.cmb年 & "' AND " _
>      & "月 = '" & Me.cmb月 & "' AND " _
>      & "種別 = '" & Me.cmb種別 & "'"
>
>でどうでしょうか。

コンボボックスの名前を変更をcmb〜と変更して上記を試してもやはり、NO,1のレコードだけを抽出してしまいます。
検索条件の「種別」「年」「月」はどれも値リストで、値集合ソースは手で入れました。
クエリからうまくコンボが作れなかったので、手で入れているのですが、これがまずいのでしょうか?(入力はクエリと一致するよう半角でいれてるのですが・・・)

【6018】Re:検索用のフォーム作成
発言  小僧  - 05/8/25(木) 17:18 -

引用なし
パスワード
   ▼QOO さん:
こんにちは。

うーん、何故でしょう…。

cmb年に「2005」
cmb月に「8」
cmb種別に「正式」

と入れた時に、
メッセージボックスの「strFil」にどのような値が入っていますでしょうか?

【6020】Re:検索用のフォーム作成
質問  QOO  - 05/8/25(木) 17:36 -

引用なし
パスワード
   ▼小僧 さん:

>cmb年に「2005」
>cmb月に「8」
>cmb種別に「正式」
>
>と入れた時に、
>メッセージボックスの「strFil」にどのような値が入っていますでしょうか?

→年は「05」表記としています。
最初のレコードでない条件(上記の条件)で入れるとmsgは「年=‘05’AND 月=‘2’AND 種別=‘概算’」と表示されます。(これは最初のレコードの内容そのままです)

【6027】Re:検索用のフォーム作成
発言  小僧  - 05/8/26(金) 9:03 -

引用なし
パスワード
   ▼QOO さん:
おはようございます。

フォームに配置しているコントロールの名前のせいだと思うのですが…。

もう一度確認させて頂きたいのですが、

検索用のコンボボックス:
「cmb年」、「cmb月」、「cmb種別」 → フォームヘッダー

結果が表示されるテキストボックス:
「年」「月」「種別」  →  詳細

で間違いありませんよね?

【6071】Re:検索用のフォーム作成
発言  QOO  - 05/8/26(金) 15:47 -

引用なし
パスワード
   小僧 さん

こんにちは。

>もう一度確認させて頂きたいのですが、
>
>検索用のコンボボックス:
>「cmb年」、「cmb月」、「cmb種別」 → フォームヘッダー
→はい。配置としてはヘッダーに「種別」「年」「月」でいれており
プロパティで確認するとコンボボックス→「cmb種別」「cmb年」「cmb月」と入れております。
ラベルは「cmb」は要りませんよね?


>結果が表示されるテキストボックス:
>「年」「月」「種別」  →  詳細

はい。詳細に入れております。表示されるテキストボックスは、この他に何点かクエリからもってきています。

【6076】Re:検索用のフォーム作成
発言  小僧  - 05/8/26(金) 16:07 -

引用なし
パスワード
   ▼QOO さん:
こんにちは。

>→はい。配置としてはヘッダーに「種別」「年」「月」でいれており
>プロパティで確認するとコンボボックス→「cmb種別」「cmb年」「cmb月」と入れ>ております。
>ラベルは「cmb」は要りませんよね?

ラベルは要りませんね。

すみませんがもう一つ確認です。

「cmb種別」「cmb年」「cmb月」のコントロールソースは空になっていますでしょうか?

【6077】Re:検索用のフォーム作成
発言  QOO  - 05/8/26(金) 16:22 -

引用なし
パスワード
   小僧 さん

>「cmb種別」「cmb年」「cmb月」のコントロールソースは空になっていますでしょうか?

→3つとも空になってます。

ひとつ思ったのですが・・・。97ではこの作業ができないってことは考えられますか?
実は参考書を昨日見てたのですが、それは97,2000,xp対応で各ケースごとにsampleがあるのですが、その中で“and検索”で抽出するケースがあったので、家にはアクセスがないので、会社のpcで見ようと思い、そのサンプルno,のファイルを見てみたのですが、それが、97の方には無いんですよ。2000以降対応用のフォルダにはありました(でも、こちらはpcのverが違うため見れないんですが)。

【6079】Re:検索用のフォーム作成
発言  小僧  - 05/8/26(金) 16:49 -

引用なし
パスワード
   ▼QOO さん:
こんにちは。

>97ではこの作業ができないってことは考えられますか?

いえ、当方でAc97でも確認しています。
以下、コードそのままコピー&ペーストです。

Private Sub 抽出_Click()
Dim strfil As String
  strfil = "ポジション = '" & Me.cmbポジション & "' AND " _
      & "年齢 = '" & Me.cmb年齢 & "'"
  Me.Filter = strfil
    MsgBox strfil
  Me.FilterOn = True
'→追加
  Me.txt件数 = Me.RecordsetClone.RecordCount
End Sub

上の方で使った某球団の年棒のヤツを使っているのですが
Access97でも動作はしているんですよね。

あとは mdb の不具合が考えられるとして、
新規mdb に全てインポートしなおして同じ事象でしたら、
申し訳ないのですがちょっと原因が解りません…。

【6083】Re:検索用のフォーム作成
質問  QOO  - 05/8/29(月) 11:50 -

引用なし
パスワード
   小僧 さん

>以下、コードそのままコピー&ペーストです。
>
>Private Sub 抽出_Click()
>Dim strfil As String
>  strfil = "ポジション = '" & Me.cmbポジション & "' AND " _
>      & "年齢 = '" & Me.cmb年齢 & "'"
>  Me.Filter = strfil
>    MsgBox strfil
>  Me.FilterOn = True
>'→追加
>  Me.txt件数 = Me.RecordsetClone.RecordCount
>End Sub
>
>上の方で使った某球団の年棒のヤツを使っているのですが
>Access97でも動作はしているんですよね。
>
>あとは mdb の不具合が考えられるとして、
>新規mdb に全てインポートしなおして同じ事象でしたら、
>申し訳ないのですがちょっと原因が解りません…。

→おはようございます。
小僧さんの上記のサンプルで試してみましたところ、

直前に表示される検索条件は確かに任意で選択した条件が表示されていましたが、
いざ「OK」をクリックすると「実行時エラー‘2001’:直前の操作はキャンセルされました。」とでて
Me.Filter = strfil(2度目) または、
Me.FilterOn = True(1度目)

でデバッグがかかってしまいます。
やはり別の方法考えた方法がよいでしょうか?

【6084】Re:検索用のフォーム作成
発言  小僧  - 05/8/29(月) 16:16 -

引用なし
パスワード
   ▼QOO さん:
こんにちは。

>  strfil = "ポジション = '" & Me.cmbポジション & "' AND " _
>      & "年齢 = '" & Me.cmb年齢 & "'"

この記述は年齢がテキスト型の時の記述です。
こちらでしたら、テーブルの「年齢」フィールドのデータ型を
「テキスト型」にして下さい。

年齢を数値型で行う場合は、

  strFil = "ポジション = '" & Me.cmbポジション & "' AND " _
      & "年齢 = " & Me.cmb年齢

となります。
(テキスト型の場合は「"」や「'」で括る必要が出てきます。)

【6218】Re:検索用のフォーム作成
お礼  QOO  - 05/9/8(木) 0:18 -

引用なし
パスワード
   小僧 さん

こんばんは。
御礼のほうが遅くなってしまい、申し訳ありません。
小僧さんのおっしゃる通り、既存のテーブルをエクスポートし、
再度作成してみましたら、うまくいきました。
本当に、ありがとうございました。
これを元に、自分なりにもっと勉強していこうと思います。

1633 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078242
(SS)C-BOARD v3.8 is Free