いつもお世話になっております。
ACCESS初心者です。
テキストボックスに入力したフリガナから、あいまい検索させ抽出した
ものをコンボボックスに表示させたいのですが、うまくいきません。。
(コンボボックスに何も表示されないです)
過去の質問やネット検索でも調べたのですがイマイチ分かりませんでした。
どなたか詳しい方、ご教示いただけると嬉しいです。
OS:windowXP
ACCESS:Ver2003
Private Sub テキストボックス名_Afterupdate()
Me.コンボボックス名.RowSource = "SELECT フィールド名 FROM テーブル名 WHERE フリガナ LIKE '" & Me!テキストボックス名 & "*';"
End Sub
どうぞよろしくお願いいたします。
No.6ベストアンサー
- 回答日時:
もしかして、txt検索値の内容を書き変えただけで、コンボボックスの表示内容の変化を期待していませんか?
(1)txt検索値の内容を変更しても、フォーカスを移動する等の行動を取るまで、AfterUpdateイベントは発生しません。
(2)Requeryしただけではコンボボックスのリストが変化するだけで、現在の表示内容は変化しません。
AfterUpdateイベントの発生はプログラムでどうにかなるモノではありません。
Changeイベントでは1文字ずつイベントが発生するので、現実的ではないでしょう。
Requery後にコンボボックスの内容を変更したい場合は以下のコードを試してみてください。
With Me.コンボボックス名
.RowSource = "SELECT ~略
.ReQuery
If .ListCount > 0 Then
.Value = .ItemData(0)
Else
.Value = Null
End If
End With
私のやりたかった事は
Me.コンボボックス名.RowSource = "SELECT [T得意先名].[得意先名] FROM T得意先名 WHERE 得意先名フリガナ LIKE'" & Me!テキストボックス & "*';"
と記述しましたら実現することが出来ました。
[]が必要だったとの見解でいいのでしょうか。。。^^;
私もリクエリが無いと指摘を頂いた時に、「そっか!」と思ったのですが
何故かrequeryを記述しなくても動作しております・・・^^?
それが何故なのかよくわかりませんが、とりあえずやりたかった事は
実現する事が出来ました。
色々ご回答いただき、本当にどうもありがとうございましたm(__)m
No.5
- 回答日時:
補足: SQL文そのものを確認されたし。
1、標準モジュールにDBSelect関数をコピペ。
2、イミディエイトウインドウでテスト。
注意: DBSelect関数では、ワイルドカードは'*'でなく'%'。(通常は、もちろん'*')
[イミディエイト]
? DBSelect("SELECT フィールド名 FROM テーブル名 WHERE フリガナ LIKE 'ウチュウ%';")
で、下記のように該当するレコードが表示されますか?
[イミディエイト]
? DBSelect("SELECT * FROM Customer")
1;鈴木 一郎;スズキ イチロウ;2;杉下 五郎;スギシタ ゴロウ;3;中村 主水;ナカムラ モンド;
? DBSelect("SELECT * FROM Customer WHERE Yomi LIKE 'ス%'")
1;鈴木 一郎;スズキ イチロウ;2;杉下 五郎;スギシタ ゴロウ;
? DBSelect("SELECT * FROM Customer WHERE Yomi LIKE 'スズ%'")
1;鈴木 一郎;スズキ イチロウ;
? DBSelect("SELECT * FROM Customer WHERE Yomi LIKE '%ロウ'")
1;鈴木 一郎;スズキ イチロウ;2;杉下 五郎;スギシタ ゴロウ;
このように DBSelect関数はコンボボックスのローソース等をセットするための関数です。
Public Function DBSelect(ByVal strQuerySQL As String, _
Optional ByVal strSeparator1 As String = ";", _
Optional ByVal strSeparator2 As String = "") As String
On Error GoTo Err_DBSelect
Dim I As Integer
Dim J As Integer
Dim R As Integer
Dim C As Integer
Dim M As Integer
Dim N As Integer
Dim rst As ADODB.Recordset
Dim fld As ADODB.Field
Dim Datas As String
Set rst = New ADODB.Recordset
' =================
' Begin With: rst
' -----------------
With rst
.Open strQuerySQL, _
CurrentProject.Connection, _
adOpenStatic, _
adLockReadOnly
If Not .BOF Then
M = .RecordCount - 1
N = .Fields.Count - 1
.MoveFirst
For R = 0 To M
For C = 0 To N
Datas = Datas & .Fields(C) & strSeparator1
Next C
If Len(strSeparator2) Then
Datas = Datas & strSeparator2
End If
.MoveNext
Next R
End If
End With
' ---------------
' End With: rst
' ===============
Exit_DBSelect:
DBSelect = Datas
Exit Function
Err_DBSelect:
MsgBox "SELECT 文の実行時にエラーが発生しました。(DBSelect)" & Chr$(13) & Chr$(13) & _
"・Err.Description=" & Err.Description & Chr$(13) & _
"・SQL Text=" & strQuerySQL, _
vbExclamation, " 関数エラーメッセージ"
Resume Exit_DBSelect
End Function
たびたびの回答、ありがとうございます。
これは、コンボボックスに値をセットするための関数を作る・・・
ということで認識はあってますでしょうか?
試してはみたのですが、まだまだ勉強不足で理解が足りず、
よくわかりませんでした・・・すみませんm(__)m
私のやりたかった事は
Me.コンボボックス名.RowSource = "SELECT [T得意先名].[得意先名] FROM T得意先名 WHERE 得意先名フリガナ LIKE'" & Me!テキストボックス & "*';"
と記述しましたら実現することが出来ました。
[]が必要だったとの見解でいいのでしょうか。。。^^;
requeryをしなくても動作するのですが、それが何故なのかよくわかりません
色々としていただき、本当にどうもありがとうございましたm(__)m
No.3
- 回答日時:
Customer:
ID_KName______Yomi
_1_鈴木 一郎__スズキ イチロウ
_2_杉下 五郎__スギシタ ゴロウ
_3_中村 主水__ナカムラ モンド
フォーム1:
検索する読み_____[ス__________]
コンボ_検索結果__[鈴木 一郎___]
コンボ_検索結果.値集合タイプ=テーブル/クエリ
コンボ_検索結果.列数=1
次は、フォーム1の[検索する読み]が入力されたら[コンボ_検索結果]に検索結果を表示するサンプルです。
1、Len(Me.検索する読み & "")で、入力の有無をチェック。
2、入力されていれば、LIKE文を使ったSQL文を作成しています。
3、テーブル/クエリをリクエリしています。
4、一応、トップのアイテムデータを選択表示しています。
Private Sub 検索する読み_AfterUpdate()
If Len(Me.検索する読み & "") Then
Me.コンボ_検索結果.RowSource = "SELECT Kname FROM Customer WHERE Yomi LIKE '" & Me.検索する読み & "*'"
Me.コンボ_検索結果.Requery
If Me.コンボ_検索結果.ListCount > 0 Then
Me.コンボ_検索結果.Value = Me.コンボ_検索結果.ItemData(0)
End If
End If
End Sub
この方式は[コンボ_検索結果.RowSource]をその都度設定していますのでプロパティの設定は無用です。
上記コードと比較した場合、3のリクエリが不足しています。
※なお、コンボ_検索結果.値集合タイプ=値リストのやり方もあります。
ご回答ありがとうございますm(__)m
上記コードをコピーさせてもらい、該当箇所を変更(コントロール名など)
して試してみたのですが、やはりコンボボックスには何も表示されませんでした(;_;)
根本的に何かが違うのでしょうか?
No.2の方のお礼のところに、もう少し詳しい状況を書いてみましたので
よろしければ読んでやってくださいm(__)m
引き続きよろしくお願いいたします。
No.2
- 回答日時:
以下の順になっているか確認してください。
Me.コンボボックス名.RowSource = "SELECT ~略
Me.コンボボックス名.ReQuery
SQLを変更する前にQueryしても無駄ですから・・・
この通りになっているのに何も表示されないとしたら、
テーブル内に該当するものが無い場合だけです。
ご回答ありがとうございますm(__)m
記述している順番はその通りになっております。
Me.コンボボックス名.ReQueryを下行に書きましたが駄目でした。
テーブルを直接開いて確認すると、検索値に該当するレコードが
存在しているのですが。。。(;_;)
何か私が基本的な所で間違っているのでしょうか~
もう少し詳しく書きますと、
テーブル名:T得意先名(ID、得意先名、フリガナと3つのフィールドを持ってます)
上記テーブルから「txt検索値」に入力したフリガナ(半角カタカナ)であいまい検索させた結果を
「cob結果」に表示させたいのです。。
テーブル「T得意先名」の「フリガナ」フィールドにはウチュウという文字が
入力されたレコードがありますが、
txt検索値にウチュウと入力しても何も表示されません。
コンボボックスに表示したいのは「得意先名」なのですが。。。
何度もすみません
よろしくお願いいたします。m(__)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ユーザーフォームの書き出しで追加のご相談 ユーザーフォームの値をシートに書き出す際、コードが表示され 2 2022/08/05 10:58
- Access(アクセス) Accessの参照フィールドの列がずれてしまいます 1 2023/07/19 15:00
- Access(アクセス) Accessでセレクタをダブルクリックで別フォームで詳細表示 3 2022/12/20 10:36
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- Visual Basic(VBA) VBA ComboBoxについて 2 2022/10/21 12:15
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) ExcelVBA ドロップボックスで月を選択するとそれ以降のデータが残るようにしたい。 3 2022/12/16 14:53
- Visual Basic(VBA) EXCEL VBA データベースの内容をユーザーフォームに表示したい。 5 2023/02/14 11:40
- Access(アクセス) Accessにインポートした複数のテーブルを表示させる方法が分かりません。 1 2023/01/30 20:22
- Access(アクセス) チェックボックスにチェックが入った後の挙動 1 2022/08/21 12:39
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
フォームを開くときに、コンボボックスの値を選択(アクセスVBA)
Visual Basic(VBA)
-
Access サブフォームでの選択行の取得
その他(データベース)
-
アクセスVBAのMe!と[ ]
Access(アクセス)
-
-
4
Accessで、フォームからフォームへ値を引き継ぐやり方
Access(アクセス)
-
5
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
6
アクセスでテキストボックスの値が空白だったら
Access(アクセス)
-
7
SQL文で パラメータが少なすぎます エラー
Access(アクセス)
-
8
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
9
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
10
「RunSQL」と「Execute」の違い
Access(アクセス)
-
11
サブフォームに対してGoToRecordするには?
その他(Microsoft Office)
-
12
Access レポート印刷するときに1ページに収める方法
Access(アクセス)
-
13
Access 最後のレコードに到達するまでループ処理を行う方法
Access(アクセス)
-
14
【ACCESS】フォーム名/コントロール名を文字列型変数で指定するには
Access(アクセス)
-
15
Accessでのレコード存在チェック
その他(データベース)
-
16
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
17
親フォームからサブフォームのレコードソースを設定
Access(アクセス)
-
18
Accessを開きなおすとテキストボックスの値がエラー#Name?になる
その他(データベース)
-
19
カレントレコードが無い事を判定させる方法
Visual Basic(VBA)
-
20
ACCESSで値を代入できないとは?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessのコンボボックスでリス...
-
コンボボックスのリスト外入力...
-
ACCESS リストボックスの字の色...
-
Accessフォーム 大分類→小分類...
-
Accessのコンボボックスの”すべ...
-
Accessのコンボボックスの値が...
-
accessでのリストボックス選択...
-
Access フォーム内 コンボから...
-
ACCESS2000;日付と曜日...
-
帳票フォームでのあるコンボボ...
-
(ACCESS)フォームデータシート...
-
ACCESSのリストボックス抽出に...
-
ACCESSでフラグによる文字表示
-
エクセルで、抽出したデータだ...
-
Access サブフォームでの選択行...
-
前のレコードの値を自動で入れたい
-
インデックスまたは主キーにはn...
-
ACCESSでVBAから選択クエリの抽...
-
access クエリ yes/no型のクエ...
-
Access 複数フォームを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのコンボボックスでリス...
-
Accessのコンボボックスの値が...
-
ACCESSでコンボボックスにSQLで...
-
.flex-direction プロパティは...
-
ACCESS リストボックスの字の色...
-
帳票フォームでのあるコンボボ...
-
accessでオートコンプリート機...
-
ACCESSクエリ抽出条件について
-
Accessのコンボボックスのデフ...
-
accessでのリストボックス選択...
-
Oracleで文字列型の時間を引き...
-
コンボボックスのリスト外入力...
-
コンボボックスのボタンの大き...
-
更新クエリで変数は使えない?
-
ACCESSのリストボックス抽出に...
-
フォームでの検索
-
Access 帳票フォームのコンボボ...
-
Access2003 孫フォームのRequer...
-
アクセス:フォーム入力:【大...
-
[Access2003]コンボボックスと...
おすすめ情報