No63527.検索ボタン2
| タイトル | : 検索ボタン2 |
| 記事No | : 63527 |
| 投稿日 | : 2008/10/27(Mon) 14:11 |
| 投稿者 | : ニャロ |
OS:2000 Access Version:2003
どうもこんにちは。 前回も検索ボタンについて教えていただきましたが、 今回、職員登録での検索フォームを作成中、 前回教えていただいた、
-------------------------------------------------------------------- InputBox関数を使っていますが、他にはフォームヘッダ部分に 1.検索氏名の入るテキストボックス(txt_kensakuN) 2.処理日の入るテキストボックス(txt_SyoriD) ( )内は、テキストボックスコントロールの名前 という2つのテキストボックスとコマンドボタンを貼り付けて ボタンのクリック時にVBAで Private Sub コマンド1_Click
Me.Filter = "漢字氏名 = '" & txt_kensakuM.Value & "'and 処理日 = '" & txt_SyoriD & "'" > Me.FilterOn = True Me.Requery
If Me.Recordset.RecordCount=0 then msgbox("該当者がいませんでした。") Exit Sub End If End Sub
上記の漢字氏名と処理日は、フィールド名です。
----------------------------------------------------------------
を、使用して作っていたのですが、 今回は、職員登録のため、 中身が ****************************** 職員番号 漢字氏名 カナ氏名 ****************************** のために、 処理日がまったく関係なくなっているために 自分で --------------------------------------------------------------- Private Sub コマンド1_Click
Me.Filter = "漢字氏名 = '" & txt_kensakuM.Value & "'" Me.Filter = "漢字氏名 like '*' & '" & txt_kensakuM.Value & "'"
Me.FilterOn = True Me.Requery
If Me.Recordset.RecordCount=0 then msgbox("該当者がいませんでした。") Exit Sub End If End Sub
------------------------------------------------------------------------- の、ように変更してみたのですが、 うまく動いてくれません。
解除ボタンも ------------------------------------------ Private Sub cmd_実施_Click()
Me.Filter = "処理日 = '" & [forms]![メニュー]![年月] & "'" Me.FilterOn = True
End Sub
------------------------------------------- というイベントプロシージャで作成していたのですが、 職員登録では、処理日が関係ないために どのように変えればいいのかわからなくなってしまいました。
教えていただけたら助かります。 お願いいたします。
|
| タイトル | : Re: 検索ボタン2 |
| 記事No | : 63529 |
| 投稿日 | : 2008/10/27(Mon) 14:49 |
| 投稿者 | : ほげ |
例えば、検索項目が
職員番号(数字型) 漢字氏名 カナ氏名(あいまい検索)
なら
DIM X AS STRING
IF NOT ISNULL(ME.TXT職員番号) THEN X = X & " AND 職員番号 = " & ME.TXT職員番号 IF NOT ISNULL(ME.TXT漢字氏名) THEN X = X & " AND 漢字氏名 = '" & ME.TXT漢字氏名 & "'" IF NOT ISNULL(ME.TXTカナ氏名) THEN X = X & " AND カナ氏名 LIKE '*" & ME.TXTカナ氏名 & "*'" Me.Filter = MID(X, 6) Me.FilterOn = True
解除は以下でOK? Me.FilterOn = False
|
| タイトル | : Re^2: 検索ボタン2 |
| 記事No | : 63531 |
| 投稿日 | : 2008/10/27(Mon) 15:19 |
| 投稿者 | : ニャロ |
ほげ様
お返事ありがとうございます。
> 例えば、検索項目が > > 職員番号(数字型) > 漢字氏名 > カナ氏名(あいまい検索) > > なら > > DIM X AS STRING > > IF NOT ISNULL(ME.TXT職員番号) THEN X = X & " AND 職員番号 = " & ME.TXT職員番号 > IF NOT ISNULL(ME.TXT漢字氏名) THEN X = X & " AND 漢字氏名 = '" & ME.TXT漢字氏名 & "'" > IF NOT ISNULL(ME.TXTカナ氏名) THEN X = X & " AND カナ氏名 LIKE '*" & ME.TXTカナ氏名 & "*'" > Me.Filter = MID(X, 6) > Me.FilterOn = True
試してみましたら、 最初は検索できたのですが 最初に検索した(例)ヤマダ で検索致しましたら 次に キムラ を入力して実施をクリックしても ヤマダがでてきてしまいます↓汗
解除の方も > 解除は以下でOK? > Me.FilterOn = False だけでしたら うんともすんとも なりません↓
何かが足りないのでしょうか?
追伸:抽出画面の説明 抽出したい名前を打ち込むテキストボックス名は「txt_kensakuM」です。 実施ボタン・解除ボタンがある
です。
よろしくお願いします|;゜Å゜)
|
| タイトル | : Re^3: 検索ボタン2 |
| 記事No | : 63534 |
| 投稿日 | : 2008/10/27(Mon) 16:50 |
| 投稿者 | : ほげ |
> 最初は検索できたのですが > 最初に検索した(例)ヤマダ で検索致しましたら > 次に キムラ を入力して実施をクリックしても > ヤマダがでてきてしまいます↓汗
何か・・・おかしい?
さっぱり不明です・・・現状のコードを提示して見て?
(できれば、実施ボタン・解除ボタンの全コード)
> 抽出したい名前を打ち込むテキストボックス名は「txt_kensakuM」
抽出したい名前とは何?
例だと "ヤマダ" となっているが、txt_kensakuM には抽出したい値を入力するのと違うの?
また、画面に txt_kensakuM しかないのなら、txt_kensakuM で カナ氏名と漢字氏名の両方を
検索する考えなの?
解除の方も・・・うんともすんとも・・・ですか?
そのコードが実行されているのは、間違いない?
フィルタ設定できるのなら解除(Me.FilterOn = False)もできていいと思うのに・・・
とりあえずコードを見てみないと・・・抽出はフィルタだけですよね?
|
| タイトル | : Re^4: 検索ボタン2 |
| 記事No | : 63535 |
| 投稿日 | : 2008/10/27(Mon) 17:32 |
| 投稿者 | : ニャロ |
口下手ですみません↓
> さっぱり不明です・・・現状のコードを提示して見て? > > (できれば、実施ボタン・解除ボタンの全コード) > >
まず【職員登録】というフォームがあります。 ここには、 職員番号・漢字氏名・カナ氏名で、職員が登録されています。 そこで【職員登録】のフォームヘッダーに スペースを設けてラベルで職員抽出と書いて抽出する場を作成しました。 ---------------------------------------------------------------------------------- [職員抽出]←ラベル
職員氏名:[txt_kensakuM]←テキストボックス [実施]←ボタン→[解除] ---------------------------------------------------------------------------------- このような抽出場です。
元々入れていた実施のコード↓ ※元には、処理日が付いてました。 ************************************************** Private Sub cmd_実施_Click()
Me.Filter = "漢字氏名='" & txt_kensakuN.Value & "'and 処理日 ='" & txt_syoriD & "'" Me.Filter = "漢字氏名 like '*' & '" & txt_kensakuN.Value & "' & '*' and 処理日 ='" & txt_syoriD & "'" Me.FilterOn = True Me.Requery
If Me.Recordset.RecordCount = 0 Then MsgBox ("該当者がいませんでした。") Exit Sub End If
End Sub ************************************************
ほげさんのお力を借りてのコード↓
************************************************ Private Sub cmd_実施_Click()
Dim X As String If Not IsNull(Me.職員番号) Then X = X & " and txt職員番号 = " & Me.職員番号 If Not IsNull(Me.漢字氏名) Then X = X & " and txt漢字氏名 = '" & Me.漢字氏名 & "'" If Not IsNull(Me.カナ氏名) Then X = X & " and txtカナ氏名 like '*" & Me.カナ氏名 & "*'" Me.Filter = Mid(X, 6) Me.FilterOn = True End Sub *****************************************************
> > フィルタ設定できるのなら解除(Me.FilterOn = False)もできていいと思うのに・・・ 解除ボタンは Me.FilterOn = False ←ここをTrueにしていてFalseにしていませんでした。 Falseにしたらすんなり解除できました♪
> > 抽出したい名前を打ち込むテキストボックス名は「txt_kensakuM」 > > 抽出したい名前とは何? > 例だと "ヤマダ" となっているが、txt_kensakuM には抽出したい値を入力するのと違うの? 名前とは、職員の名前です。 値も名前も両方使って抽出できればいいのですが 難しそうだったので、名前だけ使用しての 抽出を希望しました。
> また、画面に txt_kensakuM しかないのなら、txt_kensakuM で カナ氏名と漢字氏名の両方を > > 検索する考えなの? > そのつもりでしたが・・・難しそうですね↓ テキストボックスを職員番号・カナ氏名分増やした方が良さそうでしょうか??? > > 解除の方も・・・うんともすんとも・・・ですか? > > そのコードが実行されているのは、間違いない?
解除の方は、元々のコードからどのように 変えればいいのか全然わからなかったので 今のコードに何か足さないと動かないと思い調べていたのですが いまいちよくわからずに困ってしまっています。
|
| タイトル | : Re^5: 検索ボタン2 |
| 記事No | : 63538 |
| 投稿日 | : 2008/10/27(Mon) 18:28 |
| 投稿者 | : ほげ |
職員氏名だけで抽出するなら、以下でいいかと?
ME.FILTER = "漢字氏名 ='" & ME.txt_kensakuM & "'" ME.FILTERON = TRUE
※ あいまい検索をしたいのなら、LIKE でワイルドカード(*)をお好きな位置で・・前か後か前後になるかと
ME.FILTER = "漢字氏名 LIKE '*" & ME.txt_kensakuM & "*'" ME.FILTERON = TRUE
> テキストボックスを職員番号・カナ氏名分増やした方が良さそうでしょうか???
これもお好きに・・・必要なら追加・・・わからんかったらまた質問でいいかと
ちなみに、以下はおかしいのでは?
> If Not IsNull(Me.職員番号) Then X = X & " and txt職員番号 = " & Me.職員番号 > If Not IsNull(Me.漢字氏名) Then X = X & " and txt漢字氏名 = '" & Me.漢字氏名 & "'" > If Not IsNull(Me.カナ氏名) Then X = X & " and txtカナ氏名 like '*" & Me.カナ氏名 & "*'"
IF NOT ISNULL([画面の検索項目]) THEN X = X & " AND [テーブルのフィールド名] =" & [画面の検索項目]
で・・
|
| タイトル | : Re^6: 検索ボタン2 |
| 記事No | : 63545 |
| 投稿日 | : 2008/10/28(Tue) 09:32 |
| 投稿者 | : ニャロ |
ほげさん、ありがとうございました。
> 職員氏名だけで抽出するなら、以下でいいかと? > > ME.FILTER = "漢字氏名 ='" & ME.txt_kensakuM & "'" > ME.FILTERON = TRUE > > ※ > あいまい検索をしたいのなら、LIKE でワイルドカード(*)をお好きな位置で・・前か後か前後になるかと > > ME.FILTER = "漢字氏名 LIKE '*" & ME.txt_kensakuM & "*'" > ME.FILTERON = TRUE
このやり方で職員名検索もあいまい検索も スィスィできるようになりましたッッ♪
> > > テキストボックスを職員番号・カナ氏名分増やした方が良さそうでしょうか??? > > これもお好きに・・・必要なら追加・・・わからんかったらまた質問でいいかと
今は、職員番号・カナ氏名の検索は必要ないみたぃなので保留にします。 実行しようとするときは、上記で教えていただいたあいまい検索の方法を 同じように行ったら出来ますよね(´ω`)V > > > ちなみに、以下はおかしいのでは? > > > If Not IsNull(Me.職員番号) Then X = X & " and txt職員番号 = " & Me.職員番号 > > If Not IsNull(Me.漢字氏名) Then X = X & " and txt漢字氏名 = '" & Me.漢字氏名 & "'" > > If Not IsNull(Me.カナ氏名) Then X = X & " and txtカナ氏名 like '*" & Me.カナ氏名 & "*'"
すみません。自分でもおかしいのは感じていたのですが、わかりませんでした↓
> IF NOT ISNULL([画面の検索項目]) THEN X = X & " AND [テーブルのフィールド名] =" & [画面の検索項目] > > で・・ このような内容だったのですね♪
今回は、本当にお世話になりました。
行き詰ってしまったときはココにお世話になっているのでちょくちょく 訪れていますがその時はまたお願いしてしまいますがよろしくお願いいたします★汗
★☆ありがとうございました★☆
|
このAccessフォーラム過去ログ集は、Microsoft Access Club が運営しています

|