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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2012, 22:50   #1
kuzmich
Форумчанин
 
Аватар для kuzmich
 
Регистрация: 05.05.2007
Сообщений: 236
Вопрос проблема с Query

привет всем!
у меня две таблицы и два компонента ComboBox. ComboBox1 и Query связал и у меня оно работает, а вот связь со вторым ComboBox не работает.
вот код:

Код:
 ComboBox1.Items.Clear;
 Form2.Query1.Open;
 while not Form2.Query1.Eof do
  begin
    ComboBox1.Items.Add(Form2.Query1.FieldByName('Sezon_goda').AsString);
    Form2.Query1.Next;
  end;
  ComboBox1.ItemIndex := 0;
  Form2.Query1.Close;

 ComboBox2.Items.Clear;
 Form4.Query1.Open;  //выдает тут ошибку
 while not Form4.Query1.Eof do
  begin
    ComboBox2.Items.Add(Form4.Query1.FieldByName('Firm').AsString);
    Form4.Query1.Next;
  end;
  ComboBox2.ItemIndex := 0;
  Form4.Query1.Close;
вот сама ошибка:



подскажите люди добрые!...
Изображения
Тип файла: jpg error.jpg (23.3 Кб, 133 просмотров)
kuzmich вне форума Ответить с цитированием
Старый 21.06.2012, 22:58   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ты где етот код прописал?
Уверен что на момент его исполнения Form4 еще не существует.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.06.2012, 23:07   #3
kuzmich
Форумчанин
 
Аватар для kuzmich
 
Регистрация: 05.05.2007
Сообщений: 236
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ты где етот код прописал?
Уверен что на момент его исполнения Form4 еще не существует.
существует он! на 4 - ой форме у меня таблица через Query работает
kuzmich вне форума Ответить с цитированием
Старый 22.06.2012, 00:07   #4
kuzmich
Форумчанин
 
Аватар для kuzmich
 
Регистрация: 05.05.2007
Сообщений: 236
По умолчанию

вот вам сам проект - тут
можете сами посмотреть!
Вложения
Тип файла: rar БД Рынок - 2012.rar (377.5 Кб, 11 просмотров)
kuzmich вне форума Ответить с цитированием
Старый 22.06.2012, 01:40   #5
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Цитата:
Сообщение от kuzmich Посмотреть сообщение
существует он! на 4 - ой форме у меня таблица через Query работает
Существует, да, но обращение к форме 4 происходит до ее создания.
При создании Формы3 (в ее процедуре, привязанной к OnCreate) происходит обращение к форме4, но формы4 еще нет.
Порядок создания форм в вашем проекте говорит сам за себя:
Код:
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.CreateForm(TForm3, Form3);
  Application.CreateForm(TForm4, Form4);
Сказал же Stilet почему ошибка. Чего тут упрямиться.
Прик вне форума Ответить с цитированием
Старый 22.06.2012, 09:03   #6
kuzmich
Форумчанин
 
Аватар для kuzmich
 
Регистрация: 05.05.2007
Сообщений: 236
По умолчанию

Цитата:
Сообщение от Прик Посмотреть сообщение
Существует, да, но обращение к форме 4 происходит до ее создания.
При создании Формы3 (в ее процедуре, привязанной к OnCreate) происходит обращение к форме4, но формы4 еще нет.
Порядок создания форм в вашем проекте говорит сам за себя:
Код:
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.CreateForm(TForm3, Form3);
  Application.CreateForm(TForm4, Form4);
Сказал же Stilet почему ошибка. Чего тут упрямиться.
теперь понял! не подскажите как создать?
kuzmich вне форума Ответить с цитированием
Старый 22.06.2012, 09:42   #7
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Вариант "правильный". Создать форму DataModule, переместить не нее все компоненты доступа к БД и при запуске приложения эту форму создавать первой.
Она не визуальная, поэтому не будет главной.
Вариант "не правильный" (быстрый, но рано или поздно аукнется). Изменить порядок создания форм:
Код:
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.CreateForm(TForm4, Form4);
  Application.CreateForm(TForm3, Form3);
Прик вне форума Ответить с цитированием
Старый 22.06.2012, 11:57   #8
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

да и ComboBox лучше заменить на DBComboBox ...
эти куски кода:
Код:
while not Form2.Query1.Eof do
  begin
    ComboBox1.Items.Add(Form2.Query1.FieldByName('Sezon_goda').AsString);
    Form2.Query1.Next;
  end;
отпадут сами собой
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
IB Query TriCERATOP Помощь студентам 0 07.05.2011 17:56
Query Spaun Помощь студентам 1 17.06.2010 19:13
Query Potrashitel БД в Delphi 13 27.09.2009 11:44
Query mma БД в Delphi 5 17.02.2008 22:11
Печать Qreport результатов Query - проблема nataly_ukr БД в Delphi 2 05.11.2007 10:12