Access VBA質問箱 IV

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

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


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

【10848】リストボックスについて D_M 08/12/10(水) 20:33 質問[未読]
【10849】Re:リストボックスについて neptune 08/12/10(水) 21:22 発言[未読]
【10853】Re:リストボックスについて D_M 08/12/11(木) 12:47 お礼[未読]
【10855】Re:リストボックスについて neptune 08/12/11(木) 14:55 発言[未読]
【10858】Re:リストボックスについて D_M 08/12/11(木) 17:53 お礼[未読]
【10859】Re:リストボックスについて neptune 08/12/11(木) 22:08 発言[未読]
【10862】Re:リストボックスについて D_M 08/12/12(金) 12:43 お礼[未読]
【10856】Re:リストボックスについて neptune 08/12/11(木) 15:02 発言[未読]

【10848】リストボックスについて
質問  D_M  - 08/12/10(水) 20:33 -

引用なし
パスワード
   ACCESSをやり始めてまだ間もないですが、
ややイメージに近いもの(見積書作成)ができてきたのですが、
現在、検索と代入でいろいろ調べたのですが、
パニック状態になっています。

どのような処理を行いたいかと言うと、
検索フォーム上でテキストボックスに品名を入れると、
(形状やサイズが違うため同名のものを検索したいのです。)
リストボックスに反映させる処理をし、
品名を指定後見積フォームに代入と言う形にしたいと思っています。

現在は、テキストボックスに品名を入力すると、
名前でカウントはしているのですが、リストボックスに反映されないので、
何か設定の間違いなのか、考えられることをご教授していただけたら
幸いだと思っています。
どなたか、お力をお貸しください。

【10849】Re:リストボックスについて
発言  neptune  - 08/12/10(水) 21:22 -

引用なし
パスワード
   ▼D_M さん:
こんにちは
すみません。最近非連結ばかり使ってAccessの機能は
で真剣にやってないのでかなり忘れてますので
間違っているかもしれませんが、取りあえず書いてみます。

>現在は、テキストボックスに品名を入力すると、
>名前でカウントはしているのですが、リストボックスに反映されないので、
>何か設定の間違いなのか、考えられることをご教授していただけたら
>幸いだと思っています。
カウントしているってのがよく分かりませんが、
>リストボックスに反映されない
のは、検索とか、filterとかかけている筈ですが、その結果を
ListBoxに表示するのには恐らくRequery(再クエリ)しないと駄目なのでは?

非連結なら
クエリでデータを取得してデータをListBoxに追加するとか、
値集合ソースにSQL書いてやってRequeryするとかだったと思うんですが。

どうやって、ListBoxにデータを抽出、表示、連結、非連結などの情報が
欠落しているので私にわかるのはこんな所です。

【10853】Re:リストボックスについて
お礼  D_M  - 08/12/11(木) 12:47 -

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

レスありがとうございます。

>どうやって、ListBoxにデータを抽出、表示、連結、非連結などの情報が
>欠落しているので私にわかるのはこんな所です。

確かに情報が欠落していました。申し訳ございません。
使用しているクエリは、「Q_Item」としています。
中身は、品名CD・品番・品名・単価となっています。
品名抽出条件に、Froms!フォーム!テキスト0と記述しています。

フォームはレコードソースにQ_Itemとしています。
テキスト0(検索品名を入力させるための)は非連結で更新後処理にマクロ(再クエリ)を設定しています。

リストボックスについては、
集合タイプ テーブル/クエリ
集合ソース Q_Item
更新後処理に上記の再クエリマクロを使用。

と、言う感じになっています。
フォームの再描画みたいなものがコマンドボタンウィザードに有ったので、
これを使うとリストボックスには表示されるようになったのですが、
タイムリーに表示はできない常態です。

また、
>カウントしているってのがよく分かりませんが、
クエリの抽出条件があっているか、きちんと動いているか確認したかったため、
新たにテキストボックスを作ってDcountで件数をカウントしてみたんです。

これから再度チャレンジしてみますので、後ほど報告させていただきます。
何かお気づきの点がございましたら、レスいただけたら幸いです。

【10855】Re:リストボックスについて
発言  neptune  - 08/12/11(木) 14:55 -

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

>リストボックスについては、
>集合タイプ テーブル/クエリ
>集合ソース Q_Item
>更新後処理に上記の再クエリマクロを使用。
ならこれで良いと思うんですけどね。。。。

>フォームの再描画みたいなものがコマンドボタンウィザードに有ったので、
>これを使うとリストボックスには表示されるようになったのですが、
>タイムリーに表示はできない常態です。

Form オブジェクトのRepaint メソッド
////////////以下引用/////////////////////
Repaint メソッドの機能は、Refresh メソッドや [レコード] メニューの
[再表示] の機能とは異なります。後者はいずれも、フォームやデータシートに
含まれるレコードの変更を画面に反映します。Repaint メソッドは、他のタスク
の実行のために再描画されていない画面を更新するだけです。
//////////////////////////////////////////
なんですけどね。。。

でも、それで表示されるなら、Form オブジェクトのRepaint メソッド
を実行すれば問題解決じゃないですか?でもVBAを使ってないなら
タイミングが・・・思い付かない。。。

>更新後処理に上記の再クエリマクロを使用。
ってのが気になります。
リストボックス.Requery
と直に書いてみては?
で、関数(Function)にしておけば、マクロとして扱えたんじゃないかな???

未検証でごめんなさい。

【10856】Re:リストボックスについて
発言  neptune  - 08/12/11(木) 15:02 -

引用なし
パスワード
   ▼D_M さん:
追記
もし、VBAでコード書いているならそれをUPしてくれた方が
あっさり解決するような気がします。

【10858】Re:リストボックスについて
お礼  D_M  - 08/12/11(木) 17:53 -

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

こんばんわ。
neptuneさんの指摘通り、再描画ではなく、再表示でした。

一応、教えていただき思案してみた結果、
下記のコードでリアルタイムに動くことができました。


Private Sub テキスト0_AfterUpdate()
Me!テキスト0.Requery
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
End Sub

Private Sub リスト2_AfterUpdate()
Me!リスト2.Requery
End Sub

素人ながら書いてみたので、見苦しいとは思いますが、、、

ご教授ありがとうございました。
また、思い悩んだとききますので、よろしくお願いいたします。

【10859】Re:リストボックスについて
発言  neptune  - 08/12/11(木) 22:08 -

引用なし
パスワード
   ▼D_M さん:
もう見ないかな??

>Private Sub テキスト0_AfterUpdate()
>Me!テキスト0.Requery
>DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
↑これが何やってるか知りませんが、
Me!リスト2.Requery
>End Sub
で、ないと
>Private Sub リスト2_AfterUpdate()
に書いていたのでは、循環呼び出し?でリスト2が変更する度に呼び出される
ので、宜しくないです。

【10862】Re:リストボックスについて
お礼  D_M  - 08/12/12(金) 12:43 -

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

こんにちわ。

neptuneさんの、ご教授によりなんとな〜く表示されなかった原因がわかった気がします。
マクロで再クエリしてたころの考え方を基本にしていたので、
再クエリ〜再表示の手順にすればいいのかと思っていました。
(再クエリで表示されなかったため。)

>>Private Sub テキスト0_AfterUpdate()
>>Me!テキスト0.Requery
>>DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70
>↑これが何やってるか知りませんが、

コマンドボタンをウィザードでつくりコードを見て、
この部分で再表示してる感じがしたので、記述してみました。

>Me!リスト2.Requery
>>End Sub
>で、ないと
>>Private Sub リスト2_AfterUpdate()
>に書いていたのでは、循環呼び出し?でリスト2が変更する度に呼び出される
>ので、宜しくないです。


更新されるたびに・・・・
記述しながら自分もそう思いました。

原因だったと思われるのは、再クエリのマクロを使っていたとき、
個別に再クエリしていて、
>>Private Sub テキスト0_AfterUpdate()
の中でリストの再クエリができていなかったのが、原因だったと思います。
違うかもしれないですけど。。。。

今後はこれをベースにもう少し使い勝手良く改良して行きますので、
行き詰ったらまたきます。

いろいろありがとうございました。
今後ともよろしくお願いいたします。

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