Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.27;
Скачать: CL | DM;

Вниз

Фильтрация повторяющихся значений   Найти похожие ветки 

 
AlexanderSK   (2004-06-03 17:50) [0]

Есть TClientDataSet, поля р1, р2.
Причем значения р1 - повторяются (по 2-4 записи с одинм и тем же значением р1, при этом р2 для них разные).
Нужно получить список значений р1 (без повторов!)

Подскажите, пожалуйста, как это лучше сделать?


 
Курдль ©   (2004-06-03 17:52) [1]

Только не TClientDataSet или каким угодно другим Т..., а ТЗапросом.


 
Sandman25 ©   (2004-06-03 17:58) [2]

Если получить там же, то можно установить IndexFieldNames, а потом пробежаться в цикле и удалить повторяющиеся.


 
Jiny   (2004-06-03 18:04) [3]

>Только не TClientDataSet или каким угодно другим Т..., а ТЗапросом
может быть надо было сказать каким именно запросом ?

select distinct p1 from имя таблицы


 
AlexsanderSK   (2004-06-03 18:07) [4]

>Курдль ©  (03.06.04 17:52) [1]
>Jiny  (03.06.04 18:04) [3]
Да нет! Суть как раз в том, чтобы к БД не обращаться!


 
Jiny   (2004-06-03 18:21) [5]

попробуй так
var
MyDIm: array of String;
i,i2: integer;
tmpText: string;;
Begin
 SetLength(MyDim,Tdataset.RecordCount);
 For i:=0 to Tdataset.RecordCount-1 do
 begin
   TmpText:=Tdataset.FieldByname("field").AsString;
   For i2:=0 to i do
   begin
     If AnsiUpperCase(TmpText)=AnsiUppercase(MYDim) then
       break;
     else
     Begin
       MyDim[i]:=TmpText;
       break;
     end;
   end;
    Tdataset.FindNext  
 end;
end;


 
Jiny   (2004-06-03 18:22) [6]

попробуй так
var
MyDIm: array of String;
i,i2: integer;
tmpText: string;;
Begin
 SetLength(MyDim,Tdataset.RecordCount);
 For i:=0 to Tdataset.RecordCount-1 do
 begin
   TmpText:=Tdataset.FieldByname("field").AsString;
   For i2:=0 to i do
   begin
     If AnsiUpperCase(TmpText)=AnsiUppercase(MYDim[i2]) then
       break;
     else
       MyDim[i]:=TmpText;
   end;
    Tdataset.FindNext  
 end;
end;


 
Jiny   (2004-06-03 18:27) [7]

Ошибочка Вышла, не успел отменить отправку текста,
попробуй так
var
MyDIm: array of String;
i,i2: integer;
tmpText: string;;
Result: boolean;
Begin
SetLength(MyDim,Tdataset.RecordCount);
For i:=0 to Tdataset.RecordCount-1 do
begin
  TmpText:=Tdataset.FieldByname("field").AsString;
  For i2:=0 to i do
    If AnsiUpperCase(TmpText)=AnsiUppercase(MYDim[i2]) then
      Result:=false else result:=true;

   If result then MyDim[i]:=TmpText;
 
   Tdataset.FindNext  
end;
MyDim:=nil;
end;
Потом пройдешься циклом по не нулевым значениям


 
Anatoly Podgoretsky ©   (2004-06-03 19:53) [8]

AlexsanderSK   (03.06.04 18:07) [4]
Духом святыс что ли?



Страницы: 1 вся ветка

Текущий архив: 2004.06.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.057 c
4-1084850179
_Shark
2004-05-18 07:16
2004.06.27
Получение содержимого вывода окна программы DOS


1-1086355475
BFG9k
2004-06-04 17:24
2004.06.27
Ошибка функции ExecuteMacro


3-1086015499
ThermiT
2004-05-31 18:58
2004.06.27
ODBC driver for WIN98


1-1086972333
Apocalepse
2004-06-11 20:45
2004.06.27
Тот же текстовый редактор. Теперь сохранение :-)


1-1087112610
AndersoNRules
2004-06-13 11:43
2004.06.27
F : Function : Extended;