0

小さな要件があります。それは次のとおりです。

フォームには、従業員の名前と役割を設定するための 2 つのコンボ ボックスがあります。次のようにコンボボックスにデータを入力しています。

  1. 「DbConnect」というクラスを作成しました。その中には、次のような 02 関数があります。

    Public Function getEmployees() As DataTable  
            Dim employeeDS As New DataSet  
            Dim employeeDA As New SqlDataAdapter("prc_emp_list", conn)  
            employeeDA.Fill(employeeDS, "employees")  
            Return employeeDS.Tables("employees")  
    End Function  
    
    Public Function getRoles() As DataTable  
            Dim roleDS As New DataSet  
            Dim roleDA As New SqlDataAdapter("prc_role_list", conn)  
            roleDA.Fill(roleDS, "roles")  
            Return roleDS.Tables("roles")  
    End Function  
    
  2. 2 つのコンボ ボックスを含むフォームを設計し、次のようにデータを入力しています。

    Public Sub employees()  
        accessFunction.Open()  
        cboEmployees.DataSource = accessFunction.getEmployees  
        cboEmployees.DisplayMember = "emp_name"  
        cboEmployees.ValueMember = "login_id"  
    End Sub  
    
    Public Sub roles()  
            accessFunction.Open()  
            cboRoles.DataSource = accessFunction.getRoles  
            cboRoles.DisplayMember = "role_name"  
            cboRoles.ValueMember = "role_id"  
    End Sub  
    
    Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load  
        employees()  
        roles()  
    End Sub  
    

データはコンボ ボックスに正しく入力されており、私の要件は、最初のコンボから選択して従業員を雇用するときに、2 番目のコンボで対応する役割が選択されることです。

誰でも、この要件について私を助けてください。

よろしく、
ジョージ

4

1 に答える 1

0

これを機能させるには、バインディング ソースとデータ リレーションシップを追加する必要があります。このウォークスルーを検討してください。これはデータグリッドビュー用ですが、概念は同じです。

アイデアを提供するために、簡単なモックアップを作成しました。「EmpTable」はデータテーブルに割り当てる名前であり、「EmpColumn」は親列であることに注意してください。同様に、同じロジックを Roles テーブルに適用します。コードの主な変更点は、両方のテーブルが datarelationship を持つ同じデータセット内にある必要があることです

Dim dtEmp as Datatable
Dim dtRole as Datatable

''//fill tables here

Dim ds as New Dataset()
ds.Tables.add(dtRole)
ds.Tables.add(dtEmp)

Dim dr as New DataRelation( _
 ds.Tables("EmpTable").Columns("EmpColumn"),
 ds.Tables("RoleTable").Columns("RoleColumn"))

''//create binding sources
Dim bsEmp as New BindingSource
Dim bsRole as New BindingSource
bsEmp.Datasource = ds
bsEmp.DataMember = "EmpTable"
bsRole.Datasource = bsEmp
bsRole.DataMeber = "RoleTable"

''//bind the binding sources to the appropriate comboboxes
cboEmployee.Datasource = bsEmp
cboRole.Datasource = bsRole

幸運を。

于 2010-09-11T05:41:03.077 に答える