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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2014, 21:56   #1
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию Обновление данных в IBTable (или его DBGrid)

Суть - есть две формы, работающие с одной таблицей. Изменения проводимые в одной форме, не видны во второй. IBTable.ReFresh не дает никаких результатов. Как синхронизировать обе IBTable?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 30.01.2014, 22:40   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Задать им один и тот же датасет пробовал?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.01.2014, 22:41   #3
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Переоткрытие датасета.
Код:
IBTable.Close;
IBTable.Open;
Другого не дано.
Прик вне форума Ответить с цитированием
Старый 30.01.2014, 22:57   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Другого не дано.
Не работает. Даже принудительно таблицы менял (думал переоткроются заработает)
Может дело в самой делфи или 7-ке? Ну типа там с какими-то правами запускать или еще что? Вообще при открытии программы заново записи становятся видны, но каждый раз программу переоткрывать как-то не по фень-шую.
Цитата:
Задать им один и тот же датасет пробовал?
Там одна IBTable периодически открывает разные таблички. Не удобно в общем получается.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика

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

А точно нужный IBTable переоткрываете? Да еще, если транзакция не завершена по изменениям, то и переоткрытие не поможет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 30.01.2014, 23:09   #6
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
А точно нужный IBTable переоткрываете?
Тот, я там процедурку накидал, она все их поочереди переоткрывает (чтобы не париться).
Цитата:
Да еще, если транзакция не завершена по изменениям, то и переоткрытие не поможет
Как это определить и как это исправить?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 30.01.2014, 23:12   #7
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Цитата:
Изменения проводимые в одной форме, не видны во второй.
Фраза довольно загадочная. Если речь идет об изменениях в БД, то почему упоминаются некие "изменения на форме"?
Тут уже гадать приходится.
Допустим IBTable1 и IBTable2 "соединены" с "Table" в БД.
Если каким-то образом меняются данные "Table" с помощью одного датасата, то тут же необходимо переоткрыть дургой датасет, чтобы он обновил свой набор данных.
И в чем здесь может скрываться проблема?
Прик вне форума Ответить с цитированием
Старый 30.01.2014, 23:16   #8
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
И в чем здесь может скрываться проблема?
я пробовал и датасеты и табле и IBTransaction. Прик, там все интересней чем кажется на первый взгляд. Подозреваю, что надо копать где-то в режимах работы самой IBDateBase (то есть я иду по восходящей, начал с дбгрида).
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 30.01.2014, 23:17   #9
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Цитата:
Как это определить и как это исправить?
IBTable, к сожалению, не предоставляет "ручного" управления транзакциями (они стартуют и заканчиваются во внутренностях IBX). Поэтому проблема представляется в неверной организации обновления измененных данных.
Цитата:
Подозреваю, что надо копать где-то в режимах работы самой IBDateBase
Напрасная трата времени и сил. IBDateBase ни в чем не виноват.

Последний раз редактировалось Прик; 30.01.2014 в 23:24.
Прик вне форума Ответить с цитированием
Старый 30.01.2014, 23:34   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Вот не люблю этой мороки непосредственного редактирования в гриде да еще с разновидностями Table. Если и возникает такая необходимость, то цепляю в цепочку ADOQuery, DataSetProvider и ClientDataSet. Ну еще LocalConnection может понадобится. Милое дело - управляй транзакциями как хочешь, откаты в ClientDataSet, запись в базу его же методом ApplyUpdates. Молчу уже о куче индексов, клонировании и прочее. С IBQuery не знаю, прокатит ли такая метода, не имел с этими компонентами дела
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление данных dbgrid с БД Access otter86 Общие вопросы Delphi 1 02.12.2013 12:29
DBGRID проверка на обновление данных cezer БД в Delphi 12 06.06.2013 20:00
Обновление данных DBGrid DS75 БД в Delphi 24 02.11.2011 22:38
DBGrid и обновление данных в БД a_n_n_a БД в Delphi 1 02.08.2011 18:02
Обновление данных в DBGrid и фокус строки. Serval БД в Delphi 10 05.06.2009 11:50