我正在尝试使用vba
更新sql server中的记录'Required Query
myQuery = "UPDATE dbo.RecertFormatterDataTable SET [TaskStatus] = ? WHERE [TaskName] = ? AND [Report Name] = ?"
Dim CurrStatus As String
Dim TaskNames As String
Dim ReportPath As String
'set up parameters
Set myParameters = New Collection
myParameters.Add TaskNames
myParameters.Add CurrStatus
myParameters.Add ReportPath
queryType = "Push"
Set rs = myDB.Query(myQuery, queryType, myParameters)
我有一个将String转换为advarchar
但是我无法在这里加载值 -
数据类型nvarchar和文本在in等于中是无法比较的 操作
请帮我解决这个问题。
答案 0 :(得分:1)
复制/粘贴部分对我来说并不清楚,但我可以说这种错误主要是因为在分配字符串值之前和之后忘记了撇号(')符号。
示例:强>
错误 - > query = ("update myTable set Name = {0} where Id = 10", "Jonathan");
TRUE - >
query = ("update myTable set Name = ' + "Jonathan" + ' where Id = 10";
之前,我认为在为myQuery分配值时出现问题。尝试类似的东西:
myQuery = "UPDATE dbo.RecertFormatterDataTable SET [TaskStatus] = '?' WHERE [TaskName] = '?' AND [Report Name] = '?'"
如果上述方法无效,请尝试:
解决方案1:将?s的数据类型更改为nvarchar。
myQuery = "UPDATE dbo.RecertFormatterDataTable
SET [TaskStatus] = CONVERT(NVARCHAR(MAX), ?) WHERE [TaskName] =
CONVERT(NVARCHAR(MAX), ?) AND [Report Name] = CONVERT(NVARCHAR(MAX), ?)"
解决方案2:将列的数据类型转换为nvarchar(max)并重新运行更新查询。示例:
ALTER TABLE RecertFormatterDataTable
ALTER COLUMN TaskStatus NVARCHAR(MAX)
GO