如何从另一个数据表中查找值并将其显示在绑定的datagridview的未绑定列中

时间:2013-07-17 18:19:50

标签: vb.net

对不起,我试图寻找答案,但我很难将我发现的例子翻译成我自己的场景。

我有一个MS Access数据库,其中包含“Employees”表,其中包含以下列:

“员工ID”,“姓名”,“中间人”,“最后”,“雇佣日期”,“被解雇的日期”。

另一个包含列的“工作”表:

“日期”,“员工ID”,“活动”,“工作小时数”,“部门”,“班次”,“使用的设备”,

datagridview绑定到“Work”表。 我在设计时使用查询编辑器查询FillbyDate(),因此只加载特定日期的条目。

我想创建一个未绑定的列,使用员工ID来查找员工名称(员工表)中的员工名称(NAME,MIDDLE和LAST)。

我对使用VB.Net进行编码完全不熟悉,这可能是我不理解或找不到合适示例的原因。我将非常感谢一些示例代码和每个步骤的注释,以了解事情是如何工作的。

正如我所读的几本编码书一样: 使用VB.Net实现数据库编程,Clearly Visual Basic 2010,Masterig MS Visual Basic 2010

提前谢谢你。

1 个答案:

答案 0 :(得分:0)

更好的方法是根据Employee ID字段创建一个join表的SQL查询,并根据日期字段过滤数据。 DataGridView将绑定到DataTable,DataTable将根据该SQL查询进行填充。

示例代码:

Dim FilterStr1 As String = "03/01/2013"
Dim DBPathStr1 As String = "C:\db1.mdb"

Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    Dim SqlConnStr1 As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & DBPathStr1 & ";"

    Dim SqlStr1 As String = <SQL>
                                SELECT
                                    W.[Date]
                                    ,W.[Employee ID]
                                    ,W.[Activity]
                                    ,W.[Hours worked]
                                    ,W.[Department]
                                    ,W.[Shift]
                                    ,W.[Equipment Used]
                                    ,E.[Name]
                                    ,E.[Middle]
                                    ,E.[Last]
                                FROM [Work] AS W
                                INNER JOIN [Employees] AS E
                                    ON W.[Employee ID] = E.[Employee ID]
                                WHERE W.[Date] = #<%= FilterStr1 %>#
                            </SQL>.Value

    Dim OleDBAdap1 As New OleDbDataAdapter(SqlStr1, SqlConnStr1)
    Dim SqlDTable1 As New DataTable

    OleDBAdap1.Fill(SqlDTable1)
    DataGridView1.DataSource = SqlDTable1

    OleDBAdap1.Dispose()
End Sub

要使用此代码,您需要使用MS Access数据库的路径更改变量DBPathStr1的值,并为FilterStr1变量设置日期值。

修改

可以使用DateTimePicker控件分配FilterStr1变量的值。为此,您需要在表单上添加DateTimePicker控件并添加以下代码。

Private Sub DateTimePicker1_ValueChanged(sender As System.Object, e As System.EventArgs) Handles DateTimePicker1.ValueChanged
    FilterStr1 = DateTimePicker1.Value.ToString("dd/MM/yyyy")
End Sub