
いつもお世話になっております。
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
フォームを開くときに、コンボボックスの値を選択(アクセスVBA)
Visual Basic(VBA)
-
Access サブフォームでの選択行の取得
その他(データベース)
-
テキストボックスにクエリ結果を表示させたい
その他(データベース)
-
-
4
Accessのコンボボックスでリストが選択できない
Word(ワード)
-
5
(ACCESS)条件に応じて、テキストボックスを表示・非表示設定
その他(データベース)
-
6
コンボボックスにレコードセットでリストをセットする
その他(データベース)
-
7
Accessのテーブルのフィールドに式を入れる方法
Access(アクセス)
-
8
Accessのフォームにて、詳細行のボタンを行の内容により、表示/非表
その他(Microsoft Office)
-
9
アクセスVBAで既に開いているエクセルを閉じたい
Yahoo!ショッピング
-
10
新規レコード行を非表示にしたい
Access(アクセス)
-
11
入力した値をコンボボックスにすぐに反映させる方法
Excel(エクセル)
-
12
[Access]帳票フォームにて連続する非連結コントロールに個々の値を入れるには
Access(アクセス)
-
13
Access コンボボックスの値をクリアしたい。
PowerPoint(パワーポイント)
-
14
Access フォームのテキストボックスに半角英字のみで入力する設定は
Access(アクセス)
-
15
ACCESSのフォーム、開くんですが、見えないようにするには
Access(アクセス)
-
16
Accessのフォーム上にレコード数とレコード番号の表示
その他(データベース)
-
17
アクセスで#エラーを表示させない方法は?
Access(アクセス)
-
18
どこにもフォーカスを当てたくない
Access(アクセス)
-
19
クエリで出来た表にチェックボックスを追加する
その他(Microsoft Office)
-
20
Accessでレコードを別テーブルへコピーするには
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessのコンボボックスでリス...
-
ACCESS リストボックスの字の色...
-
Accessのコンボボックスの値が...
-
Oracleで文字列型の時間を引き...
-
MS Access フォームでの入力...
-
ACCESSで、リストの内容...
-
パススルークエリのデータ件数...
-
ACCESS コンボボックス 抽出 ...
-
SQL…オーバーラップする時間
-
帳票フォームでのあるコンボボ...
-
エクセルで、抽出したデータだ...
-
Access サブフォームでの選択行...
-
accessでオートナンバーを使わ...
-
前のレコードの値を自動で入れたい
-
Accessでデータを更新したらそ...
-
ExcelのComboboxでマウスのスク...
-
【AccessVBA】レコードセットOp...
-
AccessでIDを入力したら他の項...
-
入力した値をコンボボックスに...
-
ACCESS フォームのサイズ調整
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessのコンボボックスでリス...
-
Accessのコンボボックスの値が...
-
Accessフォーム 大分類→小分類...
-
帳票フォームでのあるコンボボ...
-
Accessのコンボボックスのデフ...
-
ACCESSでコンボボックスにSQLで...
-
accessでオートコンプリート機...
-
ACCESSクエリ抽出条件について
-
ACCESS リストボックスの字の色...
-
SQLサーバーからひっぱるACCESS...
-
Access リスト選択したレコード...
-
アクセスのフォームのコンボボ...
-
Access 帳票フォームのコンボボ...
-
アクセスでコンボボックスを展...
-
リストボックスの値の保存
-
MS-ACCESSについて
-
Accessのフォーム(コンボボッ...
-
Accessフォーム作成中なのですが
-
リストボックスの時はリンク先...
-
[Access2003]コンボボックスと...
おすすめ情報