18

データセットを解析して値を割り当てていますがTStringList、重複を避けたいと考えています。次のコードを使用していますが、まだ重複が挿入されています。

  channelList := TStringList.Create;
  channelList.Duplicates := dupIgnore;
  try
    dataset.First;
    while not dataset.EOF do
    begin
        channelList.Add(dataset.FieldByName('CHANNEL_INT').AsString)  ;
        dataset.Next;
    end;

重複が追加されるのはなぜですか?

4

2 に答える 2

36

http://docwiki.embarcadero.com/Libraries/XE2/en/System.Classes.TStringList.Duplicatesを読みましたね。

次に、そこで最も繰り返される単語「ソート済み」を見逃しました

channelList.Sorted := true

var F: TField;

channelList := TStringList.Create;
channelList.Sorted := True;
channelList.Duplicates := dupIgnore;

try
   dataset.First;
   F := dataset.FieldByName('CHANNEL_INT');
   while not dataset.EOF do
   begin
      channelList.Add(F.AsString);
      dataset.Next;
   end;
于 2013-07-16T08:56:21.470 に答える
9

既成概念にとらわれず、重複を事前に回避しますか?

使用しているDBはわかりませんが、たとえばSQLサーバーでは、クエリの問題です:

'SELECT DISTINCT CHANNEL_INT FROM MYTABLE';

TStringList重複を気にせずに結果を追加できます。

于 2013-07-16T09:07:02.653 に答える