Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2011, 22:36   #1
Siluet
Форумчанин
 
Регистрация: 05.12.2008
Сообщений: 143
По умолчанию Дублирующие запиcи в ComboBox


Код:
var i:integer;
label m;
begin
 Table1.Open;
  Table1.First;
  Table1.Edit;

while not Table1.Eof do begin
i:=0;
CBox_stena.Items.Add(Table1.fieldbyname('Stena').AsString);
Table1.Next;
  m:
  repeat
  CBox_stena.ItemIndex:=i;
  Table1.Next; 
  if CBox_stena.Text=Table1.fieldbyname('Stena').AsString then begin
  goto m;
  end;
  inc(i);
  until i=CBox_stena.Items.Count;
   end;
собсна вот! есть одинаковые записи.. понятия не имею как убрать..
код слегка изощренный..
Siluet вне форума Ответить с цитированием
Старый 20.05.2011, 03:42   #2
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

1) в запросе использовать distinct или group by;
2) либо построчно сравнивать вводимое в комбобокс значение:
Код:
function inCombo(combo:TComboBox;slovo:string):boolean;
var i:integer;
begin
     result:=false;
     for i:=0 to combo.Items.Count-1 do
     if combo.Items.Strings[i]=slovo then
     begin
          result:=true;
          break;
     end;
end;
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Старый 20.05.2011, 07:52   #3
Siluet
Форумчанин
 
Регистрация: 05.12.2008
Сообщений: 143
По умолчанию

Sparkman
Не понимаю как это работает. Прикрепи готовый проек пожалуйста
Siluet вне форума Ответить с цитированием
Старый 20.05.2011, 07:53   #4
art-programs
Пользователь
 
Регистрация: 04.07.2009
Сообщений: 61
По умолчанию

Цитата:
2) либо построчно сравнивать вводимое в комбобокс значение:
тогда быстрее будет использовать для поиска повтора стандартное:
Код:
if combo.Items.indexof(slovo)>-1 then
result:=true;
Код:
Не понимаю как это работает. Прикрепи готовый проек пожалуйста
что тут не понимать?
это функция проверки на дубль при добавлении
каждый раз когда добавляешь запись в комбо, проверяй:
Код:
if not inCombo(CBox_stena,Table1.fieldbyname('Stena').AsString) then
CBox_stena.Items.Add(Table1.fieldbyname('Stena').AsString);
куда проще? [офтоп]привет уфе) [/]

Последний раз редактировалось Stilet; 27.06.2011 в 14:25.
art-programs вне форума Ответить с цитированием
Старый 20.05.2011, 08:01   #5
Siluet
Форумчанин
 
Регистрация: 05.12.2008
Сообщений: 143
По умолчанию

Прикрепите готовый проек пожалуйста
Siluet вне форума Ответить с цитированием
Старый 20.05.2011, 08:07   #6
art-programs
Пользователь
 
Регистрация: 04.07.2009
Сообщений: 61
По умолчанию

Код:
var i:integer;
label m;
begin
 Table1.Open;
  Table1.First;
  Table1.Edit;

while not Table1.Eof do begin
i:=0;
if CBox_stena.Items.indexof(Table1.fieldbyname('Stena').AsString)<0 then
CBox_stena.Items.Add(Table1.fieldbyname('Stena').AsString);
Table1.Next;
  m:
  repeat
  CBox_stena.ItemIndex:=i;
  Table1.Next; 
  if CBox_stena.Text=Table1.fieldbyname('Stena').AsString then begin
  goto m;
  end;
  inc(i);
  until i=CBox_stena.Items.Count;
   end;
art-programs вне форума Ответить с цитированием
Старый 20.05.2011, 08:19   #7
Siluet
Форумчанин
 
Регистрация: 05.12.2008
Сообщений: 143
По умолчанию

программа зависает (зацикливается)
Siluet вне форума Ответить с цитированием
Старый 20.05.2011, 08:25   #8
art-programs
Пользователь
 
Регистрация: 04.07.2009
Сообщений: 61
По умолчанию

Код:
  m:
  repeat
  CBox_stena.ItemIndex:=i;
  Table1.Next; 
  if CBox_stena.Text=Table1.fieldbyname('Stena').AsString then begin
  goto m;
  end;
  inc(i);
  until i=CBox_stena.Items.Count;
вот где-то здесь и зацикливается, наверно
что вы вообще вот в этом куске делаете?
тут ужас прям какой код
art-programs вне форума Ответить с цитированием
Старый 20.05.2011, 08:43   #9
Siluet
Форумчанин
 
Регистрация: 05.12.2008
Сообщений: 143
По умолчанию

чет Я сам уже запутался.. нужен другой код
Siluet вне форума Ответить с цитированием
Старый 20.05.2011, 08:49   #10
Sparkman
220400
Форумчанин
 
Аватар для Sparkman
 
Регистрация: 21.05.2010
Сообщений: 726
По умолчанию

Код:
begin
     Table1.Open;
     Table1.First;
     CBox_stena.Items.Clear;
     while not Table1.Eof do
     begin
          CBox_stena.Items.Add(Table1.fieldbyname('Stena').AsString);
          Table1.Next;
     end;
end;
Cерьёзной помощи не ждите - помогаю в перерывах на "перекур".
Не существует ничего невозможного для человека, который не собирается ничего делать сам.
Не учите человека, если вы не его учитель.
Sparkman вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Webbrowser и combobox: сделать чтобы в combobox-е оставалась история посещенных сайтов uasya2 Общие вопросы Delphi 6 06.03.2011 20:24
Combobox -> DBGrid -> Combobox... EXTREEM БД в Delphi 2 20.12.2010 18:19
Разделение ComboBox на 3 ComboBox-a artemavd Общие вопросы Delphi 1 21.07.2010 08:02
скопировать дублирующие строки с одного листа на другие листы mars56 Microsoft Office Excel 22 17.02.2010 19:58
Не могу внести строку из combobox в combobox!? tacer Помощь студентам 1 30.11.2007 19:45