【问题标题】:Fillter multiple fields in delphi在delphi中过滤多个字段
【发布时间】:2014-10-23 15:26:32
【问题描述】:

如何使用过滤器来过滤我的数据库中的多个字段。

这是我拥有的,但它似乎不起作用

dmData.tbl1.Filter := ('Gender =' + QuotedStr(sGender)) AND ('Grade =' + Quoted(edtGrade.Text));

所以我想让程序做的,例如,显示那些 10 年级的男性。

【问题讨论】:

  • 对您的数据和使用的标准一无所知,也许您正在将 NULL 字段与空字符串进行比较? aField is NULL
  • “似乎不起作用” - 意思是,这会导致编译错误。这不是有效的语法。

标签: database ms-access filter delphi-2010


【解决方案1】:

试试这个:

dmData.tbl1.Filter := '(Gender = ''' + sGender + ''') AND (Grade = ''' + edtGrade.Text + ''')';

或者:

dmData.tbl1.Filter := '(Gender = ' + AnsiQuotedStr(sGender, '''') + ') AND (Grade = ' + AnsiQuotedStr(edtGrade.Text, '''') + ')';

【讨论】:

  • 我尝试了第二个,但它只显示了应该显示的几个可能记录中的 1 个,而第一个也确实有效。
  • 它显示任何记录的事实意味着过滤器有效。也许您的字段区分大小写并且丢失的记录实际上与过滤器的大小写不匹配?或者可能存在您没有考虑的空白?由于您没有显示相关记录数据,或者sGenderedtGrade.Text的值,我只能推测。
【解决方案2】:

试一试

dmData.tbl1.Filter := ('Gender = ' + QuotedStr(sGender) + 'AND Grade = '+ QuotedStr(edtGrade.Text));

【讨论】:

  • 为 (DBF) dBase Ttable 和 TQuery 工作
【解决方案3】:

您没有在引号内设置整个语法, 应该是这样的

dmData.tbl1.Filter := 'Gender = ' + QuotedStr(sGender) + ' AND ' + 'Grade = ' + Quoted(edtGrade.Text);

【讨论】:

    猜你喜欢
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    • 2023-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多