VBA ADODB CommandString错误
所以我有一个有趣的问题。我正在使用Microsoft GP2013中的VB修改器(VBA),我所要做的就是在我们的一个数据库中引用一个表格,根据输入的服务电话号码(工作号码)获取总通话时间。为此,我使用SQL命令打开了一个SQL连接。问题是,无论我如何转换数据以及SQL命令引用的数据,我总是会得到转换错误。以下是错误我得到:VBA ADODB CommandString错误
Conversion failed when converting the varchar value 'Rack build' to data type int.
这是命令字符串:
cmdString.CommandText = "SELECT SUM(TRXHRUNT)/100 from CTI_Timetrack_Open_and_Closed where TRXDSCRN = " & CallNumber.Value & ""
凡CallNumber.Value
是一个整数我们的形式被填充。我整天围着我的脑袋,答案可能很简单。我正在寻找任何建议来缓解这个错误。谢谢。
如果CallNumber.Value实际上是一个整数,那么您的一条记录的值为“Rack build”,其值为TRXDSCRN
。
试试这个选择:
SELECT * FROM CTI_Timetrack_Open_and_Closed WHERE TRXDSCRN = 'Rack build';
如果在该列实际上是整数值,而且你真的要搜索一个整数那里,你将需要通过添加到它作为一个字符串传递围绕CallNumber.Value
单引号:
cmdString.CommandText = "SELECT SUM(TRXHRUNT)/100 from CTI_Timetrack_Open_and_Closed where TRXDSCRN = '" & CallNumber.Value & "'"
You really should be using command parameters though通过传递以下字符串我打发CallNumber.Value
中,否则可能会有人在数据库上肆虐。 N代表该CallNumber(如果它接受字符串):
'; DELETE FROM CTI_Timetrack_Open_and_Closed;--close command with comment
您可以使用参数来解决SQL injection和其他人使用此:
cmdString.CommandText = "SELECT SUM(TRXHRUNT)/100 from CTI_Timetrack_Open_and_Closed where TRXDSCRN = ?";
Dim Pm As ADODB.Parameter
Set Pm = cmdString.CreateParameter("parentid", adNumeric, adParamInput)
Pm.Value = CallNumber.Value
cmdstring.Parameters.Append Pm
我知道TRXHRUNT
是没有问题的,因为如果你尝试在varchar
综上所述,您会收到以下错误:
Msg 8117, Level 16, State 1, Line 2
Operand data type varchar is invalid for sum operator.
什么数据类型是'TRXHRUNT' - 你试图'sum'一个'varchar'? – sgeddes
以及“Rack build”因素在这里如何? –
“TRXHRUNT”或“TRXDSCRN”的其中一条记录的值为“Rack build”。 –