Поиск:

Ответ в темуСоздание новой темы Создание опроса
> IBQuery обновление данных в базе 
V
    Опции темы
holodnaya
Дата 27.2.2010, 00:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 30.7.2008

Репутация: нет
Всего: нет



Доброго времени суток!

Возникли некоторые сложности с обновлением данных. Работаю с СУБД FireBird 2.1, приложение написано в Delphi. Компонентом IBQuery (это компонент работает в связке с IBUpadteSQL ) выбираю запись из таблицы, затем мне нужно изменить в ней некоторые поля. Для этого пишу следующий код
Код

IBQuery3.Edit;

            Query2 := ' update STUDY_PROGRESS set' +
                      ' DISCIPLINA1 = '''+ StudentColl[i, 4] + ''',' +
                      ' DISCIPLINA2 = '''+ StudentColl[i, 5] + ''',' +
                      ' DISCIPLINA3 = '''+ StudentColl[i, 6] + ''' ' +
                      ' where' +
                      ' ID_STUDY_PROGRESS = :OLD_ID_SP';

              IBUpdateSQL3.ModifySQL.Clear;
              IBUpdateSQL3.ModifySQL.Add(Query2);
              IBQuery3.ParamByName('OLD_ID_SP').AsInteger := OLD_ID_SP;
              IBQuery3.ApplyUpdates;
              IBTransaction1.Commit;


Эта последовательность операторов уже была использована однажды мною и записи обновлялись, а сейчас выдает ошибку 
'Update Failed'.
Причем, если убрать строку IBQuery3.Edit, то ошибка не выходит, но и данные соответсвенно не изменяются. 
Подскажите, пожалуйста, в чем может быть ошибка? Что ещё можно посмотреть как дополнительный источник информации?
PM MAIL   Вверх
Данкинг
Дата 27.2.2010, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



А зачем IBQuery3.Edit; нужен? smile 

Цитата(holodnaya @  27.2.2010,  00:48 Найти цитируемый пост)
Эта последовательность операторов уже была использована однажды мною и записи обновлялись, а сейчас выдает ошибку 

Что с тех пор изменилось? Может, с базой что-то не то?

И вообще, зачем так сложно делать?

Код

IBQuery3.Close;
IBQuery3.SQL.Clear;
Query2 := ' update STUDY_PROGRESS set' +
                      ' DISCIPLINA1 = '''+ StudentColl[i, 4] + ''',' +
                      ' DISCIPLINA2 = '''+ StudentColl[i, 5] + ''',' +
                      ' DISCIPLINA3 = '''+ StudentColl[i, 6] + ''' ' +
                      ' where' +
                      ' ID_STUDY_PROGRESS = :OLD_ID_SP';
IBQuery3.SQL.Text:=Query2;
IBQuery3.ParamByName('OLD_ID_SP').AsInteger := OLD_ID_SP;
IBQuery3.ExecSQL();
IBTransaction1.Commit;



Это сообщение отредактировал(а) Данкинг - 27.2.2010, 00:58


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
holodnaya
Дата 27.2.2010, 08:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 30.7.2008

Репутация: нет
Всего: нет



Данкинг, я конечно, попробую предложенный тобой вариант, когда запрос на изменение пишется прямо в IBQuery. Только боюсь, что вновь выйдет ошибка, что данные изменить нельзя. Так как изменять данные можно только при совместной работе IBquery и IBUpdateSQL у компонент IBX. При этом IBQuery может только выбирать данные, а изменять, удалять через IBUpdateSQL.
PM MAIL   Вверх
Данкинг
Дата 27.2.2010, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(holodnaya @  27.2.2010,  08:30 Найти цитируемый пост)
При этом IBQuery может только выбирать данные, а изменять, удалять через IBUpdateSQL. 

Кто это сказал? У меня INSERT работает без всяких IBUpdateSQL.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
holodnaya
Дата 27.2.2010, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 30.7.2008

Репутация: нет
Всего: нет



Цитата(Данкинг @  27.2.2010,  11:18 Найти цитируемый пост)
Кто это сказал? У меня INSERT работает без всяких IBUpdateSQL.


А ты точно с IBQuery работаешь? Со стандартным IBX компонентом? Если взять, например, OracleQuery, то он точно будет работать по схеме, описанной тобой.


PM MAIL   Вверх
Данкинг
Дата 27.2.2010, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(holodnaya @  27.2.2010,  13:53 Найти цитируемый пост)
А ты точно с IBQuery работаешь? Со стандартным IBX компонентом? 

Да, со стандартной вкладки IBX.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
holodnaya
Дата 1.3.2010, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 30.7.2008

Репутация: нет
Всего: нет



Данкинг, Спасибо огромное! Всё действительно работает! Видимо, в прошлый раз, пытаясь изменить данные подобным образом, что-то енправильно делала.

Это сообщение отредактировал(а) holodnaya - 1.3.2010, 00:34
PM MAIL   Вверх
Данкинг
Дата 1.3.2010, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Пожалуйста. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0446 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.