Форум: "Базы";
Текущий архив: 2013.04.28;
Скачать: [xml.tar.bz2];
ВнизClientDataSet Найти похожие ветки
← →
VikOss © (2010-11-08 11:36) [0]Мастера, помогите ! Честно перелопатил кучу инфы и так до конца не смог разобраться. Вопрос думаю для вас менее чем детский, однако меня он достал. Итак.
Приложение клиент-сервер, но с использованием локального кэширования. Связка ClientDataSet ->DataSetProvider->IBDataSet->IBDataBase. Работает, только "странно". По нажатию кнопки делаю ApplyApdate. Вот тут беда, короче в базу изменения приходят только ПОСЛЕ закрытия приложения ! И если в базе что-то изменилось, то нужно закрыть приложение, убить локальный файл, и только тогда всё видно! Бред какой-то, спасите !
ПЫСЫ: можете бить, ругать, обзывать, ТОЛЬКО ПОМОГИТЕ !!! :-)
← →
12 © (2010-11-08 12:02) [1]Commit?
← →
VikOss © (2010-11-08 12:16) [2]Для чего? Метод ApplyApdates у ClientDataSet вроде не требет коммитов, он тупо должен все обновить, т.е. привести в соответствие.
← →
12 © (2010-11-08 12:40) [3]а вы попробуйте
← →
VikOss © (2010-11-08 13:02) [4]:-) , блин нигде конкретно не написано, но работает короче с коммитом, только изменения С сервера не приходят, только после перезагрузки.
← →
VikOss © (2010-11-08 13:35) [5]Считывать "руками" как-то не правильно, почему метод ApplyApdates не берёт С сервера? Ведь если на серваке есть запись а у клиента её нет, то должен добавить? Или я туплю?
← →
Медвежонок Пятачок © (2010-11-08 14:07) [6]Ведь если на серваке есть запись а у клиента её нет, то должен добавить? Или я туплю?
А если на сервере и на клиенте есть запись, но на сервере другая, то apply updates должен типа обновить запись на клиенте?
← →
12 © (2010-11-08 14:17) [7]
> VikOss © (08.11.10 13:35) [5]
не
если команда применить изменения, то именно это и делается.
с этим TClientDataSet там по идеологии не положено тыркать с/на сервер лишний раз.
А вообще книжку надо и раздел соотв. почитать.
Вообще, неудобный при современных скоростях метод. ИМХО.
← →
VikOss © (2010-11-08 14:33) [8]Как раз таки метод оч удобный, по задаче требуется при разрыве связи продолжать работать как ни в чём не бывало. Да всё вродь нормально, но вот не могу добить эти обновления с серваком, ну не догоняю я, а в книгах и разделах самые примитивные примеры с ADO, нет полноценного с IB, а разница в мелочах как раз и достаёт...
← →
VikOss © (2010-11-08 14:36) [9]
> А если на сервере и на клиенте есть запись, но на сервере
> другая, то apply updates должен типа обновить запись на
> клиенте?
Не совсем так, чёрт я с этим и ломаю голову, если добавил другой юзер на сервак, то этот должен по AppLyApdate разумеется увидеть её.
← →
Sergey13 © (2010-11-08 14:44) [10]> [9] VikOss © (08.11.10 14:36)
> то этот должен по AppLyApdate разумеется увидеть её.
Почему "разумеется" то? "AppLyApdate" - переводится (с моим скудным инглишем) как "применить изменения", а не "синхронизироваться с сервером". Т.е. односторониий обмен.
Датасет - это не телевизор с данными, это фотографии. Хочешь обновить - перефотографируй.
← →
VikOss © (2010-11-08 15:06) [11]
> Почему "разумеется" то? "AppLyApdate" - переводится (с моим
> скудным инглишем) как "применить изменения", а не "синхронизироваться
> с сервером". Т.е. односторониий обмен.
> Датасет - это не телевизор с данными, это фотографии. Хочешь
> обновить - перефотографируй.
А новая запись на сервере не относится к изменениям? Или изменения считаются только на стороне клиента? Получается при каждом ApplyApdates ещё и данные с сервака перечитывать? Не, что то тут не так, иначе нафиг этот метод нужен? Одним запросом загнал всё в базу, другим прочитал и усё... Я думаю разработчики тут предлагали более широкие возможности, да и в примере с ADO нет перезапроса данных, но там ,повторюсь, чуть иначе всё реализуется. Неужели никто не использовал ClientDataSet в связке с FB/IB ?
← →
VikOss © (2010-11-08 15:11) [12]Прихожу к мысли что всё таки ClientDataSet потому и клиент, не могёт он на серваке видеть, он тока у клиента пасёт изменения, потому и после переоткрытия приложения всё видно - тупо запрос на чтение выполняется.
12 и Sergey13 СПАСИБО!
← →
Медвежонок Пятачок © (2010-11-08 16:05) [13]Не совсем так,
по твоей логике как раз так.
если на сервере есть записи, а на клиенте ее нет, то апплай должен вставить запись в клиента.
то есть серверный вариант имеет приоритет.
значит апдейт сервера с клиента должен апдейтить не сервер, а клиента.
по твоей логике.
← →
VikOss © (2010-11-08 16:18) [14]
> по твоей логике как раз так.
> если на сервере есть записи, а на клиенте ее нет, то апплай
> должен вставить запись в клиента.
> то есть серверный вариант имеет приоритет.
> значит апдейт сервера с клиента должен апдейтить не сервер,
> а клиента.
> по твоей логике.
Но этого и не происходит, блин, запарился уже конкретно. Начал перечитывать, фиг там, если есть локальный файл, вообще бред происходит, ругается что не могу, запись не доступна, либо занята другим юзером, но я счас разумеется один! Удаляешь файло, читает. Блин, ну кто-нить, разжуйте в двух словах как реализовать такую модель, типа портфель? Все описания в литературе на адо не катят.
На словах всё просто- фактически локальная база, нажал кнопку и все изменения, удаления, добавления пошли на сервер, а с сервера...вот в этом месте и парюсь...
← →
12 © (2010-11-08 16:30) [15]
> а с сервера...вот в этом месте и парюсь...
> Хочешь обновить - перефотографируй.
← →
VikOss © (2010-11-08 16:46) [16]
> > Хочешь обновить - перефотографируй.
Блин гдето упустил, смотри - открыл, считал с сервера, всё ок. Закрыл - данные в файло, всё ок. На сервак добавляю запись руками. Открываю приложение. Всё ок (все записи видны). Жмём обновить и ОП получаемс старые записи из файла...
← →
VikOss © (2010-11-08 18:16) [17]Господа, заметил, что ВРОДЕ проблема с ключами. Дело в том, что локально приходиться создавать свои ключи (типа в минус), а при передаче на сервер там триггер переприсваивает уже на нормальный. Но в запросах на обновление сравнивается по ключу и ОП, а у меня локально один, а на серваке другой. Может есть другой механизм? С сервака нельзя, типа работаем без подключения.
Кстати почему после чтения из локального файла, срабатывает именно апдейт, а не вставка?(внёс запись и сохранил на диске, потом переоткрыл программу и нажал обновить)
← →
VikOss © (2010-11-08 19:09) [18]Короче, нашёл проблему, но не решил, может счас кто подскажет. В общем при обновлении не происходит как таковое обновление на клиенте, сервер все данные получает правильно, расставляет ключи. А вот на клиенте упс, что только не открывал-закрывал, пофиг , данные обновляются только перезагрузкой приложения, чё за бред? Да и кэш непонятно висит, надо убить файл, ну это ясно, а потом ! два ! раза в дезайн тайме открыть-закрыть ClientDataSet !!! Чё это за кэш такой?????
← →
VikOss © (2010-11-08 20:06) [19]Что, никто не знает? Как обновить чёртовы данные на клиенте???? Открыть закрыть датасет и вообще всё что можно НИКАКОГО эффекта !
← →
VikOss © (2010-11-08 20:42) [20]ХУУУ!!!! Как всегда решение окажется под самым носом, напишу, мож кому пригодится.
При обновлении НЕ ЗАБЫВАЕМ убрать из свойства FileName имя файла! Он если его видит, работает ИСКЛЮЧИТЕЛЬНО с файлом и ложил с перебором на все ваши ухищрения !
:-)) :-)
← →
12 © (2010-11-09 09:03) [21]
> 08.11.10 20:42
кто ж в это время работает, все советы - до 18-00 :)
← →
Anatoly Podgoretsky © (2010-11-09 09:26) [22]> 12 (09.11.2010 09:03:21) [21]
Особенности бесплатного российского Интернет.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2013.04.28;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.003 c