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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2009, 18:39   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Загрузить из БД в ComboBox

Мне надо загрузить содержимое колонки в ComboBox. У него есть свойства Items и Strings. Пробовал делать так:
Код:
var
 nomer_predm:integer;
begin
 Query_zapros.Active:=False;
 Query_zapros.SQL.Clear;
 Query_zapros.SQL.Add('SELECT Predmet FROM table_predmety');
 Query_zapros.Active:=True;
 Form1.ComboBox3.Items.Strings:=Form3.Query_add_predm.Text;
 Form1.Label12.Caption:='Номер предмета = '+IntToStr(nomer_predm); 
end;
но выдается ошибка: "List index out of bounds (0)". Как правильно сделать? Также надо, чтобы IDишник выбранного предмета выводился в Label.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 27.04.2009, 19:34   #2
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Вспомнил про компонент DBComboBox . Настроил его. Только есть одна проблемка. Он показывает только последний добавленный предмет в БД. А как сделать, чтобы он показывал все, что есть в этой БД?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 28.04.2009, 08:15   #3
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Пройдитесь в цикле for по всем записям Query_add_predm и добавляйте их в бокс
SERG1980 вне форума Ответить с цитированием
Старый 28.04.2009, 08:50   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А как сделать, чтобы он показывал все, что есть в этой БД?
Помоему лучше использовать обычный Комбик, просто в цикле его набить данными из БД.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.04.2009, 09:10   #5
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Он показывает только последний добавленный предмет в БД
не должно такого быть. как вы так настроили его? он показывает все содержимое поля в таблице, а не бд.
Цитата:
А как сделать, чтобы он показывал все, что есть в этой БД?
никак! еще раз повторюсь, он может показать вам все содержимое поля, а не бд.
зы: artemavd, вы разницу ощущаете между бд и таблицами? если да, то выражайтесь правильно, что бы не вводить в заблуждение окружающих...
фЁдОр вне форума Ответить с цитированием
Старый 28.04.2009, 11:09   #6
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Вот, пробовал такой цикл сделать, но не работает:
Код:
procedure TForm1.SpeedButton44Click(Sender: TObject);
var
 nomer_predm,i,j:integer;
begin
 i:=Form3.Table_add_predm.RecordCount;
 for j:=0 to i - 1 do
 begin
 Query_zapros.Active:=False;
 Query_zapros.SQL.Clear;
 Query_zapros.SQL.Add('SELECT Predmet FROM table_predmety');
 Query_zapros.Active:=True;
 Form1.ComboBox3.Items.Strings[j]:=Form3.Table_add_predm.FieldByName('Predmet').AsString;
 end;
end;
В чем ошибка?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 28.04.2009, 11:43   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
Form3.Table_add_predm.First;

if not Form3.Table_add_predm.eof then
  Form1.ComboBox3.Items.Add(Form3.Table_add_predm.FieldByName('Predmet').AsString);

while Form3.Table_add_predm.FindNext do begin
 Form1.ComboBox3.Items.Add(Form3.Table_add_predm.FieldByName('Predmet').AsString);
end;
Если такой код вызывается в Form3 то Form3. писать не надо
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.04.2009, 11:55   #8
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

Цитата:
Сообщение от artemavd Посмотреть сообщение
Вот, пробовал такой цикл сделать, но не работает:
Код:
procedure TForm1.SpeedButton44Click(Sender: TObject);
var
 nomer_predm,i,j:integer;
begin
 i:=Form3.Table_add_predm.RecordCount;
 for j:=0 to i - 1 do
 begin
 Query_zapros.Active:=False;
 Query_zapros.SQL.Clear;
 Query_zapros.SQL.Add('SELECT Predmet FROM table_predmety');
 Query_zapros.Active:=True;
 Form1.ComboBox3.Items.Strings[j]:=Form3.Table_add_predm.FieldByName('Predmet').AsString;
 end;
end;
В чем ошибка?
Запрос в цикле выполнять не надо

Код:
procedure TForm1.SpeedButton44Click(Sender: TObject);
var
 nomer_predm,i,j:integer;
begin
 Query_zapros.Active:=False;
 Query_zapros.SQL.Clear;
 Query_zapros.SQL.Add('SELECT Predmet FROM table_predmety');
 Query_zapros.Active:=True;
 Query_zapros.First;
 while not Query_zapros.Eof do
  begin
   ComboBox1.Items.Add(Query_zapros.FieldByName('Predmet').AsString);
   TaxiDataModule.WokerTable.Next;
  end;
end;
SERG1980 вне форума Ответить с цитированием
Старый 28.04.2009, 12:16   #9
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Stilet, я попробовал сначала Ваш код. Вроде все получилось. Список предметов заносится. Но мне надо, чтобы при выборе какого-то предмета из списка его IDишник выводился в Label. Вот код, который раньше это делал:
Код:
procedure TForm1.ComboBox3Select(Sender: TObject);
var
 nomer_predm:integer;
begin
 Query_zapros.Active:=False;
 Query_zapros.SQL.Clear;
 Query_zapros.SQL.Add('SELECT ID_Predmet FROM table_predmety');
 Query_zapros.Active:=True;
 nomer_predm:=Query_zapros.FieldByName('ID_Predmet').AsInteger;
 Form1.Label12.Caption:='Номер предмета = '+IntToStr(nomer_predm); 
end;
Этот код помог мне сделать Уважаемый S@fer . Этот код работал, когда у меня было поле ID_Predmet с типом Number. А сейчас я его сделал автоинкриментным. Что надо подправить в коде, чтобы ID для соответствующего предмета выводился в Label сначала?)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 28.04.2009, 12:24   #10
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

В дополнение к посту номер 8, я бы добавил в запрос GROUP BY Predmet

Код:
 Query_zapros.SQL.Add('SELECT Predmet FROM table_predmety GROUP BY Predmet');
Обычно повторяющееся значения с Комбобксе только мешают, по этому лучше их убрать (если они конечно есть, но хуже не будет).

Последний раз редактировалось Gorychev; 28.04.2009 в 12:58.
Gorychev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузить png файл MAcK Мультимедиа в Delphi 1 22.12.2008 22:23
Как загрузить картинку? Editor Работа с сетью в Delphi 11 15.07.2008 23:13
Загрузить из файла в Edit Shouldercannon Общие вопросы Delphi 5 07.07.2008 08:32
Не могу внести строку из combobox в combobox!? tacer Помощь студентам 1 30.11.2007 19:45