2013-03-07 30 views
0

我一直在環顧四周,但似乎無法找到如何做到這一點。如何在VB中運行SQL select語句

我想在VB中執行一個SELECT sql語句,它接受來自表單的參數。例如,用戶選擇From和To date,SQL應該選擇他們選擇的內容。

我知道你不能使用SELECT SQL的DoCmd.Execute方法,所以我需要打開記錄集 - 但是如何?這是我到目前爲止已經試過

Dim recordSet As DAO.recordSet 
Dim SQL As String 

SQL = "SELECT * FROM tblWebMeetingData" 
Set recordSet = CurrentDb.OpenRecordset(SQL) 

'More code in here 

recordSet.Close 

Set recordSet = Nothing 

因爲這個執行沒有錯誤我認爲它實際上得到的結果 - 所以有沒有辦法,看看它真的返回?

感謝

回答

2

第一:它的重命名記錄集RS,例如一個很好的建議,因爲「記錄集」是保留名稱。這是誤解。

此記錄集包含您通過SQL語句查詢的記錄。您可以通過rs.fields("fieldname").value訪問這些數據。使用rs.movenext移至下一個記錄集。

要合併表單的控制值,我使用在打開記錄集之前構建完整SQL語句的方法。說形式被命名爲「myForm會」和控制顯示「myControl」,你可能會寫某種

SQL = "SELECT * FROM tblWebMeetingData WHERE myfield = " & forms!myform.mycontrol.value 

請務必表格只包含有效的值,因爲任何錯誤格式化值將直接導致SQL執行錯誤。

我希望這是你想要的。

+0

因此,如何將我去尋找不同的記錄? – Katana24 2013-03-07 11:14:59

+0

查看來自Wawrzyniec Sz的回答。當然,使用這些數據的方式取決於你想要對它們做什麼。如果你可以在這一點上更具體一些,我們可以幫助你更好:-) – 2013-03-07 11:45:54

+0

好吧,所以表我看着從19個領域獲取數據,我想在VB中的SQL語句,將從該表中獲取所有數據關於用戶在下拉框中選擇的內容。其結果應寫入Excel文件 - 我可以編寫好的Excel代碼,但在嘗試將SQL傳遞給它時遇到了問題。 – Katana24 2013-03-07 11:50:28

1

在這裏,你來了示例代碼有關從它迭代trought記錄集,並使用值(我希望這有點幫助):

Dim i As Integer 
Do While Not rs.EOF 
     Sheets("D_" & day).Cells(i, 1) = rs.Fields(0).Value 
     Sheets("D_" & day).Cells(i, 2) = rs.Fields(1).Value 
     rs.MoveNext 
     i = i + 1 
Loop 

rs.Close