VBA SQL返回语句,而不是值

时间:2013-02-08 22:20:12

标签: sql vba ms-access

我正在使用列表框,当您单击某行时,它将填充工作表上的字段。因此,如果我点击工作单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语句但从不运行。我在这做错了什么?我需要填充许多字段,所以还有更快的方法吗?

由于

3 个答案:

答案 0 :(得分:1)

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

这正是我所寻找的。我能够删除其余的代码并将其用于每个字段。谢谢HansUp!

答案 1 :(得分: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

答案 2 :(得分: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+时快速搜索。