Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/26: Рейтинг темы: голосов - 26, средняя оценка - 4.85
 Аватар для Shtolz
5 / 5 / 1
Регистрация: 10.10.2008
Сообщений: 138

TIBquery изменения БД

13.07.2010, 21:31. Показов 4932. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте скажите почему при вызове
IBQuery.sql.add('insert into бла-бла-бла');
изменения появляются только в dbgrid
а в базу заносятся только после disconnect-а с Базой???
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.07.2010, 21:31
Ответы с готовыми решениями:

Компонент TIBQuery - соединение таблиц
Здравствуйте! Есть две таблицы созданные в IBExpert. Мне надо их соединить - в свойстве SQL компонента TIBQuery, прописать запрос sql. ...

TIBQuery выводит только одну запись
Пытаюсь из запроса данные запихнуть в Комбо бокс. Запихивается только первая по причине Query.RecordCount=1 хотя их там много, проблема...

Почему SQL запрос с TIBQuery у меня возвращает всё время 1?
Здравствуйте! Я хочу подсчитать сколько у меня записей в таблице с определённым значением, но ничего не выходит. Подскажите, что я...

13
64 / 64 / 10
Регистрация: 19.10.2009
Сообщений: 234
13.07.2010, 21:48
Цитата Сообщение от Shtolz Посмотреть сообщение
Здравствуйте скажите почему при вызове
IBQuery.sql.add('insert into бла-бла-бла');
изменения появляются только в dbgrid
а в базу заносятся только после disconnect-а с Базой???
интересно конечно как так у тебя получается в гриде есть а в базе нету... какой именно ты базой данных пользуешься? работаешь с транзакциями? если да то может ты просто не подтверждаешь после инсерта
1
 Аватар для Shtolz
5 / 5 / 1
Регистрация: 10.10.2008
Сообщений: 138
13.07.2010, 22:01  [ТС]
база interbase с транзакциями работаю и вроде подтверждаю(ibtransaction.comit)
если не сложно можно по подробней про транзакции
0
64 / 64 / 10
Регистрация: 19.10.2009
Сообщений: 234
13.07.2010, 22:12
Цитата Сообщение от Shtolz Посмотреть сообщение
база interbase с транзакциями работаю и вроде подтверждаю(ibtransaction.comit)
если не сложно можно по подробней про транзакции
ну вообще что такое транзакции и для чего они нужны в нете много инфы так что рассказывать не буду, ну а для реализации приведу пример токо не с такими компонентами как у тебя чет они у меня dll требуют, ну я думаю разницы особой нету

Delphi
1
2
3
ADOConnection1.BeginTrans;
//твой запрос
ADOConnection1.CommitTrans;
1
 Аватар для Shtolz
5 / 5 / 1
Регистрация: 10.10.2008
Сообщений: 138
13.07.2010, 22:26  [ТС]
Блин ничего не понятно, а разбираться времени нет =(( можно как то без транзакций?? я ее вставил потому что делфи ругался что ее нет

говорит transaction not assigned
0
 Аватар для arni
914 / 879 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
13.07.2010, 22:52
Цитата Сообщение от Shtolz Посмотреть сообщение
говорит transaction not assigned
у компонента IBQuery свойство Transaction не заполнено что-ли?
1
 Аватар для Shtolz
5 / 5 / 1
Регистрация: 10.10.2008
Сообщений: 138
14.07.2010, 01:43  [ТС]
ну да а когда транзакцию добавляю все работает только данные в БД сразу не заносит
я так понял он какую то виртуальную копию создает я с ней делаю что хочу а потом он все данные заносит в принципе это не мешает но только это не правильно =))
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
14.07.2010, 06:14
1. Кидаешь на форму экземпляр TIBTransaction
2. Прописываешь в нем параметры транзакции. Если ты собираешься под управлением этой транзакции что - то изменять в БД, то это должны быть параметры пишущей транзакции
3. Эту транзакцию прописываешь в IBQuery
4. Перед выполнением IBQuery я обычто проверяю
Delphi
1
2
  if not IBQuery.Transaction.InTransaction then
    IBQuery.Transaction.StartTransaction
5. Выполняем действие
Delphi
1
2
3
4
5
6
try
  IBQuery.ExecSQL;
finally
  if IBQuery.transaction.InTransaction then
    IBQuery.transaction.Commit;
