• 締切済み

困っています。助けてください。(1)

会社のシステム開発で思うように進まず困っています。 初心者なので丁寧な解説をいただけると助かります。 (1)コンボボックスの作成 ゴール:テキストボックスに入れたキーワードをあいまい検索で コンボボックスで値を絞りだし繰り返し検索したい。 textbox:「a」入力 検索ボタンclick cmbbox:「a」から始まるタイトルをすべて絞り出す       テキストボックスに入れたキーワードをあいまい検索で コンボボックスで値を絞りだすまでできていますが 元の状態に戻して別のキーワードで検索ができません。 絞り込みが解除されないでいるのです。 ※しかも、修正を、やっているうちにデータ(レコード)が出てこなくなったりしました。(最適化やロールバックが必要みたいでしょうか?) コンボボックスの値集合:select T_taitoru.name from T_taitoru where T_taitoru.name like'*"& [form]![kensaku]![textbox]&"*'; コンボボックスの値集合タイプ:テーブル/クエリ private sub textbox_click() if me!textbox="" then me!cmbbox.rowsourcetype="table/qruery" me!cmbbox.rowsource="select T_taitoru.name from T_taitoru where T_taitoru.name like'*"& [form]![kensaku]![textbox]&"*';" end if end sub 繰り返し検索したい状態にしたいのですが何が間違っているのかよく分かりません。 詳しい方教えてください。 検索ボタンのコードはcmbboxmにitemselectを使っています。 ユーザビリティの観点からコンボボックスのdrop downをボタンでするほうが操作上分かりやすいためにしています。 解決方法やコードなどをいただけると大変助かります。 requeryをしてみましたがうまくいきませんでした。 詳しい方、何卒よろしくお願いいたします。

みんなの回答

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.2

>クエリの検索行ってなんですか? 添付図は関連付けられたテーブルAとテーブルBにより作成され選択クエリです。 抽出条件以下(抽出条件:または:)の行を検索行と呼びます 同一行に定義するとand条件で、別行で定義するとor条件です また1:∞の参照整合性である事が分かります

  • chayamati
  • ベストアンサー率41% (254/607)
回答No.1

コードは必要ありません。 クエリの検索行に 「like'*"& [form]![kensaku]![textbox]&"*'」 と記述します

putiabu
質問者

補足

クエリの検索行ってなんですか?

