我是一位经验丰富的Excel VBA编码员,已经在这个表格中被深深地投入了<>访问数据库项目。我正在处理表单的一部分,其中用户(员工)将选择站点位置(总共84个,但不是所有将根据他们所在的团队显示),然后选择该站点内的部门。共有2,189个部门,因此部门列表应仅显示该部门的部门。
我们查询和更新的数据库是在非常慢的服务器上,所以我想在开始时将一个完整的查找表(限制为团队工作的那些)拉到一个数据表中,然后填充第一个组合在该数据表中包含唯一站点的框,然后在该站点的所有部门填充第二个组合框。
数据表或多或少只是| ID |网站|部门|。我可以很好地填充数据表并将其保留在缓存中。我可以遍历数据表来填充组合框,但这比它慢。
那么是否有一种方法可以从该数据表中查询直接填充组合框,或者将辅助数据表填充到组合框?对于第一个框,它发现UNIQUE网站是挑战。然后对于第二个,它是部门,其中站点等于在第一个框中选择的那个。
谢谢!
答案 0 :(得分:0)
你可以使用Linq to Sql,如“Andrew Morton”所述,我为你做了一个例子:
Dim da As SqlDataAdapter = New SqlDataAdapter("select * from YourDatatable, con)
Dim dt As New Data.DataTable()
da.Fill(dt)
'You can change here your condition as you need
Dim query = (From d1In dt.AsEnumerable() _
Where d1.Field(Of Integer)("ID") = 1 And d1.Field(Of Integer)
Select d1!ID, order!Site , d1!Department ,
If query.Count > 0 Then
comboBox1 .Items .Add (query(0).Site) 'Fill your Combobox1
end if
Dim query2 = (From d2 In dt.AsEnumerable() _
Where d2.Field(Of Integer)("ID") = 2 And d2.Field(Of Integer)
Select d2!ID, order!Site , d2!Department ,
If query2.Count > 0 Then
comboBox2 .Items .Add (query2(0).Department ) 'Fill your Combobox2
end if