【问题标题】:CPP Builder and Ado FilterCPP Builder 和 Ado 过滤器
【发布时间】:2011-06-27 13:35:05
【问题描述】:

我正在使用 C++Builder 2010。我正在过滤一个 ADOTable,在 Edit1 OnChange 中我有:

    ADOTable1->Filter = "firstname like %" + Edit1->Text + "%";

输入空格时报错,)和=号 输入过滤器的正确方法是什么? 谢谢

【问题讨论】:

  • 输入单词或单个字母是否有效?
  • 是的。只有提到的字符会导致问题。

标签: ado c++builder c++builder-2010


【解决方案1】:

我认为您需要在传递给 Filter 属性的字符串之前和之后使用单引号。

// QuotedStr example
ADOTable1->Filter = "firstname like '%" + QuotedStr(Edit1->Text) + "%'";

// StringReplace example
System::String temp; 
temp = StringReplace(Edit1->Text, "'", "''", TReplaceFlags() << rfReplaceAll);
ADOTable1->Filter = "firstname like '%" + temp + "%'";

documentation 没有提到 LIKE 运算符,但我发现 another website 表明这是可能的。

【讨论】:

  • NVM 我这样解决了: temp = StringReplace(Edit1->Text, "'", "''", TReplaceFlags()
  • 我认为 QuotedStr 函数的作用与您提供的 StringReplace 相同。我已经更新了我的答案。
【解决方案2】:

我没有 C++ Builder,但下面的代码在 Delphi 上运行,与 C++ Builder 非常相似:

    ADOTable1.filter := 'firstName LIKE '+ QuotedStr('%'+Trim(Edit1.Text)+'%') ;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-17
    • 2016-04-07
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 2018-09-28
    相关资源
    最近更新 更多