なので。それでも、 http://www.catb.org/esr/faqs/smart-questions.html#bepreciseを読んで、それに応じて環境について説明してください。
- データベースサーバーとは何ですか?
- MDAC / ADOコンポーネントのバージョンは何ですか?
- クエリは何ですか?
- SQLの名前列タイプとは何ですか?
あなたはコメントを「アップ」しています、それはいいですね。しかし、あなたは質問に答えません。そして、それは良くありません。私たちはESPerではありません。あなたの心を読むことはできません。
上記のコメントにいくつかの提案を入れました。それらを試しましたか?彼らは働きましたか?それらを引用するには:
- たぶん、ADO/MDACを2.8sp1バージョンに更新できます。参照されているMSDNKB記事は、2.7バージョンまでのMDACに適用するように指示されています。たぶん2.8sp1にはもうその制限はありません。
- 名前の最後の4文字を別の列にコピーするなど、データサーバー固有のトリックを使用できるかもしれません。
- たぶん、その条件をSQL SELECT WHERE句に移動して、クエリを再度開くことができます。
- TBDEDataSet.OnFilterRecordのようなイベントハンドラーがあるかもしれません
4つの回避策があり、それらを試しなかったか、結果を報告しませんでした。よくない。
- アイデア#1は自明です
- アイデア#3は、@ SertacAkyuzによって可能な限り詳細に説明されており、プログラムに関する情報が不足しています。
- アイデア#4は@Ravaut123によって詳述されました
- アイデア#2の概要を以下に示します
「ADOデータベース」がMicrosoftAccessによってサポートされていると仮定し、http ://www.databasedev.co.uk/access-sql-string-functions.htmlに従って...またはMS SQLを使用してhttp://に従ってmsdn.microsoft.com/en-us/library/ms177532.aspx ...または...
Query.SQL.Text:='select Right(Name、4)as name_tail、 * from table where ...'
クエリに追加された追加の列を参照してください。そこの「ジョン」の長さは4です。
このようなクエリでは、次のフィルタリング条件が同等になります。
- Filter:='[Name] like''%john''';
- フィルタ:='[name_tail] =''john''';
ただし、一部の行で[名前]列が4文字より短い場合、RIGHT関数が何をするのかわかりません。結果を切り捨てるか、エラーをスローしてクエリを中止する可能性があります。後者は、実際のデータによっては、次のように4つの長さにスペースを埋めることで軽減できる可能性があります。
LTrim(Right(' ' || Name, 4)) as name_tail
あなただけがあなたの環境の詳細を知っているので、それはあなたがテストするためのものです。