QDataSet 枚举一到多个字段组合的所有值

我们在许多时候,需要从数据集中将一组值传递给一个列表框供用户选择。而实现这一方式的基本算法都是遍历并去重,QDataSet 提供 EnumValues 函数来完成这一功能:

function EnumValues(const AFields: QStringW; AList: TStrings;AValueDelimiter: Char; AIgnoreNull: Boolean): Integer;

EnumValues 的几个参数说明如下:

  • AFields : 要枚举值的字段列表,多个字段的话,中间以 “,” 或 “;” 分隔
  • AList : 用于存贮返回值的字符串列表对象
  • AValueDelimiter : 列表多个字段的值时,用于分区多个值的分隔符
  • AIgnoreNull : 是否忽略字段值为空的情况,如果为 False ,空值会返回字符串 NULL ,如果为 True,空值返回空字符串

比如一行的数据如下:

Name     Spell
赵有才   ZYC
李光明   LGM

我们调用 EnumValues(‘Spell,Name’,AList,’|’,true) 会得到下面的两个字符串:

ZYC|赵有才
LGM|李光明

如果设置 AValueDelimiter 为 #0 ,则得到的结果为:

ZYC赵有才
LGM李光明

如果只有一个字段,则 AValueDelimiter 参数被忽略。

分享到: