簡體   English   中英

VBA SQL返回語句,不帶值

[英]VBA SQL Returning Statement, Not Value

我正在使用一個列表框,當您單擊一行時,它將填充工作表上的字段。 因此,如果單擊工作票18,它將從表中獲取部門,優先級,受讓人等,並填寫工作訂單。 當我單擊該行時,只需編寫以下內容,我就會彈出一個帶有票號的msgbox:

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語句,但從不運行。 我在這里做錯了什么? 我將需要填充許多字段,所以還有更快的方法嗎?

謝謝

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

那正是我想要的。 我能夠刪除其余的代碼,並將其用於每個字段。 謝謝HansUp!

您沒有運行查詢。 如果要將數據填充到字段中,則應將表單的記錄源設置為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

裝訂表格

基於表或查詢啟動表單向導

表單向導

按照步驟操作,最終在設計視圖中顯示一個表單

設計視圖中的表單

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

選擇列表框

選擇查找當前表單上的記錄

在表格上查找記錄

並選擇要顯示在列表框中的項目

選擇列表框項

選擇一個項目以在表單上找到它。

選擇項目以查找記錄

這就是使其成為綁定形式,記錄源的原因,記錄源可以是表名,查詢名或SQL語句。 請注意,要自動填寫的控件已綁定到字段名稱,但是用於查找記錄的列表框被標記為“未綁定”。

綁定形式

在必須進行多次編輯之后,我發現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+時,它將能夠快速搜索。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM