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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2016, 11:46   #1
Микошка
 
Регистрация: 29.09.2012
Сообщений: 6
По умолчанию Не обновляются данные в таблице

Добрый день! Я добавляю новую запись в таблицу, но данные в таблице обновляются только после перезапуска программы. Как это можно исправить? База данных у меня Interbase. Вот код добавления новой записи
Код:
  with DM.IBQuery2 do
  begin
    if FNew then
      SQL.Text :=
        'execute procedure book_add (-1, :id_zhanr,:author,:title_book,:publ_house,:year_of_publ,:num_of_pages,:annotation,:num_of_copies,:in_stock)';
    with DM.IBQuery2.Params do
    begin
      ParamByName('id_zhanr').Value := sEdit2.Text;
      ParamByName('author').Value := sEdit3.Text;
      ParamByName('title_book').Value := sEdit4.Text;
      ParamByName('publ_house').Value := sEdit5.Text;
      ParamByName('year_of_publ').Value := sEdit6.Text;
      ParamByName('num_of_pages').Value := sEdit7.Text;
      ParamByName('annotation').Value := sMemo1.Text;
      ParamByName('num_of_copies').Value := sEdit8.Text;
      ParamByName('in_stock').Value := sEdit9.Text;
      Transaction.StartTransaction;
      ExecSQL;
      Transaction.Commit;
      Transaction.Active := false;
    end;
    DM.IBQuery_Book.Close;
    DM.IBQuery_Book.Open;
Микошка вне форума Ответить с цитированием
Старый 10.02.2016, 18:47   #2
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Код:
DM.IBQuery2.Close;
DM.IBQuery2.Open;
Iron Monk вне форума Ответить с цитированием
Старый 10.02.2016, 19:16   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
DM.IBQuery2.Open;
С какой радости?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 10.02.2016, 19:18   #4
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

нихт...
А код показа записей?

Последний раз редактировалось Iron Monk; 10.02.2016 в 19:21.
Iron Monk вне форума Ответить с цитированием
Старый 10.02.2016, 19:20   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Там же скрипт для обновления. Скрипта для чтения и в помине нет. Он по идее в другом кверике, на что и намекает IBQuery_Book.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 10.02.2016 в 19:23.
Аватар вне форума Ответить с цитированием
Старый 10.02.2016, 19:24   #6
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Там же скрипт для обновления. Скрипта для чтения и в помине нет. Он по идее в другом кверике, на что и намекает IBQuery_Book.
Я исправился:
Цитата:
А код показа записей?
Iron Monk вне форума Ответить с цитированием
Старый 10.02.2016, 19:46   #7
Микошка
 
Регистрация: 29.09.2012
Сообщений: 6
По умолчанию

Код:
with DM.IBQuery_Book do
    begin
      SQL.Text :=
        'select * from book';
      Open;
Это код показа записей
Микошка вне форума Ответить с цитированием
Старый 10.02.2016, 19:51   #8
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Нужно датасет апдейтить...
Iron Monk вне форума Ответить с цитированием
Старый 10.02.2016, 19:52   #9
Микошка
 
Регистрация: 29.09.2012
Сообщений: 6
По умолчанию

в параметрах IBTransaction выбрала read committed. Это ведь не лишнее? или я ошибаюсь
Микошка вне форума Ответить с цитированием
Старый 10.02.2016, 22:44   #10
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Цитата:
Сообщение от Iron Monk Посмотреть сообщение
Нужно датасет апдейтить...
Совершенно верно!
ТС, почитайте руководство по IB:
Цитата:
The following code illustrates how you apply updates within a transaction for the CustomerQuerydataset previously used to illustrate updates through a database method:
procedure TForm1.ApplyButtonClick(Sender: TObject)
begin
IBTransaction1.StartTransaction;
CustomerQuery.ApplyUpdates; {try to write the updates to the database }
IBTransaction1.Commit; { on success, commit the changes }
except
IBTransaction1.Rollback; { on failure, undo any changes }
raise; { raise the exception again to prevent a call to CommitUpdates }
end;
CustomerQuery.CommitUpdates; {on success, clear the internal cache }
end;
kropotkina-alice вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поменять данные в таблице Andrey770 БД в Delphi 2 26.04.2013 00:21
Не обновляются данные MrBrain PHP 3 22.09.2012 16:19
Не обновляются данные в базу данных при добавлении новой строки! в чем ошибка?!!!! Elly-lll Помощь студентам 2 17.05.2011 22:57
данные в ячейках обновляются каждые 10 мин crazyman_77 Microsoft Office Excel 7 22.01.2011 00:19
Не обновляются данные в WebBrowser Shouldercannon Работа с сетью в Delphi 6 19.03.2010 19:27