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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2011, 17:04   #1
Kreadlling
Форумчанин
 
Аватар для Kreadlling
 
Регистрация: 03.09.2009
Сообщений: 116
По умолчанию Ошибка при переходе к другой вкладке PageControl1 в Delphi 2010

Здравствуйте! При работе программы вылетает ошибка
http://s1.ipicture.ru/uploads/20110407/1eLOqZ7F.jpg
Код здесь:
Код:
procedure TForm1.BitBtn10Click(Sender: TObject);
begin
   close;
end;

procedure TForm1.BitBtn4Click(Sender: TObject);
var s1, s2, s3, s4, s5:string;
begin
if(InputQuery('Ввод названия книги', 'Название:', s1)) then
   begin
      InputQuery('Ввод кода книги', 'Код:', s2);
      InputQuery('Ввод количества книг', 'Количество:', s3);
      InputQuery('Ввод издательства книги', 'Издательство:', s4);
      InputQuery('Ввод года издания книги', 'Год:', s5);
      with dm.q do
      begin
         Active := false;
         SQL.Clear;
         SQL.Add('INSERT INTO BOOK(NAME_BOOK, CODE_BOOK, QUANTITY_BOOK,');
         SQL.Add('IZDATELSTVO, YEAR_IZD, ID_THEMATIC) VALUES(');
         SQL.Add(QuotedStr(s1) + ',' + QuotedStr(s2) + ',' + QuotedStr(s3) + ',');
         SQL.Add(QuotedStr(s4) + ',' + QuotedStr(s5) + ',');
         SQL.Add(dm.SimpleDSThematic.FieldByName('ID_THEMATIC').AsString + ')');
         ExecSQL;
      end;
      with dm.SimpleDSBook do
      begin
         Active := false;
         DataSet.Active := false;
         DataSet.Active := true;
         Active := true;
         Locate('NAME_BOOK', s1, [loCaseInsensitive]);
      end;
   end;
end;

procedure TForm1.BitBtn7Click(Sender: TObject);
var s1, s2, s3, s4:string;
begin
if(InputQuery('Ввод фамилии автора', 'Фамилия:', s1)) then
   begin
      InputQuery('Ввод имени автора', 'Имя:', s2);
      InputQuery('Ввод отчества автора', 'Отчество:', s3);
      InputQuery('Ввод кода автора', 'Код:', s4);
      with dm.q do
      begin
         Active := false;
         SQL.Clear;
         SQL.Add('INSERT INTO AUTHOR(FAMILY, NAME, OTCHESTVO,');
         SQL.Add('CODE_AUTHOR) VALUES(');
         SQL.Add(QuotedStr(s1) + ',' + QuotedStr(s2) + ',' + QuotedStr(s3) + ',');
         SQL.Add(QuotedStr(s4) + ')');
         ExecSQL;
      end;
      with dm.SimpleDSAuthor do
      begin
         Active := false;
         DataSet.Active := false;
         DataSet.Active := true;
         Active := true;
         Locate('FAMILY', s1, [loCaseInsensitive]);
      end;
      with dm.q do
      begin
         Active := false;
         SQL.Clear;
         SQL.Add('INSERT INTO BOOK_AUTHOR(ID_BOOK, ID_AUTHOR) VALUES(');
         SQL.Add(dm.SimpleDSBook.FieldByName('ID_BOOK').AsString + ',' +  dm.SimpleDSAuthor.FieldByName('ID_AUTHOR').AsString + ')');
         ExecSQL;
      end;
   end;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
   PageControl1.ActivePage := TabSheet1;
   dm.SQLConnection1.Connected := false;
   dm.SQLConnection1.Params.Values['database'] := ExtractFileDir(ParamStr(0)) + '\bd.fdb';
   dm.SQLConnection1.Connected := true;
   dm.SimpleDSThematic.Active := false;
   dm.SimpleDSThematic.DataSet.CommandText := 'SELECT * FROM THEMATIC';
   dm.SimpleDSThematic.DataSet.Active := true;
   dm.SimpleDSThematic.Active := true;
end;

procedure TForm1.PageControl1Change(Sender: TObject);
begin
  if PageControl1.ActivePage = TabSheet2 then
      begin
         if dm.SimpleDSThematic.RecordCount = 0 then
            exit;
         with dm.SimpleDSBook do
            begin
               Active := false;
               DataSet.Active := false;
               DataSet.CommandText := 'SELECT * FROM BOOK WHERE ID_THEMATIC = '+
               dm.SimpleDSThematic.FieldByName('ID_THEMATIC').AsString;
               DataSet.Active := true;
               Active := true;
            end;
      end;

   if PageControl1.ActivePage = TabSheet3 then
      begin
         if dm.SimpleDSBook.RecordCount = 0 then
            exit;
         if dm.SimpleDSAuthor.RecordCount = 0 then
            exit;
         with dm.SimpleDSAuthor do
            begin
               Active := false;
               DataSet.Active := false;
               DataSet.CommandText := 'SELECT * FROM AUTHOR WHERE AUTHOR.ID_AUTHOR = '+
               '(SELECT ID_AUTHOR FROM BOOK_AUTHOR WHERE BOOK_ AUTHOR.ID_BOOK = '+
                dm.SimpleDSBook.FieldByName('ID_BOOK').AsString;
               DataSet.Active := true;
               Active := true;
            end;
      end;
end;
Не подскажете как можно это исправить. Заранее благодарю.
Kreadlling вне форума Ответить с цитированием
Старый 07.04.2011, 17:16   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

PageControl1Change отрабатывет раньше FormActivate. Поэтому на команде if dm.SimpleDSThematic.RecordCount = 0 then и вываливает ошибку. Попробуйте активизировать dm в Form.OnCreate
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 07.04.2011, 21:02   #3
Kreadlling
Форумчанин
 
Аватар для Kreadlling
 
Регистрация: 03.09.2009
Сообщений: 116
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
PageControl1Change отрабатывет раньше FormActivate. Поэтому на команде if dm.SimpleDSThematic.RecordCount = 0 then и вываливает ошибку. Попробуйте активизировать dm в Form.OnCreate
Пробовал выдает ошибку на строчке
dm.SQLConnection1.Connected := false;
Перевод вольный "исключение по адресу 005d607f
Kreadlling вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка при установке Microsoft Office 2010 Professional Plus 2010 VL [Оригинальный образ Microsoft] syperman96 Microsoft Office Word 2 12.02.2011 12:50
Ошибка при компиляции в Visual C++ 2010 Jugger Помощь студентам 1 18.01.2011 21:13
delphi 2010, ibx, firebird - ошибка при StartTransaction или открытии view - db not open AutoHare БД в Delphi 0 17.11.2010 08:32
Ошибка при переносе из 2006 в delphi 2009/2010 Яр|/||< (^_^) Общие вопросы Delphi 2 18.02.2010 12:01
Вышла ошибка при Инсталляций AlphaControls на Delphi 2010 Vill Общие вопросы Delphi 2 11.11.2009 17:52