Re: CursorAdapter - обработка ошибок | |
---|---|
PaulWist Автор Сообщений: 14625 Дата регистрации: 01.04.2004 |
Привет, Aijik.
Попробую рассказать своё видение вопроса и как сам реализую, для тебя , видимо это не будет откровением, тем не менее выслушаю любую критику. Давай рассмотрим предложенную тобой схему на примере таблиц мастер-детали с использованием RV (есс-но параметризированных) Допущения - RV_мастер в качестве параметра принимает ID int Idntity() PK - RV_детали имеют ID FK на мастер и тоже имеет параметр ID мастер таблицы - не рассматриваем триггеры на обе таблицы - RV не модифицируемые (на самом деле с RV не работаю, по этому поводу даже бодался с уважаемыми Igor Korolyov,Владимир Максимов, в итоге пришли ко мнению что это дело вкуса, тем не менее давай на них) Цитата: а) Что делаем - открываем RV_мастер , RV_детали NODATA Цитата: б) Делаем INSERT и туда и туда Цитата: в) Что это значит в нашем случае - надо создать SQLCommand_строку на основе RV_мастер , RV_детали , вложить в транзакцию и запихнуть это на сервер - в этом же batch-e надо вернуть ID мастер таблицы Цитата: г) поскольку, обновление прошло успешно можно и не обновлять (если мы не предпринимаем дальнейших действий с данными) , в противном случае достаточно выполнит REQUERY(RV_мастер , RV_детали ) с PK&FK Цитата: д) просто помечаем записи RV как удаленные Цитата: е) здесь возможно 2 варианта - Batch SQLCommand с возвратом ошибки - либо RV сказать апдейтабл и TABLEUPDATE (в этом случае другой геморой возникает с перводом транзакций соединения в ручной режим) PS схема такая. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: CursorAdapter - обработка ошибок | |
---|---|
Aijik Сообщений: 2145 Откуда: Ростов-на-Дону Дата регистрации: 08.01.2002 |
PaulWist
Цитата: Цитата:Пользователь добавил запись в мастер-таблицу (новый документ)? Т.е. ты хотел поставить в последнем предложении не запятую, а "и", так? И RV_мастер NODATA и RV_детали NODATA? Цитата:А второе "туда" зачем? Цитата:Что в качестве внешнего ключа RV_детали на мастер (давай называть его MasterID) было было передано на сервер?. Ведь первичный ключ новой записи Мастера еще не известен - мы не запрашивали его еще Цитата:Тут важен не факт именно удаления, а по-сути факт хоть какой-нибудь модификации, ибо основная проблема в отсутсвии связи <PK на сервере>-<PK на клиенте> при сбросе изменений Цитата: Читаю и чувствую что меня тоже придется придется "лечить", ибо ни фига не понятно ;) [i][small][color=Gray]Отредактировано (22.12.04 11:16) ------------------ |
Re: CursorAdapter - обработка ошибок | |
---|---|
PaulWist Автор Сообщений: 14625 Дата регистрации: 01.04.2004 |
Aijik
Цитата: Перечитал, отвлеченно, сам своё послание и мне тоже стало непонятно Давай, в деталях 1) Наши VIEW
2) Открываем VIEW, предполагаем , что вводим новый документ (с редактированием старого вроде понятно - все ID есть)
3) Наредактировали оба или только мастер VIEW Цитата: Второе туда - это в детали, можно детали не заполнять (ну мало ли - шапка есть а содержание решили ввести потом)
Цитата: Пока работаем с локальными курсорами, и ес-но RV_мастер.ID & RV_детали.MasterID у нас NULL, ну или DEFAULT значение наших RV. 4) Теперь создаем пакет обновления, например
т.е. сформировали пакет - отправили на сервер - получили значение PK для RV_мастер (я реализую 'nj по другому, но принцип такой же) Теперь, можно и оба RV обновить, поскольку PK известен, соответственно можно проводить любые манипуляции с RV_мастер и RV_детали (добавлять, удалять, модифицировать) Следующий этап - как сохранить , то что мы натворили после получения PK, здесь два пути - TABLEUPDATE на оба VIEW - или составить batch и SQLExec-ом запихать на сервер. PS перечитал сам, вроде понятно ;) ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: CursorAdapter - обработка ошибок | |
---|---|
Aijik Сообщений: 2145 Откуда: Ростов-на-Дону Дата регистрации: 08.01.2002 |
Ну вот.... похоже, что "лечение" все-таки удастся пока оттянуть Схема понятна. Редактируется и RV_мастер и RV_детали сколько угодно вообще не заботясь о MasterID, а получение последнего и увязка с FK деталей делается внутри батча, в котором все окружено транзакцией + последующее REQUERY по вернувшемуся @IDEN
|
Re: CursorAdapter - обработка ошибок | |
---|---|
PaulWist Автор Сообщений: 14625 Дата регистрации: 01.04.2004 |
Aijik
Цитата: "Лечить" - это относилось ко мне и если это так, то что под этим подразумевается. Цитата: Хорошо. Косноязычие - не порок, а болезнь, кот. исправляется общением. ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) |
Re: CursorAdapter - обработка ошибок | |
---|---|
Aijik Сообщений: 2145 Откуда: Ростов-на-Дону Дата регистрации: 08.01.2002 |
Цитата:Это относилось ко мне самому ;) Это была шутка по поводу шутки: Цитата:(с) by Владимир Максимов Цитата:Да не... не в косноязычии дело, просто в первом посте ты писал о своем, а я читал о своем. В результате, как обычно и бывает в таких случаях, возник небольшой мисандерстэнд [i][small][color=Gray]Отредактировано (22.12.04 13:13) ------------------ |
© 2000-2024 Fox Club  |