none
Form下兩個有相關連性的DataGridView RRS feed

  • 問題

  • 請教各位大大..................

    目前我的問題是,

    我的Form裡面有兩個DataGridView
    左邊的DataGridView為LeftmanDataGridView..........部門代號,部門名稱

    SELECT  DepNo AS 部門代號, DepName AS 部門名稱 FROM  dbo.C_Dept


    右邊的DataGridView為RightmanDataGridView................員工代號,員工姓名

    SELECT   ManID AS 員工代號, ManName AS 姓名 FROM dbo.A_DeptMan

     

    如果點到LeftmanDataGridView的第一個欄位(部門代號)時,

    右邊的RightmanDataGridView裡的內容也會跟著LeftmanDataGridView的游標變動。

    簡單的說,就是.......
    右邊的RightmanDataGridView的內容是跟著左邊的LeftmanDataGridView游標點到那一個部門而跟著變動的。

    RightmanDataGridView連線字串為

    SELECT   ManID AS 員工代號, ManName AS 姓名 FROM dbo.A_DeptMan

    在A_DeptMan資料庫裡 也有一個DepNo AS 部門代號

    如果將在RightmanDataGridView把連線字串寫為

    SELECT  DepNo AS 部門代號, ManID AS 員工代號, ManName AS 姓名 FROM dbo.A_DeptMan  WHERE DepNo = a

    先設一個變數為a,讓a=DepNo

    這樣a就會跟著LeftmanDataGridView的DepNo而動,

    這樣的話,在我右邊的RightmanDataGridView就會出現三個欄位...........部門代號,員工代號,員工姓名

    可是我只要員工代號和員工姓名,

    請問要怎麼寫才能讓我點到左邊的部門代號時,右邊的DataGridView也會跟著左邊的部門代號而變動呢??

     

    以下是我在 LeftmanDataGridView寫的小小測試,因為不知在怎麼寫下去,也不知是否有錯,

    再請各位大大多多指導.............謝謝!!

     

    程式碼區塊

     Private Sub LeftmanDataGridView_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles LeftmanDataGridView.CellContentClick
      Private Sub LeftmanDataGridView_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles LeftmanDataGridView.CellContentClick
            Dim a As Object
            Dim cn As New SqlClient.SqlConnection("server=.;database=cmms1;uid=sa;password=sesc")
            Dim da As New SqlClient.SqlDataAdapter
            Dim ds As New DataSet
            Dim leftman As String = LeftmanDataGridView.CurrentRow.Cells(0).Value
            a = LeftmanDataGridView.CurrentRow.Cells(0).Value
            If a <> "" Then
                Dim cmd As New SqlClient.SqlCommand("SELECT  DepNo AS 部門代號, DepName AS 部門名稱 FROM  dbo.C_Dept ", cn)
                da.SelectCommand = cmd
                da.Fill(ds, "C_Dept ")

                If ds.Tables("C_Dept").Rows().Count > 0 Then
                    a = ds.Tables("C_Dept").Rows(0)(1)
                    cmd = New SqlClient.SqlCommand("SELECT  ManID AS 員工代號, ManName AS 姓名 FROM dbo.A_DeptMan ", cn)

                    da.SelectCommand = cmd

                    da.Fill(ds, "A_DeptMan ")

                End If
            End If
        End Sub

     

     

    2007年11月30日 上午 02:37

解答

  • HI,

     

    如果在您的資料庫中, Table1與Table2之間建有關聯, 則加入資料來源的時候, 選擇這兩個Table, 這兩個Table就會出現階層關係, 所以Table1底下可以看到Table2

     

    tihs

     

    2007年12月1日 上午 03:04

所有回覆

  • HI,

     

    您要的這個功能可以不用寫程式, 您只要為您的專案加入新的資料來源, 選擇您要查詢的兩個Table, 資料來源視窗中就會出現兩個查詢得到的Table, 將第一個Table拖到Form上會形成DataGridView, 然後再拖放第一個Table底下的第二個Table形成另外一個DataGridView, 就可以達到您要的效果了

     

    tihs

     

    2007年11月30日 上午 06:59
  • Hi,tihs

    我大概能懂你的意思,但我不懂的是在專案加入新的資料來源後,不是自別的Table嗎?

    所以第一個Table底下怎麼會有第二個Table呢?

    還是有相關的資訊,可供參考呢?

    我找了一下網路,不知是不是我找錯方向,都沒有看到相關的訊息,

    可否請您,說明或附參考...........................謝謝您!!

    2007年11月30日 上午 08:14
  • HI,

     

    如果在您的資料庫中, Table1與Table2之間建有關聯, 則加入資料來源的時候, 選擇這兩個Table, 這兩個Table就會出現階層關係, 所以Table1底下可以看到Table2

     

    tihs

     

    2007年12月1日 上午 03:04