Visual Studio VB - 从数据表而不是数据库查询

时间:2016-09-28 08:25:22

标签: sql vb.net combobox datatable

我是一位经验丰富的Excel VBA编码员,已经在这个表格中被深深地投入了<>访问数据库项目。我正在处理表单的一部分,其中用户(员工)将选择站点位置(总共84个,但不是所有将根据他们所在的团队显示),然后选择该站点内的部门。共有2,189个部门,因此部门列表应仅显示该部门的部门。

我们查询和更新的数据库是在非常慢的服务器上,所以我想在开始时将一个完整的查找表(限制为团队工作的那些)拉到一个数据表中,然后填充第一个组合在该数据表中包含唯一站点的框,然后在该站点的所有部门填充第二个组合框。

数据表或多或少只是| ID |网站|部门|。我可以很好地填充数据表并将其保留在缓存中。我可以遍历数据表来填充组合框,但这比它慢。

那么是否有一种方法可以从该数据表中查询直接填充组合框,或者将辅助数据表填充到组合框?对于第一个框,它发现UNIQUE网站是挑战。然后对于第二个,它是部门,其中站点等于在第一个框中选择的那个。

谢谢!

1 个答案:

答案 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