2014-09-30 67 views
0

我有一个处理oledb的小问题。 我有两个Excel表格: 一个包括系统和企业负责人vb2010 oledb select where select results

[person1|system1] 
    [person1|system2] 
    [person1|system3] 
    [person2|system4] 
    [person2|system5] 
    ... 

[system1|location|weight|height] 
    [system2|location|weight|height] 
    ... 

现在我希望能够选择一个人写的系统信息的系统的另一个信息(为这个人的系统)到一个datagridview

旁路:我不能改变表格,因为我从其他地方得到它们。

我迄今为止代码:

Using cn As New System.Data.OleDb.OleDbConnection 
     Dim Builder As New OleDbConnectionStringBuilder With _ 
      { _ 
       .DataSource = "reports\PM.xlsx", _ 
       .Provider = "Microsoft.ACE.OLEDB.12.0" _ 
      } 
     Builder.Add("Extended Properties", "Excel 12.0;") 
     cn.ConnectionString = Builder.ConnectionString 

     cn.Open() 

     Using cmd As OleDbCommand = New OleDbCommand With {.Connection = cn} 
      cmd.CommandText = "SELECT F2 AS system FROM [table1$] WHERE F1 ='" & ComboBox2.SelectedItem & "'" 
      Dim dr As System.Data.IDataReader = cmd.ExecuteReader 

      dtSheet1.Load(dr) 
      DataGridView1.DataSource = dtSheet1 
     End Using 
    End Using 

Thatworks完美到目前为止,我收到在DataGridView所有系统的名称,但我不知道如何从其他表与来自第一结果中进行选择。 我需要类似

 SELECT F2 AS location, F3 AS weight, F4 AS hight FROM [table2$] WHERE F1 =ONE OF THE RESULTS FROM THE QUERY ABOVE'" 

在此先感谢,我真的很感谢您的帮助!

+0

你是问你如何加入两个表,所以你可以得到所有的ComboBox2.SelectedItem系统信息?还是你问如何根据选定的人员记录获取系统信息? – Steve 2014-09-30 20:14:11

+0

对不起,我的英语不太好。最后,您应该能够选择一个人,并且datagridview应该显示来自该人的信息的所有系统。 – 2014-09-30 20:32:12

+0

那么具体的问题是什么?如何把人放在网格中?如何从网格中获取选定的人员?或者,如何根据某人选择系统信息表中的数据? – Steve 2014-09-30 20:41:44

回答

0

您可以使用原有的查询作为条件加入两个表中的数据:

SELECT t2.F2 AS location, t2.F3 AS weight, t2.F4 AS hight 
FROM [table2$] as t2 
    JOIN [table1$] as t1 
    ON t2.f1 = t1.f1 
WHERE t1.F1 ='" & ComboBox2.SelectedItem & "'"