Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
6-1267125434
Mer01
2010-02-25 22:17
2013.04.28
Можно ли зная TSocket получить ip и порт удаленной машины?


15-1356763220
slvcomputer
2012-12-29 10:40
2013.04.28
Требуется ведущий Delphi-разработчик (з/п 80-120 т.р.)


15-1356640202
Юрий
2012-12-28 00:30
2013.04.28
С днем рождения ! 28 декабря 2012 пятница


15-1356525814
Аббат Пиккола
2012-12-26 16:43
2013.04.28
Новогодний подарок тем, у кого еще есть ИП


4-1264961719
ProgRAMmer Dimonych
2010-01-31 21:15
2013.04.28
Получить шрифт заголовка окна без обращения к реестру





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский