Текущий архив: 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