2013-02-08 47 views
0

我正在處理一個列表框,當您單擊一行時,它將填充工作表中的字段。因此,如果我點擊工單18,它將從表格​​中獲取部門,優先級,受理人等,並填寫工單。當我點擊該行,我得到一個MsgBox僅通過寫彈出與票號:VBA SQL返回語句,非值

MsgBox Me.Work_Order_List.Value 

後來,當我嘗試

ticNum = Me.Work_Order_List.Value 
strSQL = "SELECT Description_Of_Problem FROM Work_Orders WHERE " & ticNum & " = Ticket_Number;" 
Debug.Print strSQL 
Me.Notes = strSQL 

我的便籤盒將打印SQL語句,但從未運行。我在這裏做錯了什麼?我需要填充很多領域,所以還有更快的方法嗎?

謝謝

回答

0

經過多次編輯後,我發現DLookup並不方便,有多個字段和一個未綁定的表單。所以最後我決定:

Dim myR As Recordset 

Set myR = CurrentDb.OpenRecordset("Work_Orders", dbOpenDynaset) 
myR.FindFirst ("[Ticket_Number] = " & Me.Work_Order_List.Value & "") 

Me.Update_Status = myR![Current_Status] 
Me.Downtime_Code = myR![Downtime_Code] 
Me.Date_For_Completion = myR![Date_For_Completion] 
Me.Notes = myR![Notes_From_Assignee] 
Me.Description_Box = myR![Description_Of_Problem] 
Set myR = Nothing 

而我使用myR.FindFirst抓住我正在尋找的行。由於我的票務系統仍處於測試階段,因此我只有約100條記錄,但我希望能夠通過.FindFirst達到10000以上時快速搜索。

0

您沒有運行查詢。如果您希望將數據填入字段,則應將表單的記錄源設置爲sql。

Me.RecordSource = "SELECT Description_Of_Problem, Other, Etc FROM Work_Orders" 

以上只會在控件綁定到字段時才起作用,但它是填充很多控件的最簡單方法。

最好的啓動方式是使用表單嚮導基於Work_Orders創建表單。您可以通過創建組合框來選擇表單上的記錄,從而避免任何編碼。用戶然後可以選擇一張票並跳到該記錄。也有一個嚮導。


Dim rs As DAO.Recordset 

ticNum = Me.Work_Order_List.Value 
strSQL = "SELECT Description_Of_Problem FROM Work_Orders WHERE Ticket_Number =" _ 
     & ticNum 
Debug.Print strSQL 
Set rs = CurrentDB.OpenRecordset strSQL 
Me.Notes = rs!Description_Of_Problem 

綁定形式

開始基於表或查詢

Form wizard

按照通過步驟的形式嚮導用落得形式在設計視圖

the form in design view

有很多方法可以瀏覽記錄,你似乎喜歡列表框。添加一個列表框,確保選擇了該向導。

select listbox

選擇要查找當前形式

find record on form

上記錄和選擇項目出現在列表框中

select listbox items

選擇一個項目找到它在窗體上。

select item to find record

這是什麼使得它綁定的形式,記錄源,它可以是一個表名,查詢名稱或SQL語句。請注意,要自動填寫的控件綁定到字段名稱,但查找記錄的列表框標記爲「未綁定」。

bound form

1
Me.Notes = DLookup("Description_Of_Problem", "Work_Orders", "Ticket_Number=" & ticNum) 

這正是我一直在尋找。我能夠刪除我的代碼的其餘部分,並將其用於每個字段。感謝HansUp!

+0

告訴你,爲什麼你要查看一堆字段(慢,不可編輯)而不是綁定查詢或表(快速,可編輯)?即使你只是想將幾個字段寫入多個控件,你最好從記錄集開始工作。 DlookUp適用於一個或兩個控件,通常來自不同的表格。 – Fionnuala 2013-02-08 22:55:29

+0

我選擇這個是因爲我不熟悉綁定查詢。我嘗試了你提供的代碼,並試圖使其工作,但我不能。我將不得不做一些關於記錄集的研究,因爲截至目前,我在每個子集的開頭和結尾處打開和關閉了一個記錄集,並且我認爲每次點擊一行時需要更多的時間才能打開和關閉,而不是DLookUp 。所以要回答你的問題:因爲我仍然在學習VBA,而DLookUp爲我所做的事情工作。 – Grant 2013-02-11 12:20:54