2014-09-30 99 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 & "'"