Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.016 c
1-68394
Xoy
2003-08-07 17:15
2003.08.21
Прямой доступ к пикселям в TBitmap


1-68293
alois
2003-08-05 18:55
2003.08.21
Параметры страницы в RichEdit


1-68297
^^^Dragon^^^
2003-08-06 17:24
2003.08.21
Переменные


1-68353
-=GaLaN=-
2003-08-07 10:53
2003.08.21
Почему *.cpl не запускаются?


1-68404
BillyJeans
2003-08-07 14:33
2003.08.21
Анимированый GIF на форме...




   Наверх