Конференция "Базы" » ClientDataSet [D7, FB]
 
  • VikOss © (06.03.15 10:30) [0]
    Снова мидас. Кривоватая весч, но приходится воевать. Вопрос для тех кто реально работал. Просьба не флудить, про то как можно без этого обойтись, что все лохи и т.д. Ок?
    По существу. Перерыл весь инет, и! нашёл лишь такие же вопросы как и у меня, самое обидное, без ответов. Итак: есть два удаленных клиента. Один изменяет запись, другой в это время её удаляет. При обновлении базы, второй клиент должен получить сообщение, что запись удалена и принять решение - мидас так реализует... Банально? Ан нетс. Конечно, у нас есть событие на ошибку (OnReconcileError), где можно принять это самое решение, типа отмена, сброс и т.д., самое важное - raCorrect, т.е. возможность второму клиенту все же внести свою запись! Так вот КУКИШ!
    Как победить ?
    Спасибо за внимание.
  • junglecat © (08.03.15 16:12) [1]
    > Как победить ?

    что именно победить? невозможность второму клиенту внести свою запись?
    с доступом всё в порядке, тот что в dcomconfig настраивается?
    у мидаса с этим все жестко, чуть каких прав не хватает - не будет нормально работать
  • Inovet © (08.03.15 19:45) [2]
    > [0] VikOss ©   (06.03.15 10:30)
    > второй клиент должен получить сообщение

    Почему не первый?
  • VikOss © (09.03.15 07:40) [3]
    > с доступом всё в порядке, тот что в dcomconfig настраивается?

    Можно здесь поподробнее?
  • junglecat © (09.03.15 10:41) [4]
    как варианты
    - CDS.FieldByName('ID').ProviderFlags := [pfInWhere, pfInKey];
    - попробовать raMerge вместо raCorrect + ApplyUpdates
  • VikOss © (09.03.15 11:34) [5]
    > попробовать raMerge вместо raCorrect + ApplyUpdates
    пробовал, не работает.
    >- CDS.FieldByName('ID').ProviderFlags := [pfInWhere, pfInKey];

    для ключевых установил только pfInKey. Восстановить запись невозможно. Только вариант - кто последний - тот всегда прав...
  • sniknik © (10.03.15 10:55) [6]
    последний всегда прав, и это не мидас, это общее, с "прямой" работой с sql сервером так же. и удаленная запись восстановлению не подлежит. если не хочешь реально удалять не удаляй, а ставь метки типа "удалено", как раньше для dbf-о подобных было.
  • VikOss © (10.03.15 12:02) [7]
    > sniknik ©   (10.03.15 10:55) [6]

    последний всегда прав, и это не мидас, это общее, с "прямой" работой с sql сервером так же. и удаленная запись восстановлению не подлежит. если не хочешь реально удалять не удаляй, а ставь метки типа "удалено", как раньше для dbf-о подобных было.


    Это все понятно. Непонятно назначение обработчика ошибок в мидасе. Если произошла ситуация, описанная мною, провайдер держит у себя в памяти старые данные(или их отсутствие:-) и те что я пытаюсь внести - и спрашивает ЧТО ДЕЛАТЬ ? Я ему говорю - вноси МОИ данные !  Он пукает в лужу...
    Кто нибудь понимает для чего там эта нерабочая фича?
  • sniknik © (10.03.15 12:31) [8]
    > Кто нибудь понимает для чего там эта нерабочая фича?
    для тех sql серверов/локальных движков которые это понимают...

    > Он пукает в лужу...
    а мне кажется это ты... уверен что вся технология работает исключительно там как ты вот сейчас в данный момент сделал, и ни шагу в сторону.
  • VikOss © (10.03.15 13:45) [9]
    хм, ланалана. Пока люди работают, и не ругаются :-), посмотрим что время скажет...
    Спасибо за внимание.
  • VikOss © (10.03.15 13:50) [10]
    >для тех sql серверов/локальных движков которые это понимают...

    ВОТ! И я об этом думать стал. Ведь во всех описаниях там SQLConnection пользуется, а у меня не совсем вроде - IBDatabase->IBDataset->DataSetProvider...
    МОЖ тут собака зарылась?
 
Конференция "Базы" » ClientDataSet [D7, FB]
Есть новые Нет новых   [118488   +59][b:0][p:0.001]