0

私の vb.net プロジェクトには、ユーザーがコンボボックスから名前を選択する (または新しい名前を入力する) 必要があるシナリオがあります。

もちろん、名前には' as in Tina O'Haraを含めることができ、データベースではTina O''Haraとして保存されます。

私のコンボボックスは、SQL 選択コマンドから取り込まれます。名前がドロップダウンに正しく表示されるように、置換を使用しようとしました。

SqlStr = "SELECT Replace(ContactName, '''', ''') AS ddlText FROM tbl_Visits Where CustID = " & hd_CustID.value & " ORDER By ContactName"
PopulateCMBX(cmbx_ContactName, SqlStr, "Please Select")  

PopulateCMBX ... これは、指定された SqlStr から名前のリストを取得し、最初のオプションとして「選択してください」をコンボボックスの項目リストに取り込みます。

一致するセットがないため、SqlStr はエラーを生成しています ' How do I fix this. ありがとう

4

2 に答える 2

1

MS-SQL で一重引用符を参照する場合、各一重引用符 (') を 2 つの一重引用符 ('') でエスケープする必要があります。

名前が ('') のように 2 つの一重引用符でデータベースに格納されている場合、置換を行うときは 4 つの一重引用符 ('''') を使用する必要があります。これらに加えて、文字列を一重引用符で囲む必要があります。

これが意味することは、置換は次のようになります。

SqlStr = "SELECT Replace(ContactName, '''''', '''') ...

置換の 2 番目のパラメーターには 6 つの単一引用符があります。4 は置換する 2 つの単一引用符を表し、2 はそれを文字列にします。3 番目のパラメーターには 4 つの単一引用符があります。2 つが単一のエスケープされた引用符を表し、2 つが文字列になります。

于 2013-06-22T19:29:47.607 に答える
0

これを試してみてください。最善の解決策ではないかもしれませんが、うまくいきます(このを確認してください):

select Replace(Replace(ContactName, '''', '$&'),'$&$&','''') from tbl_Visits

$&は、フィールドの値に影響を与えてはならないキーのようなものであることに注意してください。たとえば、&&k&& または %%key%% などの単語である可能性があります。明確にするために、これは最善の解決策ではありませんが、時々私は使用しました。

于 2013-06-22T19:30:45.833 に答える