[リストへもどる]
一括表示

投稿時間:2002/08/13(Tue) 21:20
投稿者名:ore
Eメール:
URL :
タイトル:
VBとアクセス
[02/8/12(月)16:31分]分を転記しました。

2つのテーブルから必要項目をとりたいんですが、
できません。お願いします。

cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
   "Data Source= " & App.Path & "\db1.mdb;"
rs.Open "maintable", cn, adOpenKeyset, adLockOptimistic

      ↑ って任意のテーブルめいですか?
      それとも実際に作ってあるテーブル名なんでしょうか?
         
ちなみに今こうしてます

(標準モジュールで宣言)
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
   "Data Source= " & App.Path & "\db1.mdb;"
rs.Open "maintable,undertable", cn, adOpenKeyset, adLockOptimistic

maintableとundertableから必要項目をとりたいんです。


Private Sub Command1_Click()


Dim sql As String
sql = "select m.name,m.tel,s.skill from maintable m,undertable s "
sql = sql & "where m.name=s.name"
rs.Close
rs.Open

Text2.Text = rs(0)
Text3.Text = rs(1)
Text4.Text = rs(2)

end sub

どこがおかしいんでしょうか?お願いします。

投稿時間:2002/08/13(Tue) 21:24
投稿者名:Say
Eメール:
URL :
タイトル:
Re: VBとアクセス
[02/8/12(月)18:22分]分を転記しました。

ADODBとSQLの勉強してください。

一般的なかき方はこんなかんじ

Private Sub Command1_Click()

Dim adoCnn As New ADODB.Connection
Dim adoRst As New ADODB.RecordSet
Dim strSQL As String

strSQL = "Select T1.a As xxx , T1,b As yyy , T2.c As zzz "
strSQL = strSQL & " From T1 Inner Join T2 "
strSQL = strSQL & " On T1.a = T2.a "
strSQL = strSQL & " Where T1.a >100 "
strSQL = strSQL & " Order By T1.a "

adoCnn.Open CNNSTRING ' CNNSTRINGは接続文字列
adoRst.Open strSQL,adoCnn

List1.Clear
List2.Clear
List3.Clear
Do Until adoRst.EOF
    List1.AddItem adoRst("xxx").Value
    List2.AddItem adoRst("yyy").Value
    List3.AddItem adoRst("zzz").Value
    adoRst.MoveNext
    DoEvents
Loop

adoRst.Close
adoCnn.Close
Set adoRst = Nothing
Set adoCnn = Nothing

End Sub

流れは
●Connectionオブジェクトを接続文字列でOpen
●RecordSetオブジェクトを選択クエリでOpen
●EOFまでループでまわしてデータ取得
●RecordSetオブジェクトをClose
●ConnectionオブジェクトをClose
●RecordSetオブジェクトをNothing
●ConnectionオブジェクトをNothing
といったかんじです。

クエリの結合は、Right Join , Left Join , Inner Join について
調べてみてください。
MS Accessをお持ちなら、クエリをWizardで作らせて見るのもいいかもしれません。

投稿時間:2002/08/13(Tue) 21:28
投稿者名:オレ
Eメール:
URL :
タイトル:
Re^2:(解決&お礼) VBとアクセス
[02/8/13(火)10:56分] 分を転記しました。

SAYさんありがとうございます。
そのままじゃあできませんでした。
JOINを使わずにそのままテーブルを並べるとできました。
ありがとうございます。
私が知りたかったのは

rs.Open strSQL, cn、、、、、、
このぶぶんでした。
rs.Open "ファイル名", cn、、、、、
しかしらなかったもので。

できましたありがとうございます。


※ 自分の名前は間違えないように!!