Access VBA質問箱 IV

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

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


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

【10946】帳票フォームでレコード絞込み(ADO) 眠眠 09/1/21(水) 17:14 質問[未読]
【10947】Re:帳票フォームでレコード絞込み(ADO) hatena 09/1/22(木) 11:52 回答[未読]
【10951】Re:帳票フォームでレコード絞込み(ADO) 眠眠 09/1/23(金) 10:51 発言[未読]
【10952】Re:帳票フォームでレコード絞込み(ADO) hatena 09/1/23(金) 15:37 回答[未読]
【10961】Re:帳票フォームでレコード絞込み(ADO) 眠眠 09/1/26(月) 10:30 お礼[未読]

【10946】帳票フォームでレコード絞込み(ADO)
質問  眠眠  - 09/1/21(水) 17:14 -

引用なし
パスワード
   Accessは学校で習得しましたが、8年のブランクがあり、ほとんど覚えていない状態です。
初心者に近いと思いますが、宜しくお願い致します。
[WinXP:Access2002]

【フォームの形】
このフォームでの手動でのデータの変更は一切なし。検索のみ。
ただし、規定の位置をダブルクリックする事で、データの自動更新、詳細画面を開く。
データ自動更新>IEよりデータを抜出して、レコード更新。
詳細画面>詳細情報を別フォーム(単票形式)で開く。

【フォーム>レコードセット方法】
3つのテーブルをADOで開き、それをフォームのRSに代入して帳票表示しています。

Set rs = New ADODB.Recordset
rs.Open mySQL, cn, adOpenKeyset, adLockReadOnly
Set Me.Recordset = rs

【絞込み】
最初はテーブルの全レコードを表示させています。
絞込条件を入力すると絞り込んだ結果をフォームに表示させたいのですが、ここで詰まってます。

rs.Filter = "(完了日 >= #2009/01/01#) and (完了日 <= #2009/01/21#)"
で、実行すると rs.RecordCount は(1536件中)414となります。

ただフォームの表示が絞り込まれません。1536件のまま。
フォームをクリックすると、画面の表示位置が検索条件に一致した位置に変わるだけです。

フォームのRSを再セットしようとしても、
Set Me.Recordset = rs
【プロシージャの呼び出し、または引数が不正です】と表示されます。

駄目元で、
Me.Filter = "(完了日 >= #2009/01/01#) and (完了日 <= #2009/01/21#)"
としても、Me.FilterON の行でエラーになります。

どのように対処すればよろしいでしょうか?
回答や別の方法の提案、参考になるサイトなどお教えください。
宜しくお願い致します。

【10947】Re:帳票フォームでレコード絞込み(ADO)
回答  hatena  - 09/1/22(木) 11:52 -

引用なし
パスワード
   >Set rs = New ADODB.Recordset
>rs.Open mySQL, cn, adOpenKeyset, adLockReadOnly
>Set Me.Recordset = rs

MDBファイルでしょうか。
なぜ、ADOなんでしょうか。
ここは、普通にレコードソースにテーブルかSQLを設定すれば
問題なく、また、シンプルにできると思いますが。

Me.RecordSource = mySQL

>rs.Filter = "(完了日 >= #2009/01/01#) and (完了日 <= #2009/01/21#)"

Me.Filter = "(完了日 >= #2009/01/01#) and (完了日 <= #2009/01/21#)"
Me.FilterOn = True


------------------------------
hatena Chips
pub.ne.jp/hatena/
------------------------------

【10951】Re:帳票フォームでレコード絞込み(ADO)
発言  眠眠  - 09/1/23(金) 10:51 -

引用なし
パスワード
   hatenaさん、ご提案ありがとうございます。
返信が遅くなり申し訳有りません。

MDBファイルです。

>なぜ、ADOなんでしょうか。
当初、レコードソースにSQLを設定して作成してたのですが、
ダブルクリックで更新させる処理を追加したため、DBを読取で開く
必要が出来ました。

理由は、更新処理を元々別の処理で使用していたプロシージャを流用した
ため。そのプロシージャ独自でRSを作成して編集するためです。

フォーム独自のレコードソースに設定して、DBを読取で開こうと思うと
更新の許可等を全て「いいえ」に設定する必要があるようですが、その
ようにすると、複数ある検索ボックスが編集不可になってしまう。

Me.Filterで設定できると、OR結合・AND結合の制限なく絞込みの設定も
簡単にできるのですが、その方が助かるのは助かるのですが…。

流用したプロシージャを大幅に変更するのではなく、何か対策があれば
と思い、質問させていただきました。

が、もしかして、サブフォームを使用して
検索フォームと別に読取でDBを開くフォームを作成した方が宜しいでしょうか?

==================
仕様が少し追加されました。
日付で絞り込んだ結果を複数一度に更新をかけるようになりました。
こちらもダブルクリックで更新する場合と同じプロシージャを利用します。

当方の勘違いや、説明不足の部分があれば、突っ込みお願いします。

【10952】Re:帳票フォームでレコード絞込み(ADO)
回答  hatena  - 09/1/23(金) 15:37 -

引用なし
パスワード
   まず、

>フォーム独自のレコードソースに設定して、DBを読取で開こうと思うと
>更新の許可等を全て「いいえ」に設定する必要があるようですが、その
>ようにすると、複数ある検索ボックスが編集不可になってしまう。

フォームでは参照だけで、更新したくないと言うことでしょうか。
ならば、レコードソースを設定して、「レコードセット」プロパティを
「スナップショット」にすれば連結コントロールは編集不可で、
非連結コントロールは編集可能になります。

あとは、よく分かりませんが、

> そのプロシージャでRSを作成して編集するため

ということと、フォームにADOのレコートセットをセットすることに
どのような関連があるのでしょうか。


------------------------------
hatena Chips
pub.ne.jp/hatena/
------------------------------

【10961】Re:帳票フォームでレコード絞込み(ADO)
お礼  眠眠  - 09/1/26(月) 10:30 -

引用なし
パスワード
   hatenaさん、ご回答ありがとうございます。

解決です。
スナップショットの存在を忘れておりました。
わざわざダイナセットにしてました(汗

>> そのプロシージャでRSを作成して編集するため
>ということと、フォームにADOのレコートセットをセットすることに
>どのような関連があるのでしょうか。

DB読取で開くには、更新の許可等を全て「いいえ」にしないと
できないと思い込んでいたせいです。
→だからRSを作成しないと無理?と…。

まだまだ課題が多く、また質問させてもらうことがあるかと思いますが、
宜しくお願いいたします。

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