ACCESS 2000 フォームでのデータ検索と問題発生の解決方法

このQ&Aのポイント
  • ACCESS 2000を使ったフォームでのデータ検索について、特定のコードで検索する際に問題が発生しています。他のコードではうまくいくが、このフォームではうまくいかない理由や解決方法を教えてください。
  • フォーム内にコード検索の枠とボタンを作成して、個人データを検索しています。しかし、特定のコード(個人NO)で検索する際にうまくいかない問題があります。他のコードではうまく検索できるが、このフォームでは何故かうまくいきません。解決方法を教えてください。
  • ACCESS 2000のフォームでのデータ検索において、特定のコード(個人NO)を使って検索する際に問題が発生しています。他のコードではうまくいくのに、このフォームでの検索だけがうまくいきません。問題の原因と解決方法を教えてください。
回答を見る
  • ベストアンサー

フォームでのデータ検索

ACCESS 2000 OSはWin2000を使っています。 フォーム内にコード検索の枠とボタンを作成して、データを検索しています。 フォームには個人データが表示されており、検索枠に個人コード(例えば:00131)を入力して検索ボタンを押すとフィルタがかかるようになっています。 VBAのコードを書いていて、他のフォームで同様のことをするとうまくいくのですが、このフォームではどうしてもうまくいきません。 しかも個人コードではなく、もう一つ別のコードなどで検索をかけるとうまくいったりします。 どうしてこのような問題が発生するのでしょうか? そして、どうすれば解決できるのでしょうか? どなたか、ご教授お願いします。 下記にVBAコードも表示させておきます。 Private Sub 個人NO検索_bt_Click()  Me.Filter = "[個人NO] Like " & Me.[個人NO検索]  Me.FilterOn = True End Sub 個人NO:個人NOがあらかじめ表示されているテキストボックスです。 個人NO検索:検索したい個人NOを入力するところです。

  • isumi
  • お礼率69% (23/33)

質問者が選んだベストアンサー

  • ベストアンサー
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.1

個人Noって数値型でしょうか? それならば、Likeを使うのはちょっと違ってるような気がします。 Me.Filter = "[個人NO] =" & Me.[個人NO検索] では駄目でしょうか。 個人番号が文字列型で、Likeを使うんであれば、 Me.Filter = "[個人NO] Like '" & Me.[個人NO検索] & "'" とすべきかと思います。

isumi
質問者

お礼

テキスト型にしていたので、後者でうまくいきました! VBA初心者なので、数値型とテキスト型の検索で=とlikeが違うのは勉強になりました。 ありがとうございました。

