Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.11.2010, 09:35
ZeroCoolzz ZeroCoolzz вне форума
Прохожий
 
Регистрация: 18.10.2010
Сообщения: 8
Репутация: 10
Печаль Не копируются значения в ComboBox

Помогите разобраться.
есть компонент Query с запросом: "SELECT DISTINCT Job FROM Table_5_JOB"
Затем нужно в компонент ComboBox (под именем "CB_JOB" ) из запроса все значения перенести. Для чего написал вот такой код:
Код:
  DM.QJob.Open;
  DM.QJob.First;
  CB_JOB.Items.Clear;
   if DM.QJob.RecNo<=DM.QJob.RecordCount then
   Begin
    CB_JOB.Items.Add(DM.QJobJob.Value);
    DM.QJob.Next;
   End;

Проблема в том что в итоге копируется ровно одна запись - первая, а их там 3. Возникает ощущение что комп на строку "DM.QJob.Next;" вообще не реагирует. Хотя если поместить на форму Грид и потключить его к запросу через ДатаСоурс и вручную тыкать по значениям то запрос переходит между ними.
Помогите пожалуйста.
Ответить с цитированием
  #2  
Старый 02.11.2010, 10:17
ZeroCoolzz ZeroCoolzz вне форума
Прохожий
 
Регистрация: 18.10.2010
Сообщения: 8
Репутация: 10
По умолчанию

Только что в книге про Delphi5 прочитал что есть свойcтво у компонента Query - UniDirectional - которое разрешает перемешение по набору данных в запросе. Но у меня Delphi 2010 и там такого свойства нету.
Может надо какое свойство поменять в Query?
Ответить с цитированием
  #3  
Старый 02.11.2010, 11:33
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Почему не реагирует, очень даже реагирует. Вот только цикла-то у тебя нет, поэтому и добавляется только первая запись.
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #4  
Старый 02.11.2010, 11:46
ZeroCoolzz ZeroCoolzz вне форума
Прохожий
 
Регистрация: 18.10.2010
Сообщения: 8
Репутация: 10
По умолчанию

как так нет. "DM.QJob.First" - точка отсчета, первая запись.
"DM.QJob.RecNo" номер выбраной записи, проверяется в условии меньше или равно общему количеству записей "DM.QJob.RecordCount". Если нет, то переходим на следующую запись "DM.QJob.Next". Затем все повторяется снова пока номер записи не будет больше количества строк, т.е. конц таблицы.
Можно в принципе заменит условие на такое - "If not DM.QJob.EOF then", скорее даже надо, но лучше от этого не стало.
Это разве не цикл???
Ответить с цитированием
  #5  
Старый 02.11.2010, 12:05
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Нет, это не цикл. Цикл вот:
Код:
while not(DM.QJob.EOF) do
  begin
    //тут твои фигли-мигли.
  end;
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
  #6  
Старый 02.11.2010, 12:12
ZeroCoolzz ZeroCoolzz вне форума
Прохожий
 
Регистрация: 18.10.2010
Сообщения: 8
Репутация: 10
По умолчанию

Спасибо, все работает.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:51.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025