お世話になります。
リストボックスの設定を下記のように行っています。
Dim SQLtxt As String
SQLtxt = "select T_EmployeeMaster.eCD,Name,Kana " & _
"from T_EmployeeMaster" & _
" order by eCD,Kana"
recList.Open SQLtxt, cnn, adOpenKeyset, adLockOptimistic
Do Until recList.EOF
lstEmployee.AddItem recList!eCD & Space(5) & vbTab & recList!Name & Space(1) & vbTab & recList!Kana
recList.MoveNext
Loop
実際の表示は
0001 山田太郎 ヤマダタロウ
0002 山田花子 ヤマダハナコ
となるのですが、この”0001”のデータを選択し、ボタンをクリックすると同じフォーム内に設定しているテキストボックスに「山田太郎」と表示したいのですがどのようにすればいいのか分かりません。
分かり難い説明で申し訳ありませんが、ご指導お願い致します。
例えば、こういうことでしょうか・・・
Private Sub Command1_Click()
Dim sz As String
Dim p0 As Integer
Dim p1 As Integer
Text1.Text = ""
If List1.ListIndex > -1 Then
sz = List1.List(List1.ListIndex)
p0 = InStr(1, sz, vbTab, vbBinaryCompare)
If p0 > 0 Then
p1 = InStr(p0 + 1, sz, vbTab, vbBinaryCompare)
If p0 > 0 And p1 > 0 And p0 < p1 Then
Text1.Text = Mid$(sz, p0 + 1, p1 - p0 - 1)
End If
End If
End If
End Sub
以上。
岡田様
親切な回答ありがとうございます。
大変参考になります。
リストボックスにて選択したデータ(”0001”)をキーとしてACCESSのデータベースから該当するデータを抽出し、そのデータの内容をフォーム上の各テキストボックスへと表示したかったのです。
ACCESSだと簡単に行えるのですが、VBでは難しいのでしょうか?
私の説明が至らなかったばかりにお手数をお掛けしてしまい申し訳ありません。
SQLread = "select T_EmployeeMaster.* " & _
"from T_EmployeeMaster where T_EmployeeMaster.eCD='" & Mid(lstEmployee.Text, 1, 4)
SQLを用いて抽出をしているのですが、エラーメッセージが表示されてしまいます。(文字列の構文エラー)
リストボックスの選択項目をキーに検索する事は無理なのでしょうか?
ご指導ありましたら宜しくお願い致します。
>SQLを用いて抽出をしているのですが、エラーメッセージが表示されてしまいます。(文字列の構文エラー)
そりゃ普通に構文エラーですよ。
文字列の指定はちゃんと前後を「'」でくくってください。
SQLread = "select T_EmployeeMaster.* " & _
"from T_EmployeeMaster " & _
"where(T_EmployeeMaster.eCD='" & Mid(lstEmployee.Text, 1, 4) & "')"
nanashi様
回答ありがとうございます!
文字列の指定は前後をくぐらなくてはダメだったんですね・・・。
大変勉強になりました!
おかげさまで無事に解決する事が出来ました!
ありがとうございました。
ちょっと突貫で作りましたので、バグやエラーがあってもご容赦・・・
Option Explicit
Private Sub Command1_Click()
Me.Hide
Unload Me
End
End Sub
Private Sub DataList1_Click()
Adodc1.RecordSource = "select * from Member where ID='" & DataList1.BoundText & "'"
Adodc1.Refresh
End Sub
Private Sub Form_Load()
Adodc1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\test.mdb;Persist Security Info=False"
Adodc1.CommandType = adCmdText
Adodc1.CursorLocation = adUseClient
Adodc1.CursorType = adOpenDynamic
Adodc1.LockType = adLockReadOnly
Adodc1.Mode = adModeRead
Adodc1.RecordSource = "select * from Member order by ID"
Adodc1.Refresh
Set DataList1.DataSource = Adodc1
DataList1.DataField = "ID"
DataList1.ListField = "ID"
DataList1.BoundColumn = "ID"
Set DataList1.RowSource = Adodc1.Recordset
DataList1.Refresh
Set Text1.DataSource = Adodc1
Text1.DataField = "Name"
Text1.Refresh
Set Text2.DataSource = Adodc1
Text2.DataField = "Yomigana"
Text2.Refresh
Adodc1.Refresh
End Sub
Private Sub Form_Unload(Cancel As Integer)
Text2.DataField = ""
Set Text2.DataSource = Nothing
Text1.DataField = ""
Set Text1.DataSource = Nothing
DataList1.DataField = ""
Set DataList1.DataSource = Nothing
Adodc1.RecordSource = ""
Adodc1.ConnectionString = ""
End Sub
● プロジェクトのある場所にTEST.MDBを作成し、テーブル名を『Member』
とします。
フィールド情報は、
ID テキスト4文字(主キー)
Name テキスト
Yomigana テキスト
フォームには、DBリストコントロールと、2ツのテキストボックス
を配置し、また、ADODCコントロールを配置します。
ここでは、プログラムの起動時に動的にデータベースに接続するよう
にしています。
ご参考までに・・・
以上。
ツイート | ![]() |