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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2010, 22:34   #1
anechka3107
Новичок
Джуниор
 
Регистрация: 25.05.2010
Сообщений: 2
Вопрос ComboBox и заполнение базы данных InterBase

В общем у меня проблемка. Существует база данных с таблицами например Заказ (код*, код заказчика, фамилия заказчика, адрес заказа) и Заказчик(код*, фамилия, имя, отчество и т.д.). в общем при заполнении таблицы заказ стоит ComboBox, отображающий из таблицы заказчиков список фамилий. в нем проблема.. при повторном открытии формы с этим ComboBox'ом в нём отображается только последняя фамилия из списка... вот код в чем может быть проблема?
Код:
procedure TForm12.FormShow(Sender: TObject);
begin
DataModule2.IBTable2.Refresh;
  Form12.sComboBox1.Clear;
  DataModule2.IBTable2.FindFirst;
While not DataModule2.IBTable2.EOF do
begin
  form12.sComboBox1.Items.Add(DataModule2.IBTable2.FieldByName('FAM_ZAK').AsString);
  DataModule2.IBTable2.Next;
end; end;
И ещё вопрос... нужно чтобы при выборе определённой фамилии в этом ComboBox'е в Edit выводилось соответствующие данные об этом заказчике (код). Пробовала использовать DBLooKUpComboBox и DBEdit'ы, но тогда пограмма давала сбой при заполнении автоинкрементного поля этой таблицы((( Помогите, пожалуйста! Очень надо!
anechka3107 вне форума Ответить с цитированием
Старый 26.05.2010, 00:34   #2
Скандербег
Форумчанин
 
Регистрация: 04.04.2009
Сообщений: 438
По умолчанию

1. А почему "зарядка" комбобокса на OnShow? Лучше это делать в событии OnCreate один раз. Refresh; не нужен. Вместо метода FindFirst; применить метод First.

2. В комбобоксе, при заполнении его данными, сохранять "код" заказчика в свойствах Objects комбобокса. После выбора пользователем пункта в комбобоксе, читать (в событии OnChange) сохраненный код и делать запрос к таблице базы, результат которого записывать в Edit.
Скандербег вне форума Ответить с цитированием
Старый 26.05.2010, 00:42   #3
anechka3107
Новичок
Джуниор
 
Регистрация: 25.05.2010
Сообщений: 2
По умолчанию

не согласна, на OnShow сделано для того, чтобы список обновлялся при каждом открытии формы, а если делать OnCreate он и останется таким, каким был при создании формы, а таблица откуда берутся данные постоянно обновляется.. получается для обновления списка в комбо боксе каждый раз нужно будет перезапускать приложение.

вот в том то надо было писать не FindFirst, а просто First полностью согласна и уже исправила свою ошибку.

Второй вопрос тоже уже решила сама, методом, не совсем тем что вы предложили. Тоже запрос к базе, но без запоминания кода в свойствах Objects, т.к выводить так требовалось не только код, а ещё и некоторую текстову информацию.

Думаю тема исчерпана и может быть закрыта.

Последний раз редактировалось anechka3107; 26.05.2010 в 00:46.
anechka3107 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание базы данных в InterBase. EdNovice БД в Delphi 5 22.04.2012 11:07
Заполнение ComboBox датами segail Microsoft Office Excel 9 12.01.2010 21:47
EMS InterBase & FireBird Manager 3 ошибка создания Базы данных Gilio БД в Delphi 2 08.05.2009 15:59
Interbase ошибка при создании базы Алёна БД в Delphi 13 10.02.2008 16:45