1

私は vb.net を使用しており、OleDBConnection オブジェクトで使用する sql ステートメントを作成しました。SQL (以下) を実行すると、ExecuteReader がエラーをスローします (これも以下)。問題は、それが実行されている 50 以上の en-US マシンで動作することですが、今ではドイツに最初のクライアントがあり、彼らのマシンでは失敗します。問題を再現するために開発マシンをドイツ語の設定に設定しましたが、問題なく動作します。彼らの正確なデータファイルをコピーしたところ、私のマシンで動作しました。どうやら、それは非 en-US マシンであることに関係しているのでしょうか?

SQL ステートメントは次のとおりです。

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

つまり、シーケンス列で 2 番目に並べ替えたいのですが、シーケンスが数値でない場合は、'0' を指定して、動的列 '1' に基づいて並べ替えを実行できるようにします。 ' オンザフライで作成/選択しています。

ドイツのマシンでのエラーは次のとおりです。
(大まかに訳すと、少なくとも 1 つの必須パラメーターに値が指定されていませんでした)

私の問題が何であるかについて誰か考えがありますか? よろしくお願いいたします。

-グレッグ

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 に答える