初め:
これは、SQL インジェクションの悪いケースかもしれません! 準備済みステートメント (または少なくとも適切なエスケープ) を使用してください。
2番:
当面の問題は'
、IN句を正しく囲むことです。
StrSqlLines = "Select * " +
"From dbo.SqlDtaToCreate "
" WHERE DtaLineAccountToDebit = '" + Straccref + "' " +
" and DtaLineCode IN(" + joined + ")"; //notice missing ' characters
文字で囲まれた'
ものはすべて、1 つの文字列として扱われます。SQL サーバーは、この 1 つの文字列を数値として解析しようとしましたが、そのままでは解析できなかったため、エラーが報告されました。
三番:
数値データを使用するときは、絶対に、絶対に、絶対に(まだ一度も言いませんでしたか?) 比較するためにテキスト データを使用しないでください。これは、文字通りパフォーマンスを低下させる可能性があります。(もちろん、この規模では重要ではありませんが、これを念頭に置いておくと、不要なパフォーマンス分析とデバッグを大幅に省くことができます...)
したがって、このクエリは実際に機能しますが、次のようになります。
select * from SqlDtaToCreate where DtaLineAccountToDebit='123.567U' and DtaLineCode IN('116745','116746','116747')
提供されたデータの暗黙的な変換を行うため、適切な方法は次のとおりです。
select * from SqlDtaToCreate where DtaLineAccountToDebit='123.567U' and DtaLineCode IN(116745,116746,116747)