C# OleDB 接続を使用してアクセス データベースから読み取っています。長さが 3 文字未満の結果は必要ありません。
現在のコードで「無効なパターン文字列」エラーが表示されます。なぜこのエラーが発生するのですか?どうすれば修正できますか?
string qry = "Select * from Table1 where ((CALLNO not like '') and " +
"((CALLNO like '%" + suggestedCallNo + "%') or ('" + suggestedCallNo + "' like '%' & CALLNO & '%')) and " +
"((Len(CALLNO))>=3))";
OleDbCommand myCommand = new OleDbCommand(qry, myConnection);
OleDbDataReader myReader = myCommand.ExecuteReader();
((Len(CALLNO))>=3)
このコードがなくても問題なく動作します。ただし、行を追加すると、リーダーが実行されると「無効なパターン文字列」という例外が発生します。
私が試したいくつかのこと:
((Len(CALLNO))>=3)
useの代わりに(CALLNO not like '')
、これはエラーを引き起こさないので、括弧がありません。
'_'
,などの単一文字のワイルドカードを使用しようとすると、使用し'_ _'
た代わり'_ _ _'
に、同じ「無効なパターン文字列」エラーが発生します。実際、エラーをスローしないことがわかった唯一のものは、空の文字列と完全なワイルドカードです。((Len(CALLNO))>=3)
(CALLNO not like '_')
''
'%'
また、アクセスでクエリ文字列から直接クエリを実行しましたが、どのようなエラーも発生しません。
情報をありがとう、
LMB