对不起,我试图寻找答案,但我很难将我发现的例子翻译成我自己的场景。
我有一个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
提前谢谢你。
答案 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