関連するQ&A

  • 2つのコンボボックスを含むフィルタをかけたい(and検索)

    こんばんは。 VB2008です。 フォーム上に2つのコンボボックスがあります。 Sub フィルタ() Form1.TメインBindingSource.Filter = "進捗 LIKE '*" & Form1.進捗.Text & "*'" Form1.TメインBindingSource.Filter = "番号 LIKE '*" & Form1.番号.Text & "*'" End Sub を実行して、、「進捗」と「番号」コンボボックスに入力されている値のフィルタをかけたいのですが 上記のコート゛だと進捗コンボボックスの値は無視され、番号コンホ゛ホ゛ックスの値しか取得できません。 なので Sub フィルタ() Form1.TメインBindingSource.Filter = "進捗 LIKE '*" & Form1.進捗.Text & "*'"  and Form1.TメインBindingSource.Filter = "番号 LIKE '*" & Form1.番号.Text & "*'" End Sub としてみましたが、 andの部分がエラーになります。 どうすればand検索ができるのでしょうか? よろしくお願い致します。

  • アクセスVBA(先日の続きになります)

    前回教えていただきました検索抽出のVBAですが、抽出がうまくできなくなってしまいました。 抽出条件を入力しているにもかかわらず、全部のデータが表示されてしまいます。 どこがまずいのかわかりましたら、ぜひ教えてください。 Private Sub btn_検索02_Click() Dim kensaku As String If Not Me![t_04] = "" Then kensaku = kensaku & _ "([舗装施行年度] Like '*" & Me![t_04] & "*') AND " If Not Me![t_05] = "" Then kensaku = kensaku & _ "([舗装工事名] Like '*" & Me![t_05] & "*') AND " If Not Me![t_06] = "" Then kensaku = kensaku & _ "([舗装区間01] Like '*" & Me![t_06] & "*') AND " If Not Me![t_07] = "" Then kensaku = kensaku & _ "([舗装区間02] Like '*" & Me![t_07] & "*') AND " If Not Me![t_08] = "" Then kensaku = kensaku & _ "([改良施行年度] Like '*" & Me![t_08] & "*') AND " If Not Me![t_09] = "" Then kensaku = kensaku & _ "([改良工事名] Like '*" & Me![t_09] & "*') AND " If Not Me![t_10] = "" Then kensaku = kensaku & _ "([改良区間01] Like '*" & Me![t_10] & "*') AND " If Not Me![t_11] = "" Then kensaku = kensaku & _ "([改良区間02] Like '*" & Me![t_11] & "*') AND " If Not Me![t_12] = "" Then kensaku = kensaku & _ "([台帳作図年度] Like '*" & Me![t_12] & "*') AND " If Not Me![t_13] = "" Then kensaku = kensaku & _ "([台帳調査名] Like '*" & Me![t_13] & "*') AND " If kensaku <> "" Then kensaku = Left(kensaku, Len(kensaku) - 5) DoCmd.OpenForm "検索結果", , , kensakum, acFormReadOnly DoCmd.Maximize DoCmd.Close acForm, Me.Name End If End Sub

  • このやり方を教えて下さい。

    ※最初にキツイ話しですが コードを書いて教えもしない回答は通報します。また、締め切ります。 (昔は素直に教えてくれる人が多かったし近年スキル売るサイトが人気があるためクラウドワークスに移行してスキルのあるエンジニアが少ないのもあります) 不快になられる方もいらっしゃると思いますが (その点は申し訳ないし本来こんな書き込みはしたくない) 心ある良識な回答をお願いします。 accessのVBAを使っています。(初心者です) ボタンを使ってコンボボックスをドロップダウンさせたいのですが 下記のようにコードを書いてもうまくできません。 sub 検索ボタン_click() '検索ボタンを押したときテキストに何か入っていれば if me!btn検索.onclick=me!textbox検索名&”*’”then ’コンボボックスをドロップダウン me!コンボボックス.dropdown end if end sub ひょっとしてこうでしょうか? sub 検索ボタン_click() 'テキストに何も無いことがなければ if Not  me!textbox検索名 is  nothing then ’コンボボックスをドロップダウン me!コンボボックス.dropdown end if end sub 分かる方教えてください。 ※テキストボックスの値からコンボボックスを絞り込み表示させるのはできています。 textbox:値(a)→コンボボックス:aから始まるレコードのみをすべて表示

  • Fillの使い方について

    テキストボックスに入力された値によって、条件をつけ、データを取得、グリッドに表示するということを やりたいと思っています。 Fillメソッドにパラメータを追加して、テキストボックスの値を見るようにしています。 Me.CUSTOMERTableAdapter.Fill,Me.TextBox1.Text.ToString,TextBox2.Text.ToString,TextBox3.Text.ToString) テーブルアダプターのクエリは以下のようになっています。 SELECT FACTORY,KIGYOU,COMPANY FROM CUSTOMER WHERE (CompanyName LIKE :PARAM1 || '%') AND (TelNo LIKE :PARAM2 || '%') AND (FaxNo LIKE :PARAM3 || '%') ※前方一致検索をする仕様としています。 テキストボックスが空欄だった場合、WHERE句から外したいと考えています。 例えばTextBox1(PARAM1)が空であれば、 WHERE (TelNo LIKE :PARAM2 || '%') AND (FaxNo LIKE :PARAM3 || '%') としたいのです。 ケースごとにテーブルアダプターにクエリを作ればいいかと思ったのですが、テキストボックス1だけの場合、2だけの場合、3だけの場合、 1と2の場合…と作っていくと、かなりの数に なってしまいます。 最終的にテキストボックスは10個ほど配置する予定なので、 値がなければWHEREから外せれば一番良いのですが…。 方法がありましたらご教授ください。

  • 任意のレコード値を別レコードに挿入

    度々お世話になります。 画像が上がっていなかったので、再度質問させて頂きます。 簡単に言うと、画像のように顧客テーブルのレコードを絞り込んだ結果を1クリックで売上テーブルに挿入したいと考えております。 検索結果をforeachでループさせて表示しています。 ボタンのINPUTタグを組み込んだのですが、クリックすると、検索結果全てが挿入されます。 どうすればいいのかお知恵をお貸し下さい。 毎度毎度すいません。 ざっくりですが、ソースはこんなかんじです。 $kensaku = $db->prepare('SELECT * FROM T_kokyaku WHERE name LIKE :ken'); $kensaku -> execute(array(':ken' => 検索ボックスのキー)); 検索結果の表示 while($kekka = $kensaku ->fetch(PDO::FETCH_ASSOC)){ print $kekka['name']; print '<form action="" method ="POST"><input type="submit" name="submit1" value="売上登録"></form> if(isset($_POST['submit1'])){ INSERT分 }

    • ベストアンサー
    • PHP
  • 値集合ソースの切替をVBAで

    あるフォームを、「開き方によって、フォーム上のコンボボックスの値集合ソースを切替える」のをVBAでやりたいのですが、 Private Sub Form_Open(Cancel As Integer) If Me.OpenArgs = "A" Then Me!氏名検索.RowSource = "SELECT 講師.氏名, 講師.フリガナ, 講師.ランク FROM 講師 WHERE (((講師.ランク) = Like '*A'))ORDER BY 講師.フリガナ;" ElseIf Me.OpenArgs = "B" Then Me!氏名検索.RowSource = "SELECT 講師.氏名, 講師.フリガナ, 講師.ランク FROM 講師 WHERE (((講師.ランク) =Not Like '*A'))ORDER BY 講師.フリガナ;" End If End Sub (実際は折り返していません) とすると、コンボボックスをクリックした時にエラーとなり クエリ式'(((講師.ランク)= Like '*A'))'の構文エラー:演算子がありません。 と表示されます。間違い箇所を教えて下さい。

  • 年を条件にデータを抽出するには?

    フィールド1 2012/01/01 2012/01/02 2011/01/01 2011/01/02 2010/01/01 2010/01/02 と言うデータがあり、それをもとに表形式でフォームを作りました。 フォームヘッダーにコンボボックス(名前:コンボ3)を作り、 値集合タイプ:値リスト 値集合ソース:"2012";"2011";"2010" にしました。 コンボボックスのAfterUpdateイベントでコンボ3に表示されている値を年を抽出したいのですが vbaでどうやればいいのでしょうか? クエリは作りません。 Private Sub コンボ3_AfterUpdate() Me.Form.Filter = "フィールド1 Between #" & Me.コンボ3.Value & "# And #" & Me.コンボ3.Value & "#" & "'" Me.Form.FilterOn = True End Sub や Private Sub コンボ3_AfterUpdate() Me.Form.Filter = "フィールド1 Between #" & Me.コンボ3.Value & "/01/01" & "# And #" & Me.コンボ3.Value & "/12/31" & "#" & "'" Me.Form.FilterOn = True End Sub にすると 実行時エラー クエリ式 <式> の <メッセージ> (エラー 3075) 入力した式が、メッセージに示されている原因によって無効です。フィールド名と区切り記号を正しく入力していることを確認してから、もう一度実行してください。 となってしまいます。 2010/01/01と2010/01/02を抽出させたいです。 ご回答よろしくお願いします。

  • MySQLで昇順に並べ替え

    MySQL(データベース)で商品名と価格を格納したテーブル(syouhin)があります。商品名のキーワードを入力するフォーム(form.html)とデータを受け取る(kensaku.php)があり、以下のようにデータを表示させています。 <!-- form.html --> <html> <head> <title>商品名と価格</title> </head> <body> <form method="get" action="kensaku.php"> <input type="text" name="name"> <input type="submit" name="submit" value="検索"> </form> </body> </html> //kensaku.php <? $name=$_REQUEST["name"]; $conn = mysql_connect ("localhost", "username", "password") or die ('接続できませんでした'); mysql_select_db ("db",$conn); //クエリ生成 $sql = "select * from syouhin where name like '%$name%'"; $res = mysql_query($sql); while($row = mysql_fetch_array($res)){ echo "<table border='1' cellpadding='0' cellspacing='0'>"; echo "<tr>"; echo "<td>".$row[name]."</td>"; echo "<td>".$row[price]."</td>"; echo "</tr>"; echo "</table>"; } ?> ここから質問なんですが、今結果が表示されているまさにそのページで、並べ替えをしたいのです。よく検索結果の並べ替えで、[価格の安い順に並べる]をクリックすると並び変わるのがありますよね。それと同じ事をしたいのです。 僕が考えた方法は、もう一つのページ(例えば、kensaku_asc.php)を作って、 $sql = "select * from syouhin where name like '%$name%'"; の部分だけを $sql = "select * from syouhin where name like '%$name%' order by price"; に変えて、そのページにリンクさせる。でもその場合、form.htmlから受け取ったデータ(ここでは商品名のキーワード)を引き継ぐという事ができないので、そのあたりのところのヒントをいただければと存じます。よろしくお願いします。

    • 締切済み
    • PHP
  • Access filterにて

    フィルターする時、オプションボタンやトグルボタンを使用し、Select Caseで分岐させてフィルターするやり方でなく、下記のようにすることはできますか? ************************************************************** 「Me.検索項目」はコンボボックス(集合体ソースには、検索するフィールド名を用意) 「Me.日付入力」は日付だけを入力するテキストボックス Me.Form.Filter = "'" & Me.検索項目 & "'" = "#" & Me.日付入力 & "#" Me.Form.FilterOn = True ************************************************************** 検索するフィールド名をいちいち記述しなくて済むのでは?と思いましたが、結果が得られませんでした。 どこがおかしいのでしょうか?よろしくお願いします。

  • Accessについて質問です。

    Win2000、Access2000を使用しています。 何件か教えて頂きたいことがあります。 1)「アプリケーションの実行」でAdobeAcrobatを起動させることは可能ですか。 2)ハイパーリンクしたオブジェクトにフォーカスした時、マウスポインタが指マークにならないで普通の矢印マークにすることは可能ですか。 3)5月頃にこのページで教えて頂いた検索をするVBのコードについてですが、 Private Sub btn_検索02_Click()   Dim kensaku As String   If Not Me![t_04] = "" Then kensaku = kensaku & _   "([舗装施行年度] Like '*" & Me![t_04] & "*') AND "   If Not Me![t_05] = "" Then kensaku = kensaku & _   "([舗装工事名] Like '*" & Me![t_05] & "*') AND "   If kensaku <> "" Then   kensaku = Left(kensaku, Len(kensaku) - 5)   DoCmd.OpenForm "検索結果", , , kensaku, acFormReadOnly   DoCmd.Maximize   DoCmd.Close acForm, Me.Name  End If End Sub 以上のコードを教えて頂いてうまく検索できるようになったんですが、 kensaku = kensaku & … イコール(=)の後の kensaku の意味と、 If kensaku <> "" Then kensaku = Left(kensaku, Len(kensaku) - 5) この2行は、どのような動きをするためのコードなのか理解できませんでした。 質問がたくさんありますが、どなたか1つでもおわかりになる方いましたら、お教えください。

専門家に質問してみよう