0

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"

何か不足していますか?

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

4

0 に答える 0