1

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

下面是 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。
(粗略翻译:对于至少一个必需的参数没有指定值)

有人对我的问题可能有任何想法吗?提前感谢您提供给我的任何帮助。

-格雷格

4

1 回答 1

1

这只是一个猜测。但是,尝试将 iif() 替换为 case 语句:

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。

于 2012-07-18T18:06:37.037 回答