非連結txtBoxのデータをcmdボタンで検索する方法とは?

このQ&Aのポイント
  • 「T顧客管理」を基に「F顧客管理入力」を作成し、「F顧客管理入力」には非連結の「txtBox」と「cmd検索」があります。
  • 「txtBox」に入力された管理番号を使用して「cmd検索」をクリックすると、該当するレコードを検索して顧客のデータを入力することができます。
  • 質問者は「cmd検索」のイベントと追加クエリについて質問しており、コードに間違いがあるかどうかを確認したいとしています。
回答を見る
  • ベストアンサー

非連結のtxtBoxのデータをcmdボタンで検索

非連結のtxtBoxのデータをcmdボタンで検索 いつもお世話になります。<m(__)m> 「T顧客管理」を基に「F顧客管理入力」を作成し「F顧客管理入力」 には非連結の「txtBox」と「cmd検索」があります。 「T顧客管理」に追加クエリにて「商品管理_ID・管理番号・商品名」 が入力済みになっております。 そこで「txtBox」に管理番号を入力して「cmd検索」を押して検索 されたレコードに顧客のデータを入力したいのですが、レコードが 検索されません。 「cmd検索」のイベントに Private Sub cmd検索_Click() DoCmd.SearchForRecord , , acFirst, "管理番号 Like '*" & Me!txt検索 & "*'" Me!txt検索 = Null End Sub としています。 追加クエリは INSERT INTO T顧客管理 ( 商品管理_ID, 管理番号, 商品名 ) SELECT T商品説明.商品管理_ID, T商品説明.管理番号, T商品説明.商品名 FROM T商品説明 WHERE (((T商品説明.商品名) Is Not Null)); として「T商品説明」には、他にフィールドがいくつかあります。 --「T顧客管理」-- 商品管理_ID ---- 数値型(主キー) 管理番号 ------- テキスト型 商品名 --------- テキスト型 販売日時 ------- 日付/時刻型 販売価格 ------- 通貨型 お名前 --------- テキスト型  ・  ・  ・ ----------------- コード等間違いがありますでしょうか? 初歩的な事と思いますが宜しくお願い致します。<m(__)m>

  • yu_ji
  • お礼率63% (14/22)

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

  • ベストアンサー
回答No.2

> 教えて頂いたコードを書いて試してみましたら「該当するデータはありません。」 > とメッセージが出てしまいます。 コードは正常に動作していると言うことですね。 txt検索に、実際に存在する管理番号を入力していますか。 ちゃんと入力しているのに「該当するデータはありません」と出るのなら、 "管理番号 Like '*" & Me!txt検索 & "*'" の部分が間違っていることになります。 管理番号というフィールド名に間違いはないですか。 データ型はテキスト型で間違いないですか。 上記部分を、下記のように書き直した場合どうなるか試してもらえますか。 "管理番号 = '123456'" 123456 は実際に存在する管理番号で。

yu_ji
質問者

お礼

hatena1989 様 返答が遅くなりまして申し訳ありません。<m(__)m> 急に入院してしまったので・… >"管理番号 Like '*" & Me!txt検索 & "*'" >の部分が間違っていることになります。 ご回答のとおりコードを書き間違えていました。 コードを訂正しまして検索できるようになりました。 本当に初歩的なミスでお忙しいところ時間をとらせてしまい申し訳 ありません。 また質問等するかと思いますのでこれに懲りずに、宜しければまた 宜しくお願い致します。<m(__)m>

その他の回答 (1)

回答No.1

DoCmd.SearchForRecord はAccess2007から追加されたメソッドですが、 Accessのバージョンは2007 または 2010 ですか。 当方の2007で試してみましたが、1回目は検索しますが、2回目から検索できないなど、どうも不安定です。 代わりに、Recordset.FindFirstメソッドを使えばどうでしょうか。 Private Sub cmd検索_Click()   With Me.RecordSet     .FindFirst "管理番号 Like '*" & Me!txt検索 & "*'"     If .NoMatch Then MsgBox "該当するデータはありません。"   End With   Me!txt検索 = Null End Sub

yu_ji
質問者

お礼

ご回答頂き有難うございます。<m(__)m> >DoCmd.SearchForRecord はAccess2007から追加されたメソッドですが、 >Accessのバージョンは2007 または 2010 ですか。 Accessのバージョンは2010です。 >代わりに、Recordset.FindFirstメソッドを使えばどうでしょうか。 >Private Sub cmd検索_Click() >  With Me.RecordSet >    .FindFirst "管理番号 Like '*" & Me!txt検索 & "*'" >    If .NoMatch Then MsgBox "該当するデータはありません。" >  End With >  Me!txt検索 = Null >End Sub 教えて頂いたコードを書いて試してみましたら「該当するデータはありません。」 とメッセージが出てしまいます。