end;
Эта конструкция только пример. Вполне возможно, что разработчик специально не коммитит транзакцию немедленно, а отдает решение о поддтверждении пользователю. Тут могут быть варианты
1
 Аватар для Shtolz
5 / 5 / 1
Регистрация: 10.10.2008
Сообщений: 138
14.07.2010, 11:27  [ТС]
примерно это же я и делаю тока не так красиво без проверок ошибок
Delphi
1
2
3
4
5
6
7
8
iBQuery1.SQL.Clear;
form1.IBTransaction1.StartTransaction;
if ComboBox1.ItemIndex = 0 then
   IBQuery1.SQL.Text:='insert into bla-bla'
else
   IBQuery1.SQL.Text:='insert into bla-bla';
IBQuery1.Active:=true;
form1.IBTransaction1.Commit;
и он ругается "EIBClientError with message Transcation is active" и становится на 4 строчку
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
14.07.2010, 11:38
Transcation is active означает, что Вы пытаетесь сратовать активную транзакцию, чего делать нельзя. Почему транзакция активна, это зависит от логики работы Вашего приложения. Разберитесь.
Ксати, точно также нельзя коммитить неактивную транзакцию.
В порядке совета. Вот так
Delphi
1
form1.IBTransaction1.StartTransaction
я стараюсь не писать. Не факт, что именно этот экземпляр транзакции прописан в IBQuery. Поэтому, на мой взгляд, лучше
Delphi
1
IBQuery.Transaction......
1
 Аватар для arni
914 / 879 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
14.07.2010, 12:11
Цитата Сообщение от Shtolz Посмотреть сообщение
примерно это же я и делаю тока не так красиво без проверок ошибок
Delphi
1
2
3
4
5
6
7
8
iBQuery1.SQL.Clear;
form1.IBTransaction1.StartTransaction;
if ComboBox1.ItemIndex = 0 then
   IBQuery1.SQL.Text:='insert into bla-bla'
else
   IBQuery1.SQL.Text:='insert into bla-bla';
IBQuery1.Active:=true;
form1.IBTransaction1.Commit;
и он ругается "EIBClientError with message Transcation is active" и становится на 4 строчку
заменить на
Delphi
1
2
3
4
5
6
7
8
9
if not form1.IBTransaction1.Active then
  form1.IBTransaction1.StartTransaction;
if ComboBox1.ItemIndex = 0 then
   IBQuery1.SQL.Text:='insert into bla-bla'
else
   IBQuery1.SQL.Text:='insert into bla-bla';
IBQuery1.ExecSQL;
if form1.IBTransaction1.Active then
  form1.IBTransaction1.Commit;
1
 Аватар для Shtolz
5 / 5 / 1
Регистрация: 10.10.2008
Сообщений: 138
14.07.2010, 20:11  [ТС]
Все разобрался =) всем спасибо
0
1263 / 706 / 62
Регистрация: 21.12.2009
Сообщений: 2,256
15.07.2010, 05:51
Цитата Сообщение от Shtolz Посмотреть сообщение
Все разобрался =) всем спасибо
Разобрался, расскажи в чем проблема была, другим полезно будет
0
 Аватар для Shtolz
5 / 5 / 1
Регистрация: 10.10.2008
Сообщений: 138
15.07.2010, 11:12  [ТС]
да ничего особенного просто транзакция у меня включена была сразу =)) я просто после каждого запроса стал ее подтверждать и все зарабоало
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.07.2010, 11:12
Помогаю со студенческими работами здесь

Как узнать были изменения в БД. Или дата время последнего изменения
Как узнать были изменения в БД. Или дата время последнего изменения. InnoDB INSERT UPDATE DELETE

Папка не меняет свою дату изменения после изменения вней txt
Здравствуйте! Помогите решить проблему, для меня это очень важно. ПРИМЕР: Допустим есть папка C:\dir1 В ней есть файл...

Как вставить макрос изменения даты и времени изменения поля?
Я не русский, я юрист. В моей базе на МС Акксесс 2016 я делаю базу цитат из литературных источников (более 400 источников). Создал поле...

Отследить изменения в файлике и вывести эти изменения в richTextBox1
Господа! Не могу понять всё, как "прокинуть" в статичный метод, другой метод. Суть отследить изменения в файлике и вывести эти...

После изменения кода, отображает элементы до изменения
Ребята, помогите, такая проблема: есть корпоративный сайт написанный на ASP.NET работает через IIS Нужно изменить некоторые элементы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 19.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru