DBでまったく同じ名前の人が登録されていた場合、名前とフリガナがデータに存在する数だけ繰り返して表示されます。
(例)「田中」という名前が2つ存在した場合、検索後に表示される名前とフリガナ
は「田中…田中」とか「タナカ…タナカ」となります。
↓は指定されたテキストにデータを格納する処理関数を作って飛ばしています。
Public Sub SQLData(st_value As String, textC As Control)
Dim strSQL As String
'前のデータが入っているといけないので、クリアの処理をする
textC.Text = ""
Do Until rs.EOF
'値がNUllの場合、処理を抜ける
If IsNull(rs.Fields(st_value)) Then
textC.Text = ""
Exit Sub
End If
strSQL = rs.Fields(st_value)
If textC.Text = "" Then
textC.Text = strSQL
Else
textC.Text = textC.Text & vbCrLf & strSQL
End If
rs.MoveNext
Loop
rs.MoveFirst
SQL文で情報を取りに行くときに、条件を工夫すればいいんでしょうか?
DBはAccessです。
VB6バージョンを使用してます。
ご教授お願いします。
End Sub
できてるんだから、それで良いと思いますが、
>SQL文で情報を取りに行くときに、条件を工夫すればいいんでしょうか?
http://sql.main.jp/cont/sql/se/group.html
DBのAddressテーブルには
ID、 名前、 カナ、 メールアドレスの項目があって。
001 田中浩二 タナカコウジ aaa@co.jp
002 伊藤ヒロシ イトウヒロシ bbb@ne.jp
003 田中浩二 タナカコウジ ccc@co.jp
とあったとします。
テキストボックスに「田」と入力して、検索ボタンをクリックすると、
あいまい検索をして、
下記のSQLでデータを取りにいきます。
SELECT *
FROM Address
WHERE Name LIKE '田*'
上記の条件で、2件以上ある場合は、もう1つのフォームが表示されて
リストボックスに「田」の付く名前の人の一覧が表示されて
その中から、「田中浩二」を選ぶと、メインフォームのそれぞれの
テキストボックスに、ID、名前、カナ、メールアドレスが表示されるように
したいんですけど、前にも言ったように、名前のテキストボックスとかに
「田中浩二…田中浩二」となってしまうんです。
いいSQL文が思いつかなくて。。。
教えてください。
最初の文面を読んだだけじゃどういうことがしたいかわからないので、自分の理想と現実の状況をちゃんと書いてください。
要するにSQLで抽出したデータがあって、それをリストボックスに表示。
リストボックスで選んだ人の情報をメインで表示させたいけど、うまくいかないって事ですか?
>リストボックスに「田」の付く名前の人の一覧が表示されて
その時点で001の田中浩二と003の田中浩二は違う人(少なくともDB上は)
なんだから
>「田中浩二…田中浩二」となってしまうんです。
必要な処理にしか思えないんですが?どちらかの田中浩二
が選ばれた時点でIDで情報を取ればいいのでは?。
逆に、田中浩二を選択した場合、どちらの情報を表示するのですか?
sakuさん、特攻隊長まるるうさんありがとうございます。
お二人のレスを見て、思いついてやってみたら出来ました
説明不足ですみませんでした。
ツイート | ![]() |