Показать сообщение отдельно
  #4  
Старый 25.03.2013, 13:16
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от cyborgg4655
Добрый день! Нужно чтобы одинаковые значения в ComboBox не повторялись. Данные берутся из таблицы, нужно чтобы на выходе одинаковых строк небыло.
Пробую такие варианты:
Код:
var a1:string;
a2:string;
a3:string;
a4:string;
i:integer;
begin
ADOQuery6.First;
while not ADOQuery6.Eof do
begin
a1:=ADOQuery6.FieldByName('Корпус').AsString;
a2:=ADOQuery6.FieldByName('Ряд').AsString;
a3:=ADOQuery6.FieldByName('Место').AsString;
a4:=ADOQuery6.FieldByName('Ярус').AsString;
Label7.Caption:=Format('%s:%s-%s/%s',[a1,a2,a3,a4]);
for i := 0 to Combobox6.Items.Count - 1 do
if Combobox6.Items.Strings[i]=Label7.Caption then
begin
ADOQuery6.Next;
end;
if Combobox6.Items.Strings[i]<>Label7.Caption then
begin
ComboBox6.Items.Append(Format('%s:%s-%s/%s',[a1,a2,a3,a4]));
ADOQuery6.Next;
end;
end;
end;
Но не получается..
Что-то здесь сильно наворочено. Вот так будет проще и правильней:
Код:
var
  a1, a2, a3, a4: string;
begin
  ADOQuery6.First;
  while not ADOQuery6.Eof do
  begin
    a1 := ADOQuery6.FieldByName('Корпус').AsString;
    a2 := ADOQuery6.FieldByName('Ряд').AsString;
    a3 := ADOQuery6.FieldByName('Место').AsString;
    a4 := ADOQuery6.FieldByName('Ярус').AsString;
    Label7.Caption := Format('%s:%s-%s/%s', [a1, a2, a3, a4]);
    if ComboBox6.Items.IndexOf(Label7.Caption)<0 then ComboBox6.Items.Add(Label7.Caption);
    ADOQuery6.Next;
  end;
end;
Ну или если есть возможность переделай как советует Aristarh Dark SQL-запрос, что-бы он не выдавал повторяющихся записей.
Ответить с цитированием