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

Вниз

Как получить список уникальных значений поля БД ?   Найти похожие ветки 

 
Алексей ©   (2003-07-25 15:38) [0]

Имеется в виду, что некое поле БД содержит различные значения (например: а б а и к е е в а б к ) и надо в комбо-бокс засунуть список этих значений (каждого по 1-му: а б в е и к)... Что-то вроде того, как это сделано в TDBLookupXXXXX. В исходнике этого самого лукапа я этот момент найти не смог :(

ЗЫ: Это нужно для того, чтобы сделать что-то вроде TDBFilterComboBox - если для этого можно использовать какой-либо стандартный DB контрол, то хотелось бы узнать какой именно и как ?


 
KDS ©   (2003-07-25 15:58) [1]

к TDBLookupCombobox привяжи не TTable, а TQuery, где в SQL
select distinct ... from ...


 
Алексей ©   (2003-07-25 17:54) [2]

Нету TQuery для TinyDB... Посему и надо через Filter делать. :(


 
VAleksey ©   (2003-07-25 18:16) [3]


> Алексей © (25.07.03 17:54)

Через фильтр ты не сделаешь.
А в комбобокс легко.


procedure TForm1.Button1Click(Sender: TObject);
var t:TStringList;
begin
t := TStringList.Create;
t.Sorted := true;
t.Duplicates := dupIgnore;
t.AddStrings(ComboBox1.Items);
ComboBox1.Items.Clear;
ComboBox1.Items.AddStrings(t);
t.Free;
end;



 
KDS ©   (2003-07-25 18:20) [4]

не через вильтр, а вручную... Типа этого
procedure TEngineDM.ReloadMakers(var cbx: TComboBox);
var FirstVal,CurVal:AnsiString;
begin
if LoadMakersIBQ.Active then LoadMakersIBQ.Refresh
else LoadMakersIBQ.Open;
LoadMakersIBQ.First; cbx.Clear;
FirstVal:=LoadMakersIBQ.FieldByName(""dm_name"").AsString;
while not LoadMakersIBQ.Eof do begin
CurVal:=LoadMakersIBQ.FieldByName(""dm_name"").AsString
( CurVal)
не через вильтр, а вручную... Типа этого
procedure TEngineDM.ReloadMakers(var cbx: TComboBox);
var FirstVal,CurVal:AnsiString;
begin
if LoadMakersIBQ.Active then LoadMakersIBQ.Refresh
else LoadMakersIBQ.Open;
LoadMakersIBQ.First; cbx.Clear;
FirstVal:=LoadMakersIBQ.FieldByName(""dm_name"").AsString;
while not LoadMakersIBQ.Eof do begin
CurVal:=LoadMakersIBQ.FieldByName(""dm_name"").AsString
if FirstVal<>CurVal then cbx.Items.Add(CurVal);
FirstVal:=CurVal;
LoadMakersIBQ.Next;
end;
cbx.ItemIndex:=0;
end;

только НД должен быть отсортирован по полю "dm_name"


 
Алексей ©   (2003-07-27 20:24) [5]


> VAleksey © (25.07.03 18:16)
> Через фильтр ты не сделаешь.

Имелось ввиду, что выбранное в боксе значение будет использоваться для создания фильтра :)

> KDS ©

Т.е. только полным перебором всех значений ? А побыстрее никак ?

Оки, спс :)



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

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

Наверх




Память: 0.48 MB
Время: 0.013 c
1-68271
dima74
2003-08-06 20:13
2003.08.21
Вызов метода родителя родителя класса


1-68270
Smok_er
2003-08-02 14:07
2003.08.21
TMenuItem - CustomDraw


3-68194
Magic&Wizard
2003-07-28 11:58
2003.08.21
API InterBase и FireBird


1-68256
Condor
2003-08-07 13:24
2003.08.21
Сохранение динамического массива в файл..


14-68514
Magic
2003-08-06 12:37
2003.08.21
Как программировать под сеть