![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как получить список уникальных значений поля БД ?
Алексей © (2003-07-25 15:38:00)
Имеется в виду, что некое поле БД содержит различные значения (например: а б а и к е е в а б к) и надо в комбо-бокс засунуть список этих значений (каждого по 1-му: а б в е и к)... Что-то вроде того, как это сделано в TDBLookupXXXXX. В исходнике этого самого лукапа я этот момент найти не смог :(
ЗЫ: Это нужно для того, чтобы сделать что-то вроде TDBFilterComboBox- если для этого можно использовать какой-либо стандартный DB контрол, то хотелось бы узнать какой именно и как ?
Алексей (2003-07-27 20:24:00) [1]
> VAleksey © (25.07.03 18:16)
> Через фильтр ты не сделаешь.
Имелось ввиду, что выбранное в боксе значение будет использоваться для создания фильтра :)
> KDS ©
Т.е. только полным перебором всех значений ? А побыстрее никак ?
Оки, спс :)
KDS (2003-07-25 18:20:00) [2]не через вильтр, а вручную... Типа этого
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"
VAleksey (2003-07-25 18:16:00) [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;
Алексей (2003-07-25 17:54:00) [4]
Нету TQuery для TinyDB... Посему и надо через Filter делать. :(
KDS (2003-07-25 15:58:00) [5]
к TDBLookupCombobox привяжи не TTable, а TQuery, где в SQL
select distinct... from ...