2011-07-04 9 views
1

私はコーディングでクエリを作成します。しかし、私は変換エラーがあります。私の間違いを確認してください。文字列クエリエラー

私のクエリは、例外エラーが文字列から

変換のようなものです

 Dim strSelect As String = "" 

     strSelect = "SELECT " & _            
        "Description As [Desc], " & _ 
        "iif(CurCons = 0, " - ", CurCons) As [CCQty] " & _ 
        "FROM tblCur" 

下の 'ダブル' を入力し、 "IIF(CurCons = 0" である有効ではありません

実際には、私の報告書では、それがゼロの場合は ' - 'を表示したいと思います。この文字列に設定すると、次のような別のエラーが発生します。

プロバイダーは、 の10進値を特定できませんでした。たとえば、行 が作成されたばかりで、 Decimal列のデフォルトは使用できませんでした。 コンシューマは、新しい のDecimal値をまだ設定していませんでした。

Dim cmd As New OleDbCommand(strDynamic, m_DBConn) 
     Dim da As New OleDbDataAdapter(cmd) 
     da.Fill(ds, "tblCur") 

da.Fill

から

は、どのようにこの問題を解決するには?

答えて

3
strSelect = "SELECT " & _            
      "Description As [Desc], " & _ 
      "IIF(CurCons = 0 OR ISNULL(CurCons), ' - ', CStr(CurCons)) As [CCQty] " & _ 
      "FROM tblCur" 

あなたはIIF文をやっているときは、SQLクエリに残っているので、あなたの代わりにあなたが"を使用しますが、文字列の"文字を使用する必要はありません。

あなたレポートに値が出力されるフィールドがテキストタイプに設定されている必要があります。そうでなければ、エラーが表示されます。

+0

はい、コーディングでは、一重引用符にする必要があります。まず、データ型のマッチングを行ったところで混乱しました。今度は、フォーマットオブジェクトの表示文字列のレポートにIIF({dtDynamic.CCQty} = "0"、 " - "、{dtDynamic.CCQty})を設定します。皆さん、ありがとうございました。 – soclose

2

"-"のように二重引用符を使用して文字列を引用しています。それは文字列を閉じますので、t彼はダッシュを文字通り減算演算子として解釈します。

"iif(CurCons = 0, '-', CurCons) As [CCQty] " & _ 

これは、ダッシュには一重引用符を使用しています。

+1

+1これもキャッチ=) –