- 題名: Accessのリレーション
- 日時: 2003/10/09 17:31:39
- ID: 897
- この記事の返信元:
- (なし)
- この記事への返信:
- [898] Re[1]: Accessのリレーション2003/10/09 17:53:59
- ツリーを表示
fukuです。自分の環境では正常に動作しました。 ちなみにVisual Studio2003です。 あと、MSのDB接続コントロールは、VB6.0のADODCでやっつけられたので 接続系のコントロールは使っていません。 (どうもソースの貼り付け方がわからないので都合の良いところで 改行、TABあわせしてください) Private m_MyDataSet As DataSet Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim myOleDbConnection As OleDb.OleDbConnection Dim myOleDbCommand As New OleDb.OleDbCommand Dim myOleDbDataAdapter As OleDb.OleDbDataAdapter Dim intRecCnt As Integer = 0 Dim strCnnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\TEST\USER.mdb;Persist Security Info=False" Dim strSQL As String Try 'データ読み込み myOleDbConnection = New OleDb.OleDbConnection(strCnnString) myOleDbConnection.Open() strSQL = "SELECT userlist.userName AS tantou, list.date, userlist_1.userName AS aite " strSQL = strSQL & "FROM (list LEFT JOIN userlist ON list.tantou = userlist.userID) " strSQL = strSQL & "LEFT JOIN userlist AS userlist_1 ON list.aite = userlist_1.userID;" myOleDbCommand.CommandText = strSQL myOleDbCommand.CommandType = CommandType.Text myOleDbCommand.Connection = myOleDbConnection myOleDbDataAdapter = New OleDb.OleDbDataAdapter(myOleDbCommand) 'DataGridへ設定 m_MyDataSet = New DataSet intRecCnt = myOleDbDataAdapter.Fill(m_MyDataSet, "Q_ユーザー情報") Me.DataGrid1.DataSource = m_MyDataSet Me.DataGrid1.DataMember = "Q_ユーザー情報" Me.DataGrid1.Refresh() Catch ex As Exception MsgBox(ex.Message, MsgBoxStyle.Exclamation) Finally If IsNothing(myOleDbDataAdapter) = False Then myOleDbDataAdapter.Dispose() myOleDbDataAdapter = Nothing End If If IsNothing(myOleDbCommand) = False Then myOleDbCommand.Dispose() myOleDbCommand = Nothing End If If IsNothing(myOleDbConnection) = False Then If myOleDbConnection.State <> ConnectionState.Closed Then myOleDbConnection.Close() End If myOleDbConnection.Dispose() myOleDbConnection = Nothing End If End Try End Sub
以下のような場合のリレーションがVB.netで作成できないので、
なにかアイデアがあったらお願いします。
「list」と「userlist」という2つのテーブルがあります。
リスト ユーザーリスト
「list」 「userlist」
tantou userID
date userName
aite
というテーブルにおいて、tantouとaiteはそれぞれユーザーリストに情報が入っています。
[list]のtantouと[userlist]のuserIDとリレーションさせて、[userlist]のuserNameに、
[list]のaiteも[userlist]のuserIDとリレーションさせて、[userlist]のuserNameという形で置き換え、
置き換えた形でDataGridに表示を行う。
データクエリを用いて、[userlist]のuserIDに2つのリレーションを引いた場合はSQL上でAND処理されて、それぞれの表示ができなく、
[userlist]のテーブルを2つにしてそれぞれリレーションさせてみたりした場合は、演算子がありませんといったエラーがでました。
DBはAccess2000を使用しています。
SQL文的なことであるかもしれませんが、お願いします。