插入外键ID的值而不是ID

时间:2014-05-01 11:09:25

标签: database vb.net

我遇到了VB.net和它的问题。数据库,在将数据插入表时,我需要插入外键的值而不是键本身。

例如,我有两个表:员工,部门。

使用以下模型

Department (DepID pk, DepName)
Employee (EmpID pk, EmpName, DepID fk)

使用vb winform将数据插入Employee时,

我需要在DepID ...的位置插入(或从组合中选择)DepName。

NB1:我可以使用列数& amp;宽度。

NB2:我可以这样选择数据,但我说的是操纵数据,比如插入,更新,删除...

1 个答案:

答案 0 :(得分:0)

What is needed, is to allow the user to choose the DepName when inserting new Employee.. and not the ID
这是精确使用ValueMemberDisplayMember从绑定控件获得的功能:

    Dim SQL As String = "Select * FROM Department ORDER BY DeptName"
    Using cmd As New OleDbCommand(Sql, dbCon)
        myDS = New DataSet("Dept")
        Dim da As New OleDbDataAdapter(cmd)
        da.Fill(myDS, "Dept")

        frmM.cboDept.DisplayMember = "DeptName"   ' what to SHOW
        frmM.cboDept.ValueMember = "DeptID"       ' value to track
        frm.cboDept.DataSource = myDS.Tables(0)
    End Using

您可以在表单中添加适配器等以跳过代码。 CBO中的每个项目都是数据库行对象,但控件将显示DisplayMember指示的列中的数据,在本例中为“DeptName”

获取值,即DeptID:

Private Sub cboDept_SelectedValueChanged(sender, e ...) 
    myEmployee.DeptID = Convert.ToInt32(cboDept.SelectedValue)
End Sub

使用ValueMember属性,我们使用SelectedValue属性从cbo中选择的数据行中获取DeptID。数据类型将与DB Column的数据类型匹配。

您可以使用List(Of Dept)做同样的事情,其中​​Dept是您构建的类,用于显示名称但允许您检索DeptID。