2012-07-18 79 views
1

我正在使用vb.net,并且我创建了一个与OleDBConnection对象一起使用的sql语句。当我运行我的SQL(下)时,ExecuteReader会抛出一个错误(也在下面)。问题在于,它可以在运行的50多个en-US机器上运行,但现在我已经在德国获得了我的第一个客户机,并且在他们的机器上失败了。我将我的开发机器设置为德语设置以尝试复制该问题,但它对我来说工作得很好。我复制了他们的确切数据文件,并在我的机器上运行。看起来这与它是一个非美国机器有关?SQL语句'缺少参数'在单机上失败

这里是SQL语句:

SELECT Val(IIf(IsNumeric([Sequence]), [Sequence], '0')), * 
FROM MyTable 
ORDER BY SomeOtherField, 1 

因此,在短期,我想通过序列列其次订购,但在事件序列不是数字,我只给它一个“0 ',以便它可以根据我正在创建/选择的动态列'1'进行排序。

这是德国机器上的错误: Fuer mindestens einen erforderlichen Parameter wurde kein Wert angegeben。
(粗略翻译:至少有一个要求的参数没有指定值)

有没有人有任何想法,我的问题可能是什么?预先感谢您提供给我的任何帮助。

-Greg

回答

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。