我正在使用一个Access DB,它有ODBC链接SQL Server表,我有以下脚本来运行TSQL查询,你可以看到我试图在查询中包含Access Forms的值,但它无法运行 . 执行脚本时,表单将打开并填充数据 . 我想知道这是不可能的还是有另一种方法呢?我是TSQL和SQL服务器的新手,这是我的问题 . 如果有人可以提供帮助,请说明 . 非常感谢 .
Function formtest()
Dim qryd As QueryDef
Set qryd = CurrentDb.CreateQueryDef("")
qryd.Connect = "ODBC;DSN=SQLSERVER;"
qryd.SQL = "UPDATE dbo.table1 SET firstname = [Forms]![testform]![datainput]"
qryd.ReturnsRecords = False
qryd.Execute
End Function
1 回答
SQL Server对您的表单一无所知 . 您必须使用查询发送数据 . 像这样的东西:
但是,您必须注意的一件事是,如果
datainput
中有任何单引号,它可能会使SQL无效 . 这也可能是一个安全问题 . 测试单引号并引发错误,或用两个替换它们 .最好的方法是使用参数化查询 . 这绝对可以防止SQL注入问题,并且在许多情况下也有助于提高性能 . 不幸的是,我不相信你可以使用DAO为SQL Server创建一个参数化的查询 . 您必须转换为ADO,这最适合向Jet以外的SQL引擎发送查询 .
要使用ADO,您可能必须通过打开VBA代码窗口并选择工具 - >引用 - >并选中它旁边的框来添加对Microsoft ActiveX数据对象的引用 . 然后你的代码看起来像这样: