【发布时间】:2016-08-27 05:51:51
【问题描述】:
我有 Access 前端,它由后端的 SQL Server 提供支持。
我制作了一个需要用户输入的表单,根据输入它应该运行直通查询并应该在子表单中显示结果。我在网上看到这不能通过 sql 命令完成,它需要将 sql 编码包装在 VBA 编码中。
我做了这样的代码:
Private Sub id_AfterUpdate()
Dim MyDb As Database, MyQry As QueryDef
Set MyDb = CurrentDb()
Set MyQry = MyDb.CreateQueryDef("")
MyQry.Connect = "ODBC;DSN=mikecollections;UID=***;PWD=****;DATABASE=mikecollections;"
MyQry.SQL = "select currency.tb_coins.id,documenttype,documentsubtype,documentname" & _
"from currency.tb_coins" & _
"inner join collectibles.tb_documents on tb_coins.id=collectibles.tb_documents.prodid" & _
"where currency.tb_coins.id=[forms]![test_form]![id]"
End Sub
当我在表单的 id 字段中输入值后,此代码应该会触发,但没有任何反应。我不知道如何使这段代码工作。我是 SQL 和 VBA 新手,请帮忙!
【问题讨论】:
-
我添加了该行并按F5,它以宏框打开,我没有看到任何MsgBox。
-
你是对的,我将名称从“id”更改为“用户输入”,现在当我更新字段时,我得到一个弹出框,其中包含“select currency.tb_coins.id,documenttype, documentsubtype,documentname & _ from currency.tb_coins & _ inner join collectibles.tb_documents on tb_coins.id=collectibles.tb_documents.prodid & _ where currency.tb_coins.id=[forms]![test_form]![id],这基本上是不带引号的查询
-
谢谢,access/VBA 没有将 "[forms]![test_form]![userinput]" 转换为一个值,而是将整个代码传递给 sql server。 VBA 中可以从表单中获取输入的更好的代码应该是什么?
-
好吧,我添加了代码,但结果没有变化。也许我做得不对。
标签: sql sql-server vba ms-access