関連するQ&A

  • Access 2003 でフォームフィルターがかかりません。

    Access 2003 でフォームフィルターがかかりません。 どなたか助けてください。 アクセス初心者です。 フォームの詳細欄にチェックボックス(フィールド名:伝票チェック)を配置しております。 チェックの入っていないものを表示させたいです。 フォームヘッダーのオプショングループ(フレーム67)に オプションボタン0-オプション値0と オプションボタン2-オプション値2 の2個のオプションボタンを配置してあります。 クリック時のイベントプロシージャに以下のコードを書きました。 Private Sub フレーム67_Click() If Me!フレーム67 = 0 Then Me.Filter = 伝票チェック = 0 Me.FilterOn = True Else Me.Filter = "" Me.FilterOn = True End If End Sub 実行時エラーは出ませんが、データが何も表示されません。 どうすればいいのでしょう??? どなたかお願いします。

  • Accessの検索フォーム

    またまたAccessについての質問です。 検索フォームというのを作りました。 テーブルのデータから条件に合うものだけを抽出したいのです。 たとえば1つ目の検索フォーム[A]のテキストボックスに「AAA」を入力します。 そのあとBには「BBB」と入力します。 同じくCには「CCC」と入力します。 そして絞込みボタンを押したらAAAでBBBでCCCのものが抽出されます。 これはうまくいきました。 とりあえず、複数条件なので、わけもわからず「&」で結んでしまいました・・・。 ↓は絞込みボタンのクリック時です。↓ 困ったのは、すべて検索条件を指定しない場合です。 たとえば「AAA」で「CCC」のものを抽出したいとき、[A]のテキストボックスに「AAA」と入れ [C]のテキストボックスに「CCC」と入れます。 そして絞込みボタンをクリック。 するとBが未記入だからか、抽出されたのは真っ白でした・・・。 Option Compare Database Private Sub コマンド50_Click() Me.Filter = "契約='" & Me!テキスト51 & "'and A='" & Me!テキスト57 & "'" Me.FilterOn = True End Sub 組み合わせが自由になる検索フォームにするにはどうすればよいのでしょうか? 誰か助けてくださ~い!

  • Me.FilterOn = True は先でも後で

    Me.FilterOn = True は先でも後でも問題ないですか? アクセスのvbaでフォームにフィルタをかけるときに 今まで --------------------------------------- Private Sub コマンド2_Click() Me.Filter = "フィールド = '" & "test" & "'" Me.FilterOn = True End Sub --------------------------------------- とコードを書いていましたが --------------------------------------- Private Sub コマンド2_Click() Me.FilterOn = True Me.Filter = "フィールド = '" & "test" & "'" End Sub --------------------------------------- でも機能しました。 という事は、 Me.FilterOn = Trueは Me.Filter の前でも問題ないのでしょうか? Me.FilterOn = Trueは Me.Filter の後と習ったので疑問に思っています。 よろしくお願いいたします。

  • access 表形式のフォームの複数条件検索

    access 表形式のフォームの複数条件検索の方法を教えてください。 現在は一つのComboボックスでの検索はできていますが、 これを2つ、3つにしたいのです。 検索は、学年、組、名前です。 現在は下記マクロで1つの(学年)はできていますが、それ以外の2つ を組み合すことができません。 下記は、学年を入力するComboボックスのcombo1conditionで学年を 選択し、ボタンのbtn1Searchで検索するといったマクロです。 どなたか教えてください。よろしくお願いいたします。 Private Sub btn1Search_Click() If Me.combo1condition <> "" Then Me.combo1condition.SetFocus Me.Filter = "学年 Like ""*" & Me.combo1condition.Text & "*""" Me.FilterOn = True Else Me.Filter = "" Me.FilterOn = False End If End Sub

  • accessの検索フォームについて(複数条件)

    access初心者です。 本などを参考に検索フォームを作成しました。 1つの条件で検索することは出来たのですが、複数の条件を入力するとうまく検索出来ません。 全ての条件を満たすデータの抽出を行いたいと思います。 「あ」「い」「う」というテキストボックスを用意しています。 Private Sub コマンド14_Click() If Not IsNull(Me.txt_あ) Then ' Me.Filter = "あ LIKE '*" & Me!txt_あ & "*'" End If If Not IsNull(Me.txt_い) Then ' Me.Filter = "い LIKE '*" & Me!txt_い & "*'" End If If Not IsNull(Me.txt_う) Then ' Me.Filter = "う LIKE '*" & Me!txt_う & "*'" End If Me.FilterOn = True End Sub よろしくお願いします。

  • 【Access】複数フィールドを対象とする検索

    Access上で「検索ボタン」をクリックすると、 「データ」フォームのフィールド1、フィールド2、フィールド3のいずれかに「検索条件1」の語を含み、かつ、フィールド4、フィールド5、フィールド6のいずれかに「検索条件2」の語を含むレコードを抽出できるようにしたいと思います。 検索条件はテキストボックスに入力するようにしており、テキストボックス名は「検索条件1」、「検索条件2」となっています。 以下のコードでやってみたのですが、「実行時エラー13、型が一致しません」というエラーが出てうまく抽出できません。 Private Sub 検索ボタン_Click() Dim filter1 As String filter1 = "フィールド1 like '*" & Me!検索条件1 & "*' or フィールド2 like '*" & Me!検索条件1 & "*' orフィールド3 like '*" & Me!検索条件1 & "*'" And " フィールド4 like '*" & Me!検索条件2 & "*' or フィールド5 like '*" & Me!検索条件2 & "*' orフィールド6 like '*" & Me!検索条件2 & "*'" DoCmd.OpenForm "データ", acNormal Forms!データ!.filter = filter1 Forms!データ!.FilterOn = True End Sub 「検索条件1,2」のテキストボックスがあるフォーム上の「検索ボタン」をクリックすると、 「データ」フォームが開き、検索をかけるという流れをイメージして作成 しています。 どなたか正しい記述を教えていただけませんでしょうか。 よろしくお願いいたします。

  • アクセスのフォームで

    アクセスのフォームで、品番一覧というテーブルを基にした、F品番一覧というフォームがあります。 ヘッダー部に検索するコンボボックスがあり、品番一覧テーブルの品番を参照しています。 検索ボタンを押すと、コンボボックスの内容に当てはまるものが、フォームの詳細部に一覧として表示させる様にしたのですが、品番に"50#1"や"50#2"という#を使い、1と2を分けている物があるのですが、コンボボックスで、この#が付いた物で検索すると検索結果がなにも表示されません。#が付いていない物はちゃんと一覧が表示されます。 #が付いている場合でもちゃんと表示するにはどの様にしたら良いですか?テーブル側の#を取り除く事はできません。 検索ボタンのコードは Private Sub 検索_Click() Dim strFilter As String, strExp As String, aryOpe As Variant If Not IsNull(Me.txt氏名) Then strFilter = strFilter & " AND 品番 Like *" & Me.品番一覧 & "*" End If Me.Filter = Mid(strFilter, 5) If strFilter = "" Then Me.FilterOn = False Else Me.FilterOn = True End If となっています。 うまく説明できなくてすいませんが、誰か教えて頂けませんか? よろしくお願いします。 End Sub

  • アクセスのフォームで数値型の複数検索のについて

    アクセスのフォームで検索ボタンを設置して複数検索をしています。 下記の状態でうまくいってたのですが、依頼でまた一つ検索項目が追加になりました。 追加になった項目は数値型で”を抜いたりしたのですがうまく検索できません。 どうすればうまくいくか教えて下さい。 今のコードは以下の通りです。 Private Sub 検索ボタン_Click() Dim L1 As String If Nz(Me.品名検索, "") <> "" Then L1 = L1 & " AND 品名 Like '*" & Me.品名検索 & "*'" End If If Nz(Me.採取日検索, "") <> "" Then L1 = L1 & " AND 採取日 = #" & Me.採取日検索 & "#" If Nz(Me.数値検索, "") <> "" Then L1 = L1 & " AND 数値 = " & Me.数値検索 End If End If If L1 <> "" Then L1 = Mid(L1, 6) Me.Filter = L1 Me.FilterOn = True Else Me.Filter = L1 Me.FilterOn = False End If End Sub 数値の部分が数値型の新たな検索です。 宜しくお願い致します。

  • Accessでの検索フォーム作成

    お世話になります。 Accessを使い始めて半月ぐらいの初心者です 次のような条件の検索フォームの作成を依頼されたのですがうまく出来ません。 (1)Accessのフォームフィルタを使用した検索フォームで、3つのテキストボックス(以下TB)を同一 フォーム上に用意し、抽出を実行するボタンと解除するボタンをTBの隣にそれぞれ用意する (2)あいまいな条件(部分一致)で検索出来るようにする (3)抽出結果も同一フォーム上に表示 (4)任意のTBに入力した値で抽出後、他のTBを利用し 絞り込み検索を実行できるようにしたい 現在は下記のように作成しました。 ●テーブル [管理番号]、[品名品番]、[仕入先名]のフィールドを持つテーブルを用意。 ●フォーム(表形式) 上記テーブルに連結した検索フォームを作成し、抽出する値を入力する TBの名前はそれぞれ下のように付けました。 フィールド名    TB名 ・[管理番号]⇒管理番号検索 ・[品名品番]⇒品名品番検索 ・[仕入先名]⇒仕入先名検索 ・[抽出実行ボタン]のイベント(管理番号で検索時) Private Sub コマンド47_Click() Me.Filter = "管理番号 Like '*" & Me!管理番号検索 & "*'" Me.FilterOn = True End Sub ・[抽出解除ボタン]のイベント(管理番号で検索時) Private Sub コマンド49_Click() Me!管理番号検索 = Null Me.FilterOn = False End Sub 他2つも同様に作成して実行した結果、単体での抽出はうまくいくのですが さらに絞り込もうと他のTBに値を入力して抽出を実行すると先の抽出が解除され 単体でのフィルタがかかって抽出されてしまいます。 どなた様か良い案が御座いましたらご指導ください。 初心者のため、説明不足な点があるかと思いますが 不明な点がございましたらご質問くださいませ。 宜しくお願い致します。

  • フォームにレコード数を表示したい

    こんばんは。 フォームに検索フィールドにパラメータを入力してもらい、 Me.Filter = "[氏名] like '*" & Me![氏名フィルタ] & "*'" Me.FilterOn = True で抽出させています。 同フォームにヒット件数を表示したいのですが、 DCount("受注ID", "Q_受注", "[氏名] like '*" & Me![F_氏名] & "*'") でデータ数を表示させています。 もっとスマートな方法がないのかと思い、質問させていただきました。 よろしくお願いいたします。

専門家に質問してみよう