Oracle データベースに接続された VB.Net Winform アプリケーションに 2 つのグリッド コントロールがあります。最初のものは、ID と TaskName のフィールドを持つテーブル 1 を示しています。2 つ目は、フィールド (とりわけ) タスクを含むリンクされたテーブルを示しています。アプリケーションのロジックでは、2 つのテーブルがリンクされています (テーブル 1、フィールド ID) <----> (テーブル 2、フィールド タスク)。
最初の DataGridView で行を選択するときに、2 番目の GridView にリンクされた行のみを表示したいのですが、それを機能させることはできません。
これが私のコードの試みです:
Dim SQLQuery As String = "SELECT * FROM SCHEME.ARCH_TASKS"
Conn = New OracleConnection(ConnectionString)
Command = New OracleCommand(SQLQuery, Conn)
DataAdapter = New OracleDataAdapter(Command)
DataSet = New DataSet()
DataTable1 = New DataTable
DataSet.Tables.Add(DataTable1)
DataAdapter.Fill(DataTable1)
DataGridView.DataSource = DataTable1.DefaultView
GridControl1.DataSource = DataTable1.DefaultView
SQLQuery = "SELECT * FROM SCHEME.ARCH_LINK_ROLE_TASK"
Command = New OracleCommand(SQLQuery, Conn)
DataAdapter = New OracleDataAdapter(Command)
DataTable2 = New DataTable
DataSet.Tables.Add(DataTable2)
DataAdapter.Fill(DataTable2)
GridControl2.DataSource = DataTable2
DataSet.Relations.Add(DataTable1.Columns("ID"), DataTable2.Columns("TASK"))
これが結果です
http://img11.hostingpics.net/pics/4713062013102413h1253.png
ご覧のとおり、2 つのデータ テーブル間のリレーションシップを手動で追加しましたが、探しているものは実際には機能しません。最初のグリッド コントロールにサブラインを追加するだけです。
http://img11.hostingpics.net/pics/7508382013102413h1309.png
PeterG が提案したことを適用しようとしましたが、まだ機能しません。
Dim SQLQuery As String = "SELECT * FROM SCHEME.ARCH_TASKS"
Command = New OracleCommand(SQLQuery, Conn)
DataAdapter = New OracleDataAdapter(Command)
DataSet.Tables.Add(DataTable1)
DataAdapter.Fill(DataTable1)
SQLQuery = "SELECT * FROM SCHEME.ARCH_LINK_ROLE_TASK"
Command = New OracleCommand(SQLQuery, Conn)
DataAdapter = New OracleDataAdapter(Command)
DataSet.Tables.Add(DataTable2)
DataAdapter.Fill(DataTable2)
DataSet.Relations.Add(DataTable1.Columns("ID"), DataTable2.Columns("TASK"))
BindingSource1.DataSource = DataSet
GridControl1.DataSource = BindingSource1.DataSource
GridControl1.DataMember = "Table1"
BindingSource2.DataSource = BindingSource1.DataSource
GridControl2.DataSource = BindingSource2.DataSource
GridControl2.DataMember = "Table2"
何か不足していますか?
ありがとうございました。