我正在使用vb.net,并且我创建了一个与OleDBConnection对象一起使用的sql语句。当我运行我的sql(下面)时,ExecuteReader会抛出一个错误(也在下面)。问题是它可以在50多台en-US机器上运行,但是现在我在德国有了第一个客户端,它在他们的机器上失败了。我将我的开发机器设置为德语设置以尝试复制该问题,但它对我来说效果很好。我复制了他们确切的数据文件,它可以在我的机器上运行。所以看起来它与非美国机器有关吗?
这是SQL语句:
SELECT Val(IIf(IsNumeric([Sequence]), [Sequence], '0')), *
FROM MyTable
ORDER BY SomeOtherField, 1
所以简而言之,我想通过序列列进行二次排序,但是如果Sequence不是数字,我只需要给它一个'0',这样它就可以根据动态进行排序列'1'我正在创建/选择即时。
这是德国机器上的错误:
Fuer mindestens einen erforderlichen参数wurde kein Wert angegeben。
(粗略翻译:至少有一个必需参数未指定值)
有没有人对我的问题有什么想法?提前感谢您提供给我的任何帮助。
-Greg
答案 0 :(得分:1)
这只是猜测。但是,尝试用case语句替换iif():
SELECT (case when IsNumeric([Sequence]) = 1 then [Sequence]
else '0'
end),
mt.*
FROM MyTable mt
ORDER BY SomeOtherField, 1
我怀疑你的其他系统正在使用Access,德国系统正在使用SQL Server。 SQL Server无法识别iif。