|
|
|
создание элемента справочника с табличной частью
|
|||
|---|---|---|---|
|
#18+
Подскажите как правильно создать элемент справочника с табличной частью? Справочник организован в виде двух таблиц: элементы шапки HEAD и GRID табличная часть При появлении формы добавления я создаю запись в табл HEAD, это нужно для того чтобы можно было создавать записи в табличной части Но если вдруг пользователь передумал создавать эл. справочника то мне нужно удалить запись из HEAD Есть ли какие-то другие варианты обработки такого вида справочников? При обычном справочнике: вызвал форму -> ввел данные -> нажал сохранить -> вставил данные в БД а тут до внесения данных мне уже нужно создать запись , а потом либо обновить её, либо удалить... Так и нужно действовать или есть другие варианты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2010, 12:24 |
|
||
|
создание элемента справочника с табличной частью
|
|||
|---|---|---|---|
|
#18+
miha-haдо внесения данных мне уже нужно создать записьА давайте так: 1) Юзер вызвал диалог создания нового справочника 2) Юзер ввел в верхней части диалога имя нового справочника (и, возможно, еще какие-то свойства) 3) Юзер ввел в нижней части окна в к.-л. гриде перечень элементов справочника (там есть еще кнопки "добавить/удалить") 4) Юзер нажал кнопку "схранить" 5) И только после этого создалась новая запись в главной таблице и новые записи в подчиненных таблицах Как Вам такой вариант взаимодействия с юзером? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2010, 12:33 |
|
||
|
создание элемента справочника с табличной частью
|
|||
|---|---|---|---|
|
#18+
Паганель, хороший вариант но дело в том что у меня нет возможности буферизировать данные на клиенте :( клиент - это форма в браузере... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2010, 12:40 |
|
||
|
создание элемента справочника с табличной частью
|
|||
|---|---|---|---|
|
#18+
miha-haклиент - это форма в браузере...И что? Форма в браузере не может данные содержать? А как же JavaScript-переменные? Неужели в JavaScript нет типа данных "массив" (или коллекция) объектов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2010, 12:47 |
|
||
|
создание элемента справочника с табличной частью
|
|||
|---|---|---|---|
|
#18+
Паганельmiha-haклиент - это форма в браузере...И что? Форма в браузере не может данные содержать? А как же JavaScript-переменные? Неужели в JavaScript нет типа данных "массив" (или коллекция) объектов? Создание хранилища на клиенте в принципе возможно - но не будет ли это усложнением? Или всё-таки это правильный подход... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2010, 13:02 |
|
||
|
создание элемента справочника с табличной частью
|
|||
|---|---|---|---|
|
#18+
miha-haСоздание хранилища на клиенте в принципе возможно - но не будет ли это усложнением? Или всё-таки это правильный подход...Да, будет усложнением Да, я считаю что уменьшение количества обращений к БД - это правильный подход Кроме того, подумайте, что будет, если при Вашем подходе несколько юзеров начнут справочники редактировать? Это ж вообще отдельная пестня ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2010, 13:06 |
|
||
|
создание элемента справочника с табличной частью
|
|||
|---|---|---|---|
|
#18+
Паганель Кроме того, подумайте, что будет, если при Вашем подходе несколько юзеров начнут справочники редактировать? Это ж вообще отдельная пестня даже и представить боюсь :) я как-то решал подобную проблему с помощью таблицы блокировок перед любым изменением нужно сходить и поглядеть не заблокирована ли запись причем запись блокируется на определенное время - аренда если запись заблокирована и скрок аренды не истек - то курим. в противном случае редактируем но не думаю что я буду эту систему применять для справочников... хотя кто-его знает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2010, 13:33 |
|
||
|
создание элемента справочника с табличной частью
|
|||
|---|---|---|---|
|
#18+
ну так если данные не добавляются пока не нажато "сохранить" то другой юзер и не увидит новую запись главной таблицы, ее ж еще нету в базе а раз не увидит, то и не сможет начать пихать ссылающиеся на нее записи в подчиненную таблицу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2010, 13:39 |
|
||
|
создание элемента справочника с табличной частью
|
|||
|---|---|---|---|
|
#18+
Паганель, предыдущий пост я писал про возможность одновременно редактирования уже добавленного эл справочника придумываю систему хранения на клиенте... кстати использую ExtJS случайно не разбираетесь в этой либе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2010, 13:49 |
|
||
|
создание элемента справочника с табличной частью
|
|||
|---|---|---|---|
|
#18+
miha-haвозможность одновременно редактирования уже добавленного эл справочникадля начала выберите стратегию блокирования miha-haкстати использую ExtJS случайно не разбираетесь в этой либе?нет, я в JavaScript вообще не разбираюсь у меня с детства аллергия на языки, в которых в случае опечатки компилятор не скажет мне "переменной с таким именем не существует" ЗЫ кстати, наверное, надо прекращать, ато сейчас придут модераторы и скажут, что вся эта тема к проектированию БД никак не относится ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2010, 13:59 |
|
||
|
создание элемента справочника с табличной частью
|
|||
|---|---|---|---|
|
#18+
в итоге: Выбрал вариант с буферизацией данных на клиенте Это действительно ТРУ Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2010, 14:32 |
|
||
|
создание элемента справочника с табличной частью
|
|||
|---|---|---|---|
|
#18+
Правильный ответ (который ТруЪ) Начать транзакцию Вставить шапку Вставить тело Вставить тело Обновить или удалить что нибудь. Коммитить транзакцию. Если передумал в любом месте, или соединение прервалось - откат. Другое дело что ваш сервер может не любить длинных транзакций... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2010, 17:25 |
|
||
|
создание элемента справочника с табличной частью
|
|||
|---|---|---|---|
|
#18+
Кстати с браузером выбор стратегии блокирования легко сужается только для оптимистического. Вот только пользовательских блокировок (самодельных таблиц и полей) не надо. Вреда от них больше чем пользы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2010, 17:30 |
|
||
|
создание элемента справочника с табличной частью
|
|||
|---|---|---|---|
|
#18+
SERG1257, не хочеться флеймить, но в чем собственно вред? как быть если мне необходимо узнать какой пользователь читает запись? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2010, 16:48 |
|
||
|
создание элемента справочника с табличной частью
|
|||
|---|---|---|---|
|
#18+
miha-ha как быть если мне необходимо узнать какой пользователь читает запись? Читает или обновил? Попробую объяснить - заводим поле - флаг типа занята, так что следующий пользователь не будет пытаться редактировать запись. То есть по сути пытаемся реализовать пессимистическое блокирование. Но между чтением записи (когда мы узнаем что запись блокирована) и записью (когда в сущности это важно) есть промежуток времени во время которого может быть блокировка снята (и мы зря ждали) или наложена (а мы думали что нет) Чтобы реализовать пессимистическую стратегию надо запретить серверу читать строку если она обновлена. Другое дело, если вы реализуете блокировку на более высоком уровне - то бишь это мой клиент и все его причиндалы мои, то есть не на уровне строк. Тогда это имеет смысл. А так советую просто реализовать оптимистическую блокировку - завести поле timestamp и по желанию кто и когда последний обновил строку. Если при обновлении выясняется что timestamp во время чтения не равен во время записи - выводим пользователю ошибку о том что запись была изменена кем и когда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2010, 17:25 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=36803484&tid=1542577]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
166ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
73ms |
get tp. blocked users: |
2ms |
| others: | 214ms |
| total: | 508ms |

| 0 / 0 |
