Форум: "Базы";
Текущий архив: 2003.08.07;
Скачать: [xml.tar.bz2];
ВнизTTable->TDataSetProvider->TClientDataSet Найти похожие ветки
← →
Sectey (2003-07-03 08:58) [0]Добрый день.
У меня в проекте есть цепочка TTable->TDataSetProvider->TClientDataSet. Все работает нормально пока не делаешь ClientDataSet.ApplyUpdates. Тут и начинаются чудеса. Существуют ли какие либо правила, организации таких цепочек? Заранее благодарен всем.
← →
Alex_*** (2003-07-03 09:16) [1]Чудеса... И как ты представляешь себе ответ? Как бороться с чудесами? - Читать хелп. Что конкретно происходит?
← →
Johnmen (2003-07-03 09:22) [2]>Sectey ©
В чем смысл применения данной цепи ?
← →
BorisUK (2003-07-03 09:32) [3]... если ч чудесами то наверно так...
Повернись на стуле по часовой стрелки восемь раз и сплюнь через левое плечо на клавиатуру...
Потом произнеси молитву...
← →
Соловьев (2003-07-03 09:33) [4]http://olegmotov.h1.ru/articles/inprisemidas/title.htm
← →
Sectey (2003-07-03 09:34) [5]>Alex_***
1.ОШИБКА -> Unable ro resolve records. Table name not found.
2.Изменяет но при этом изменив поле в одной записи он изменяет значени данного поля во всех записях
← →
Alex_*** (2003-07-03 10:35) [6]Связка не нарушена? Должно работать,там ничего сложного нет. Попробуй на простой табличке протестировать. Кстати режим однопользовательский?
← →
Romkin (2003-07-03 10:37) [7]Применяешь TTable - поставь у провайдера ResolveToDataset = true
и не мучайся
← →
witchka (2003-07-03 19:50) [8]Я уже 2 недели ищу ответ на похожий вопрос. Буду очень благодарна за ссылку на какой-либо содержательный хелп.
Проблема в следующем:
1. Серверная часть - MTS Data Module содержит компоненты pFIBDataBase, pFIBDataset c двумя транзакциями на чтение и запись pFIBTransaction с TimeoutAction "TACommit" и TDataSetProvider.
2. На клиенте - TClientDataset. ApplyUpdates(-1) - возвращает 1 = все нормально, делаю рефреш клиентскому датасету - и никаких изменений не видно. В базу изменения заносятся только после закрытия клиентского приложения.
Я подозреваю, что где-то напортачила с транзакциями. Не знаю, где вызвать метод SetComplete.
Это мой первый проект с MIDAS, MTS, FireBird и FIBPlus library.
Жутко стыдно, но сама разобраться не могу.
Все, что описано в "Основы MIDAS" по этому поводу (ссылка выше) - я сегодня попробовала - у меня не работает.
← →
BorisUK (2003-07-04 08:34) [9]witchka (03.07.03 19:50)
Твоя проблема и не проблема вовсе :)
Просто делай что то типа pFIBTransaction.Commit;
Хотя я и не работаю именно с этими компонентами...
Решение в общем такое... Надо посылать с сервера приложений команду "Закомитить данные в СУБД"
Поставь выполнение комита на AfterUpdates (или как там свойство будет называться у твоиз FIB компонентов) в RDM на сервере приложений...
Возможно даже лучше будет делать так...
Создать дополнительные методы в интерфейсе твоего сервера скажем Сommit и Rollback и вызывай их в зависимости от того что надо Подтвердить или откатить изменения...
Все зависит от постановки задачи...
Удачи!
← →
witchka (2003-07-15 16:21) [10]Спасибо за помощь! все оказалось значительно проще :) Как я и предполагала - ошибка была в ДНК :))) Когда у меня все-таки ничего не получилось, я написала тестовый пример с теми параметрами. На этапе создания SQL-запросов для pFIBDataSet (они не захотели генериться автоматически) я поняла, что в прошлый раз ошиблась с рефреш-запросом - просто согласилась с предложенным, а он обновлял только те записи, которые уже были в наборе данных, в то время как я тестировала приложение на момент добавления новых записей! :))) В общем, глупо, конечно... Но зато узнала много нового. :) Выводы: никаких дополнительных интерфейсов и коммитов, pFIBTransactions с TimeOutAction=TACommit и Options: write, rec_version, nowait, read_committed. Все работает! :)
Еще раз - спасибо!
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.08.07;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c