Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.11.2014, 09:06   #1
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию Помогите опеределиться со структурой БД.

Есть ТЗ на создание программы «Ведение учета договоров». Предполагается использование Delphi +Firebird. Как бы вроде все ясно и понятно, но у меня возник вопрос , КАК ХРАНИТЬ САМ ТЕКТС ДОГОВОРА. Я подумал, что буду использовать поля BLOB.
1. Создаем WORD документ. Набираем текст. Загружаем его в БД в BLOB.
2. Если надо редактировать, выгружаем его, редактируем и сохраняем в BLOB.
Если честно, то никогда еще не работал с BLOB, поэтому возникло несколько вопросов.
БД будет многопользовательская, чтобы было понятнее, объясню масштаб, гиперболизируя : Сервер с БД лежит в Москве, user 1 в Екатеринбурге, user 2 в Саратове, user3 в Смоленске и т.д.
Вопрос №1. Например, user1 начал редактирование договора №1, также этим решил заняться и user2, как их уведомить о том, что они работают над одним и тем же документом, как решить чей вариант сохранять в БД, учитывая изменения всех, в общем как организовать совместную работу над документом.
Может отказаться от работы над документом в WORD, какие компоненты тогда применить, посоветуйте, кто сталкивался.
Спасибо.
tarakan1983 вне форума Ответить с цитированием
Старый 27.11.2014, 09:43   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Совместное редактирование на уровне блобполя ни как. Совместное редактирование на не пересекающихся разделах документа возможно и сильно геморройно. А как эти договора собираются использовать - как вещь в себе или другие армы будут опираться на информацию договоров?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.11.2014, 09:58   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как их уведомить о том, что они работают над одним и тем же документом
Не знаю как в огнептице, а в... м.м.м... стандарте вроде есть блокировка SELECT FOR UPDATE, которая позволяет заблокировать редактирование (и даже выборку в некоторых случаях) для других пользователей.
Короче почитай о блокировках огнептицы, как там механизм устроен.
Цитата:
Может отказаться от работы над документом в WORD
В пользу чего? Тогда тебе нужна иерархическая БД типа Lotus. В ней документооборот можно построить на подобие открытого документа, опять таки без знаний ее применять никак.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.11.2014, 10:42   #4
Vad33
Участник клуба
 
Аватар для Vad33
 
Регистрация: 24.07.2009
Сообщений: 638
По умолчанию

Цитата:
Вопрос №1. Например, user1 начал редактирование договора №1, также этим решил заняться и user2, как их уведомить о том, что они работают над одним и тем же документом, как решить чей вариант сохранять в БД, учитывая изменения всех, в общем как организовать совместную работу над документом.
Может отказаться от работы над документом в WORD, какие компоненты тогда применить, посоветуйте, кто сталкивался.
Добавь поле - признак кто редактирует. т.е. первый открывает на
редактирование появляется логин/фамилия в поле,
второй может открыть только на чтение, т.к. появляется предупреждение,
что такой то редактирует. Пока первый не запишет файл признак не убирается.
Не нужно решать чей вариант сохранять.
Можно применить компоненты RTF, но для людей привычней в Word'e, поверь
на слово. А Word можно засунуть в окно программы, чтобы лишнего не позволяли.
** Удача терпелива. **
Vad3333@inbox.ru
Vad33 вне форума Ответить с цитированием
Старый 27.11.2014, 11:27   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Добавь поле - признак кто редактирует
Тоже самое огнептица может сделать без всяких допонительных полей и таблиц мониторинга с помощью правильного выбора уровней изоляции транзакций на чтение и запись
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.11.2014, 12:06   #6
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

Если засунуть в окно моей программы word, то реально как то отловить сохранение документа в word варианте и автоматом записывать этот вариант в БД.
И еще вопрос, например, юзер открыл документ на редактирование и ушел в туалет, потом покурить, потом на обед и т.д. Как поступить в таком случае.
P.s. Измените за ошибки, пишу с телефона.
tarakan1983 вне форума Ответить с цитированием
Старый 27.11.2014, 12:10   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
И еще вопрос, например, юзер открыл документ на редактирование и ушел в туалет, потом покурить, потом на обед и т.д. Как поступить в таком случае.
Юзера кастрировать. Или программно тайм-аут, не отредактировал за пол часа - гуляй Вася.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.11.2014, 12:25   #8
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Юзера кастрировать. Или программно тайм-аут, не отредактировал за пол часа - гуляй Вася.
Хорошо если это юзер мужского рода. Вы имеете в виду таймаут между тем как юзер нажал редактировать и сохранил документ в БД? Это жестоко. Можно ли как то отловить таймаут, что кнопки не нажимались пол часа, если нет, то сохранить и закрыть документ?
tarakan1983 вне форума Ответить с цитированием
Старый 27.11.2014, 12:57   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Копать в сторону Application.OnIdle, GetLastInputInfo
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 27.11.2014 в 13:08.
Аватар вне форума Ответить с цитированием
Старый 27.11.2014, 13:10   #10
tarakan1983
Форумчанин
 
Аватар для tarakan1983
 
Регистрация: 09.09.2008
Сообщений: 418
По умолчанию

Вроде всё понял,спасибо всем, за внимание к моей проблеме, буду пробовать кодить
tarakan1983 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблемы со структурой (Си) Jeckor Помощь студентам 5 30.10.2013 09:52
работа со структурой в с++ kewa Помощь студентам 0 07.12.2012 21:42
файл со структурой klykovka Общие вопросы C/C++ 0 29.05.2010 20:44
помогите плиз...со структурой разобраться.... olegnoscov Общие вопросы C/C++ 3 29.12.2009 17:54