関連するQ&A

  • 連結フォームでの非連結

    こんにちは。 Access2002を使用しています。 「T_実績」テーブルには、顧客名、売上金額、販売者の項目があります。 「T_実績」テーブルに入力するために、連結フォームの「F_実績入力」フォーム を作成しました。入力の際は、顧客名と売上金額を入力し、販売者は フォームヘッダーのテキストボックスに入力した販売者を、レコード移動時に 自動更新したいようにしたいのですが、どのようにすればよいでしょうか? よろしくご教授くださいますようお願いいたします。

  • Access非連結フォームから複数レコード挿入

    お世話になっております。 Access2003を使用しております。 <テーブル ”商品マスターT”> code   shouhin =========================== 1    チョコ 2    ラムネ 3    ジュース 4    団子 5    ガム <フォーム "商品入力フォーム"(非連結・単票フォーム)>      商品コード       商品名 1行目 [非連結(テキスト0)] [=DLookUp("shouhin","商品マスターT","code=" & [テキスト0])] 2行目 [非連結(テキスト1)] [=DLookUp("shouhin","商品マスターT","code=" & [テキスト1])] 3行目 [非連結(テキスト2)] [=DLookUp("shouhin","商品マスターT","code=" & [テキスト2])] 4行目 [非連結(テキスト3)] [=DLookUp("shouhin","商品マスターT","code=" & [テキスト3])] 5行目 [非連結(テキスト4)] [=DLookUp("shouhin","商品マスターT","code=" & [テキスト4])]  商品コードを入力すると商品マスターTより商品名を引っ張ってきます。 <テーブル "履歴T"> code2   shouhin2 ==============================  データは空です 上記のものがあるときに商品入力フォームで入力した行数分だけ テーブル履歴Tにレコード追加したいのですが・・・ そういったことは可能でしょうか?非連結フォームから複数レコード追加は難しいでしょうか? 以上宜しくお願いします。

  • エクセルでデータベースの検索と抽出(?)

    エクセル2007を使用しています。 まずエクセルで作られたデータベースがあります。データベースには、管理番号、顧客名、商品の管理番号、商品名、価格が入っています。 このデータベースとは別に、検索(抽出)用のエクセルを用意しています。 そこで、管理番号を入れたら、顧客名、商品名、価格のみが1行(横)に表示されるようにしたいです。 クエリを利用してやると一つずつ顧客名、商品名、価格を選んで…という風に時間がかかります。 例えば、管理番号の列(縦)に番号を入れて、ボタンを押すとか、実行(F9)すれば、管理番号を入れたすべての行に、データベースから検索した顧客名、商品名、価格が入力されるようにしたいのです。(管理番号の重複はありません) クエリで一個ずつ選んでいくのをマクロ登録するしかないのでしょうか?

  • アクセスである文字を含む検索

    ACCESS2000を使っています。 あるデータテーブル「発注書テーブル」があって、ここでは「(1)ID」「(2)顧客名(法人)」「(3)発注商品」「(4)納品済チェック」の4つフィールドがあるとします。 作業はフォームで行います。フォーム名は「発注書フォーム」。 「(2)顧客名」から検索をかけたくて、検索コマンドボタンをつくり、「検索フォーム」を発注書フォームとまったく同じ形態でつくり、そこにとべるようにしました。 「検索フォーム」には「検索」というテキストボックスを作ります。 「検索クエリ」というクエリを作り、発注書テーブルを素とし、すべてをデザインビューで表示するようにしました。 そして、「(2)顧客名」の抽出条件に[Forms]![検索フォーム]![検索]を入力します。 すると、「検索フォーム」の「検索」をコンボボックスにして、顧客名をすべて表示させ選択した場合は、「検索フォーム」では、選択した顧客の情報が表示されるようになりました。 が、しかし、「検索」をコンボボックスではなく、テキストボックスで、しかも顧客名の一部だけを入力したら、その文字を含むすべてのレコードを表示してほしいのです。 そこで、「検索クエリ」の「(2)顧客名」抽出条件にlike"*[Forms]![検索フォーム]![検索]*"と入力してみました。 そして「検索フォーム」の「検索」テキストボックス(非連結)に顧客名の一部を入力したところ、ぜんぜん絞りこみ抽出してくれません。 もちろん、クエリ上でも絞り込んでいない模様です。 どうしたら文字の一部からその文字を含む顧客名のレコードを全て抽出し、表示させることができるでしょうか? 細かくてすみませんが、かなり困ってます。 どうかわかる方、教えてください。 まったくちがう方法(別の手法)でもかまいません。 この説明でわからない部分がありましたら補足しますのできいてください。 よろしくお願いします。

  • 検索結果を非連結のテキストボックスに表示させるには

    accessでシステム開発しています。初心者です。 検索結果を非連結のテキストボックスに表示させる方法を教えてください。 条件(1) フォームのレコードはどのテーブルとも紐づいていない 条件(2) 2つのテーブルから1つの検索ボタンで検索できるようにしたい テーブルA;案件マスタ テーブルB:リソースマスタ ・検索テキストボックス(1つ) ・検索ボタン(1つ) 条件(3) 案件ID、リソースIDはともに数値型です。 検索結果表示テキストボックス(非連結) ・案件IDテキストボックス:案件マスタより検索した案件IDを表示する ・リソースIDテキストボックス:リソースマスタより検索したリソースIDを表示する 下記のように考えていますが ・非連結のテキストボックスに検索結果を表示させる ・1つの検索ボタンで2つのテーブルから検索ができるようにする 方法がわかりません。 どのようなコードを追記したらいいのか教えていただけないでしょうか。 よろしくお願いいたします。 Private Sub btn検索ID_Click() Dim strFilter As String Me![案件マスタ].SetFocus If Me!案件IDテキスト = Me![案件マスタ]![案件ID] Then strFilter = " AND 案件ID= " & Me!案件IDテキスト End If If Me!テキストリソースID = Me![リソースマスタ]![リソースID] Then strFilter = strFilter & " AND リソースID= " & Me!リソースIDテキスト End If ’↓?いらないかも.. 'Forms!ID検索.Filter = Mid(strFilter, 6) Forms!ID検索.FilterOn = True Me.案件IDテキストボックス= Null Me.リソースIDテキストボックス = Null

  • ACCESSあいまい検索から入力まで

    VBAいじり始めて数日の超初心者です。 お知恵をおかしください。 ACCESS2000です あいまい検索をしたデータを選択して入力までできるようにしたいと考えていますが、検索の時点でうまくいきません。 関係のある項目 テーブル1 「入力テーブル」     2 「M_商品」 ……「JANコード」             ……「商品名」 フォーム1 「入力フォーム」→コマンドボタンで商品検索のフォームが開く     2 「商品検索」     3 「検索結果」……「JANコード」             ……「商品名」 入力テーブルとM_商品にはリレーションシップがかけてあります。 「M_商品」の中の「商品名」にフィルタをかけ、入力フォーム内に入力したいです。 商品検索のフォームには 非連結のテキスト「txt商品名」と「一致選択」という名のオプショングループ(3つの選択があり、部分一致と前方一致と後方一致です)、検索用のコマンドボタン(cmd検索)があます。 これで検索を実行してみると、コンパイルエラー;SubまたはFunctionが定義されていません、とでて、VBA側のPrivate Sub cmd検索_Click() が黄色くなって、「TakeOut」がグレーになった状態なります。

  • フォームから2つのテーブルにデータを書き込みたい

    Accessで T_aテーブルとT_bテーブルがありそれぞれのフィールドが以下のようになっているとします。 T_a:フィールド名 データ型    ID  オートナンバー型    商品番号 テキスト型 主キー T_b:フィールド名 データ型    ID  オートナンバー型 主キー    商品番号 テキスト型 このときフォームから入力したデータをそれぞれのテーブルの商品番号に追加したいのですがどのようにすればよいのでしょうか。  よろしくお願いいたします。

  • VBA 非連結テキストボックスからの検索

    検索用フォームのテキストボックスからの検索についてご教授ください。 OS:Windows7Pro(32Bit) Ver:Access2010 DB:MySQL5.6 Windows版 ◎検索フォームの非連結テキストボックス txt顧客ID txt顧客カナ(先頭一致) 上記いずれかで、検索したい場合のSQL文の書き方。 ソース Private Sub cmd検索_Click() '顧客情報検索 'Mysql接続変数定義 Dim con As New ADODB.Connection Dim rs As ADODB.Recordset Dim stSQL As String 'DB接続 con.Open "Driver={mySQL ODBC 5.3 Unicode Driver}; Server=localhost; Database=jinq; Uid=jinq_a; Pwd=jinqadmin; " On Error GoTo Err 'SQL文 stSQL = "SELECT * FROM t_kokyaku" stSQL = stSQL & " WHERE(CusID =" & Me!txt顧客ID & ")" stSQL = stSQL & " OR(kana Like ’" & Me!txtお客様カナ & "'%);" Debug.Print "SQL: [" & stSQL & "]" 'SQL文実行&レコードセット代入 Set rs = con.Execute(stSQL) 上記のプロジージャーを実行した結果、当然ですが、エラーとなります。 stSQL:SELECT * FROM t_kokyaku WHERE(CusID =) or(Kana Like 'txt顧客カナ%'); [MySQL][ODBC 5.3(w) Driver][mysqld-5.6.22-enterprise-commercial-advanced-log]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') OR(kana Like 'txt顧客カナ%')' at line 1 複数のテキストボックスの値で検索する場合、どういった書き方をすればよいのでしょうか? 最終的には、顧客ID、顧客名、顧客カナ、電話番号でいずれかの条件で検索できればと考えています。 アドバイス頂けましたら、幸いです。

    • ベストアンサー
    • MySQL
  • 複数テーブルから値を連結出力するSQLについて

    以下の様な3つのテーブルがあり、それぞれのテーブルを連結して結果を取得したいと思っております。 この場合のSQL文をご教授いただけないでしょうか? 拙い説明でお分かりに難いかと思いますが、何卒、宜しくお願いします。 ●テーブル T1(科目テーブル) 科目ID, 科目名 T2(生徒テーブル) 生徒ID, 生徒名 T3(科目選択テーブル) 科目ID, 生徒ID(科目ID, 生徒IDで連結キー) ●期待出力結果イメージ ※例1)生徒ID=1の場合 科目ID | 科目名 | 生徒ID | 生徒名 ------------------------------------- 1 | 国語 | 1 | 山田太郎 ------------------------------------- 2 | 算数 | 1 | 山田太郎 ------------------------------------- 3 | 理科 | null | null ------------------------------------- 4 | 社会 | null | null ------------------------------------- 5 | 英語 | 1 | 山田太郎 ※例2)生徒ID=2の場合 科目ID | 科目名 | 生徒ID | 生徒名 ------------------------------------- 1 | 国語 | null | null ------------------------------------- 2 | 算数 | null | null ------------------------------------- 3 | 理科 | null | null ------------------------------------- 4 | 社会 | null | null ------------------------------------- 5 | 英語 | 2 | 鈴木花子 ●出力条件 科目テーブルの科目ID, 科目名は全て表示する。 T3(科目選択テーブル)に存在する生徒IDがあれば、その生徒ID、生徒名を表示する。 存在しない場合は、それぞれ「null」として表示する。 出力は生徒IDを条件とする。 何卒、宜しくお願いします。 ※因みに使用DBはMySQL5.1.44です。

    • ベストアンサー
    • MySQL
  • ACCESS2000の複数検索条件からのデータ抽出

    こんにちわ。前回質問内容自体どう説明してよいかわからず、途中で終わってしまったので、再度、詳しく質問してみました。 今、Accessで受注管理を作成しているんですが、複数の検索について教えて下さい。 ■テーブル テーブル名:受注管理 フィールド名:受注ID・日付・商品種別・顧客名・仕入種別・状況種別 ■クエリ クエリ名:受注クエリ(フィルタ) フィールド名:受注ID(表示チェックあり)・日付・商品種別・顧客名・仕入種別・状況種別 と式1[Forms]![検索フォーム名]![日付text]・式2[Forms]![検索フォーム名]![商品種別combo]・式3[Forms]![検索フォーム名]![顧客名text]・式4[Forms]![検索フォーム名]![仕入種別list]・式5 [Forms]![検索フォーム名]![状況種別combo]の計11列です。 抽出条件:検索名フィールド: 受注IDを除く各フィールド名の下に Like "*" & [Forms]![検索フォーム]![日付text] & "*" Like [Forms]![ 検索フォーム名]![商品種別combo] Like "*" & [Forms]![ 検索フォーム名]![顧客名text] & "*" Like [Forms]![ 検索フォーム名]![仕入種別list] Like [Forms]![ 検索フォーム名]![状況種別combo] 各式の下に Like "" Like "(なし)"      Like "" Like "(なし)" Like "(なし)" を検索パターンに応じて入力しました。 マクロにより、フィルタの実行をしていますが、この方法だと4つまでなら、検索可能なのですが、5つ以上になると、「フィルタが長すぎます」というダイアログボックスがでて検索ができません。VBAやSQLはいまいちわからないので、何か簡単に、5つ以上の検索条件で検索できないでしょうか。お願いします。