改行を含む文字列の処理に問題があります。(キャリッジリターンを保持する必要があります。また、それらを一意にコーディングする必要はありません。)この文字列には2つのキャリッジリターンがあります...
Press the Switch
Drying
そして、Visual Studio の SQL エディターで表示すると、次のように表示されます....
Press the SwitchDrying
これは技術的に問題ではありません。内容をコピーして Excel などに貼り付けることができ、正しくフォーマットされています。
同じ値であっても、文字列を別の変数と比較しようとすると問題が発生します。
Sql 2008 R2 DB テーブルから一連のレコードを照会し、それらを外部データソースと比較します。
SQL結果セットのレコードをループすると....
For Each row As DataRow In myTable.Rows
Dim stringVal As String = row(columnName).ToString()
' Eventually added this to see that the row was adding 2 spaces after the carriage return
Dim cstringVal() As Char = stringVal.ToCharArray
Dim csearchValue() As Char = searchValue.ToCharArray
' Originally tried
If row(columnName) = searchValue And row(columnName2) = searchValue2 Then
return True
End If
' Tried this
If stringVal = searchValue And row(columnName2) = searchValue2 Then
Return True
End If
' And this
If String.Compare(stringVal, searchValue, False) = 0 And row(columnName2) = searchValue2 Then
Return True
End If
Next
Return False
char 配列を追加した後、最初のキャリッジ リターンの後にスペースが 2 つ追加されていることに気付きました。または、CR が char 配列で識別されないため、それぞれの後に 1 つのスペースがある可能性があります。
この文字列を分割するコードはありません。これを引き起こすのは改行を含む文字列だけです。その他の唯一の違いは、1 つの文字列が OLE DataAdapter であり、もう 1 つの文字列が SQL DataAdapter であることです。
何を与える?何か案は?
UPDATE : SQL DataAdapter が、クエリから返されたデータセットの carraige リターンを正しく表していないようです。VS SQL エディターでテーブルの内容を表示すると、テーブルから文字列を正しくコピーして他のアプリに貼り付けることができます。値の比較を見て、すぐにコードを見ていきます。