SQL Server不知道任何有关您的表单。你必须用查询发送数据。事情是这样的:
你有
qryd.SQL = "UPDATE dbo.table1 SET firstname = '" & [Forms]![testform]![datainput] & "'"
有一点要注意的是,虽然如果在任何单引号您datainput
它可能无效的SQL。这也可能是一个安全问题。要么测试单引号并提出错误,要么用两个替换它们中的每一个。
最好的办法是使用参数化查询。这绝对可以防止SQL注入问题,并且在许多情况下也有助于提高性能。不幸的是,我不相信你可以使用DAO为SQL Server创建一个参数化查询。您必须转换为ADO,它最适合将查询发送到Jet以外的SQL引擎。
要使用ADO,您可能需要打开VBA代码窗口并选择工具 - >引用 - >并选中它旁边的框,以添加对Microsoft ActiveX数据对象的引用。然后,您的代码会是这个样子:
Dim Conn1 As ADODB.Connection
Dim Cmd1 As ADODB.Command
Dim Param1 As ADODB.Parameter
Rem Create and Open Connection Object.
Set Conn1 = New ADODB.Connection
Conn1.ConnectionString = "ODBC;DSN=SQLSERVER;"
Conn1.Open
Rem Create Command Object.
Set Cmd1 = New ADODB.Command
Cmd1.ActiveConnection = Conn1
Cmd1.CommandText = "UPDATE dbo.table1 SET firstname = ?"
Rem Create Parameter Object.
Set Param1 = Cmd1.CreateParameter(, adVarChar, adParamInput, 25)
Param1.Value = [Forms]![testform]![datainput]
Cmd1.Parameters.Append Param1
Set Param1 = Nothing
Rem Open Recordset Object.
Call Cmd1.Execute
正是你怎么能指望服务器从本地文件读取?您必须从本地文件读取并将其发送到服务器。 – Hogan