アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在、下記のような構文で、「フィルタ」というテキストボックスに文字を入力し、「フィルタ実行」というボタンを押すと、フィルタがかかるように作っています。
----------------------------------
Private Sub フィルタ実行_Click()

Me.Filter = "故障処理票番号 like '" & Me!フィルタ & "'"
Me.FilterOn = True

End Sub
----------------------------------
※故障処理票番号のデータ型はテキスト型。
頭にアルファベット2文字と4桁の数字からできています。例:AA0001
※フォームは表形式。

2つ質問があります。
1)テキストボックスに入力した値で始まる文字をすべてフィルタで抽出する方法。
つまり、"AA"で始まる番号をすべて検索したい場合に、テキストボックスに"*"を入力することなく、結果が返る方法を教えてください。
2)フィルタで抽出したレコードをカレントレコードにする方法。
複数あった場合には、レコードセレクタで選択したレコードをカレントレコードとする方法を教えてください。
(ボタンを押すと、カレントレコードとなっているレコードの詳細表示(単票フォーム)に飛ぶように設定しているので、カレントレコードを移動する必要があります。ボタンは詳細セクションのそれぞれのレコードの横に表示されるよう作成しています)

VBA独学&初心者なので、多分、初歩的な質問なんだと思います。どうぞよろしくお願いします!!

A 回答 (4件)

起票Fフォームはテーブルを元に作成していますか?


言い換えると、起票Fのレコードソースはそのテーブルになっていますか?
あと、DAOの参照設定はちゃんとしてますか?

この回答への補足

起票Fフォームと起票一覧Fフォームのレコードソースは同じクエリです。

また、DAOの参照設定はご指示いただいたとおりにしましたが。。。

補足日時:2003/08/11 09:35
    • good
    • 0
この回答へのお礼

色々とご親切にご回答いただきまして、ありがとうございました。
結局運用面で調整することにしました。
せっかくご回答いただいたのに、すみません。
でもきっと、教えていただいたことはこれから役に立つでしょう。
本当にどうもありがとうございました。

お礼日時:2003/08/12 14:02

GotoRecordメソッドでは上手く行かないと思います。


Bookmarkプロパティを使用します。
こんな感じでしょうか。
VBE画面のメニューの[ツール]→[参照設定]で、
「Microsoft DAO X.X Object Library」
にチェックを入れてください。


Private Sub 単票へ_Click()

Dim rs As DAO.Recordset

DoCmd.OpenForm "起票F", , , Me.Filter
Set rs = Forms!起票F.Recordset.Clone
rs.FindFirst "故障処理票番号 = '" & Me!故障処理票番号.Value & "'"
Forms!起票F.Bookmark = rs.Bookmark
DoCmd.Close acForm, "起票一覧F"
Set rs = Nothing

End Sub

この回答への補足

ご回答、ありがとうございます!

ご指導いただきました設定をし、コードを丸々コピペさせていただきました(^^;
ですが、「型が一致しません」というエラーが出て、デバッグすると「Set rs = Forms!起票F.Recordset.Clone」の部分が黄色表示になります。。。
ナンデデショウ??

何度もご回答いただいているのに、赤ん坊みたいでごめんなさい。
すみませんが、教えていただけますか?

補足日時:2003/08/08 17:31
    • good
    • 0

>詳細セクションに作成したボタンを押すと、


その手の全体的な操作をするボタンは、フォームのヘッダーかフッターにおきましょう。
ちなみに、フィルタというテキストボックスも、フィルタ実行というボタンも全て、フォームヘッダーかフッターにおきましょう。
それなら上手く行くはずです。

この回答への補足

ご回答、ありがとうございます。
単票に移るボタンをヘッダーに移しましたが、やはり結果は同じでした。。。
ちなみに、フィルタの実行に関するコントロールはヘッダーにあります。

単票に移るボタンを詳細セクションに置いたのは、見たいレコードの直ぐ横にあるボタンを押せば詳細が見られる、という方が、うっかりレコードの選択を忘れて他のデータが表示されるのを防げるカナ?と思ったワケで。。。

私の作成したDBを実際使うのは、まったく見知らぬ人なので。。。

補足日時:2003/08/08 15:53
    • good
    • 0

こんにちは。

maruru01です。

1)

Me.Filter = "故障処理票番号 like '" & Me!フィルタ & "*'"

でいいと思います。

2)
意味がよくわかりません。
レコードセレクタ(移動ボタンのこと?)で移動したら、そのままカレントレコードになると思いますが。

この回答への補足

ご回答ありがとうございます!!
1)に関しては、解決しました!ありがとうございます♪たすかりました~☆

2)に関してなんですが、私もmaruru01さんのおっしゃるとおり、レコードセレクタで移動したら、そのままカレントレコードとして認識されるものだと思って今した。。。が、
たとえば、すべてのレコードの数が10件あったとします。
で、フィルタをかけた結果、1件目に表示されたレコードは、全体の5番目だったとします。
そして、詳細セクションに作成したボタンを押すと、その表示されたレコード(つまり全体の5番目)のレコードではなく、全体の1番目のレコードの単票に飛んでしまうんです。。。(T0T)
ちなみに、単票に飛ぶボタンは下記のように作成しています。

---------------------------
Private Sub 単票へ_Click()
DoCmd.OpenForm "起票F"
'起票Fを開くとき、起票一覧Fで表示しているレコードに飛ぶ。
DoCmd.GoToRecord , "起票F", acGoTo, CurrentRecord
DoCmd.Close acForm, "起票一覧F"

End Sub
----------------------------
※ボタン名:単票へ
※単票フォーム名:起票F
※表形式フォーム名:起票一覧F
※起票Fと起票一覧Fのレコードソースは同じクエリです。

"CurrentRcord"ではなくて、本当は"同じ故障処理票番号を持つレコードに飛ぶ"という形にしたほうが良いのだと思うのですが、ヘルプなどを参考にあれこれ作ってみたのですけど、エラーばかり返ってあきらめてしまいました。。。
もし、"同じ故障処理票番号を持つレコードに飛ぶ"という形の方がお分かりになるようでしたら、そちらを教えていただけますか???
甘えてしまってごめんなさい~。。。

補足日時:2003/08/08 14:30
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A