Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.01;
Скачать: CL | DM;

Вниз

блокировка записей   Найти похожие ветки 

 
Alexsandr   (2004-07-01 10:14) [0]

Добрй день.
У меня совсем маленький вопрос к Вам, коллеги.
Пишу маленькую сетевую задачку. Будет 2, максимум 3 пользователя. Использую BDE и машину помощней в виде сервера (win 2000) , на которой будут храниться базы, а доступ просто через расшариную папку. в BDE прописываю доступ к машине типа:                 \\172.16.3.75\Rach\dbf\izob
Базы dBase, а также использую Query, т.е. делаю выборку из баз и соответствующие изменения через SQL.
Вопрос в следующем, как узнать, что какае-то определенная запись редактируется, что бы нельзя было удалять ее другим пользователем ?? Или таким способом это не осуществить, нужено что то типа IB ??


 
Курдль ©   (2004-07-01 10:15) [1]

нужено что то типа клиент сервер


 
Соловьев ©   (2004-07-01 10:18) [2]


> нужено что то типа IB ??

http:\\ibase.ru


 
Anatoly Podgoretsky ©   (2004-07-01 10:18) [3]

Это делается автоматически


 
Alexsandr   (2004-07-01 10:39) [4]

В том то и дело, что автоматически не делается.
Если на одной машине запись редактируется, то с другой она спокойно удаляется, а если на первой сохранить изменения, то она просто исчезает после обновления информации
Пытался мучать компанент TDataBase -- никчему не привело
Или может нудно где нить птичку поставить, про которую я не в курсе ???


 
ЮЮ ©   (2004-07-02 03:41) [5]

А зачем, спрашивается, на первой машине редактируют запись, которая должна быть удалена.
А зачем на второй машине удаляют запись, которая нужна?

З.Ы. Бардак не автоматизируешь :-)


 
Alexsandr   (2004-07-02 09:52) [6]

В том то и дело, что не бордак. Первый пользовватель решил отредактировать запись и занимется этим, а второй решил, что она не нужна и удалил :-)
Сенкс всем, я думал что обойдусь без клиент-сервер, но :-(


 
Соловьев ©   (2004-07-02 09:53) [7]

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=570


 
Shama_n ©   (2004-07-04 12:13) [8]

Что если завести еще одно поле в которое заносить информацию о редактировании записи в данный момент?


 
GanibalLector ©   (2004-07-04 12:17) [9]

http://www.ibase.ru/devinfo/plocks.htm


 
KSergey ©   (2004-07-04 15:20) [10]

> [6] Alexsandr   (02.07.04 09:52)
> В том то и дело, что не бордак.

Нет, именно бардак.
Что это за такая запись, которую кто-то редактирует, а второй -вообще решит, что не нужна? Так может ее и вводить тогда не стоит?
Разберитесь для начала в ваших бизнес процессах.

Люди! Вопрос ко всем: вот сразу про какой-то клиент-сервер начинают говорить. Но кто-то мне может объяснить: чем это может помочь в данной ситуации?? Только блокировками? Ну дык и в dbf можно блокировать. как вариант - см. [8] Shama_n ©   (04.07.04 12:13), хотя лучше так не делать никогда (уборщица кабель вырвала или комп завис - и никто эту запись никогда уже не разблокирует; но это уже отдельный разговор).
Так чем-же тут клиент-сервер поможет? Что за мания такая все (даже однопользовательские вещи) на нем творить?? Я что-то не понимаю?


 
Shama_n ©   (2004-07-04 16:17) [11]

> уборщица кабель вырвала или комп завис - и никто эту запись никогда уже не разблокирует; но это уже отдельный разговор
Эту проблему можно решить парой лишних строк кода но то что подход не самый правильный не спорю...


 
KSergey ©   (2004-07-04 20:05) [12]

> Shama_n ©   (04.07.04 16:17) [11]
> > уборщица кабель вырвала или комп завис - и никто эту запись
> никогда уже не разблокирует; но это уже отдельный разговор
> Эту проблему можно решить парой лишних строк кода но то
> что подход не самый правильный не спорю...

Ню-ню ;)
Каких же? Да еще парой?
В общем случае, по-моему, не так просто выяснить (если вообще возможно на 100%) завис комп/задача или пользователь задумался (а то и вовсе чай пьет; а кому-то удалить приспичило, т.к. налоговая на подходе: и как тут быть? так что только наводить порядок)


 
Anatoly Podgoretsky ©   (2004-07-04 20:20) [13]

Какая тогда разница, ну удалит он туже записи несколькими микросекундами позже.


 
Курдль ©   (2004-07-05 09:19) [14]


> Так чем-же тут клиент-сервер поможет? Что за мания такая
> все (даже однопользовательские вещи) на нем творить?? Я
> что-то не понимаю?


Если в условии вопроса написано: "Будет 2, максимум 3 пользователя...", то это, согласитесь, уже не один пользователь.
А писать даже для 2-х пользователей, как для одного - это уже волюнтаризЬм!
И еще. Приведите мне пример проги, которую вы писали под одного пользователя, но ее нельзя представить, как многопользовательскую?


 
Jiny   (2004-07-05 09:37) [15]

Я столкнулся с этим и нашел 2 решения :
1) (для BDE) нужно в редактируемой таблице добавить поле isBusy (logical or boolean) и перед открытием карточки на изменение ставить в True, при этом : либо по таймеру обновлять ентот датасет, что существенно будет жрать сетевой траффик, если данных много, либо обновлять перед тем как пользователь попытается изменить, удалить запись. После окончания работы isBusy ставиться в False;
2) (для IB) попробуй делать это на уровне транзакций : либо проверяй Trans.InTransaction(Boolean), опции транзакции должны быть Read commited, то есть читаются только подтвержденные другими пользователями транзакции.


 
Виталий (Украина)   (2004-07-06 13:42) [16]

В добрые старые времена, (когда компьютерыбыли бальшие, а программы маленькие) я в DBASE создавал поле, в котором писался пользователь, занявший (например накладную). Когда пользователь оставлял документ, понятное дело он писал туда "ничего". При страрте и финише метки снимались автоматически (на всякий случай) При старте "СЕРВЕРА" ,тогда их ещё не было, тоже снимались все метки. Работоло очень устойчиво много лет.


 
bushmen ©   (2004-07-06 13:53) [17]

>При старте "СЕРВЕРА" ,тогда их ещё не было, тоже снимались все метки. Работоло очень устойчиво много лет.

Например, у нас сервера уже несколько месяцев работают безостановочно. Это не выход


 
Виталий (Украина)   (2004-07-06 14:06) [18]

Для bushmen Так этож сервера .... "Те Сервера" работалли на XT. Сейчас мало кто знает что это такое.


 
Виталий (Украина)   (2004-07-06 14:06) [19]

Удалено модератором


 
bodtaib   (2004-07-08 12:23) [20]

Я мож чего не понял?
В BDE Configuration Drivers->Native->Paradox ставим NetDir,
там примерно, где будет программа(не база!)
В System->INIT LocalShare в True
И БДя сама будет следить за блокировками и за юзерами.



Страницы: 1 вся ветка

Текущий архив: 2004.08.01;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.045 c
14-1089745881
\m/
2004-07-13 23:11
2004.08.01
Асма в делфи


1-1090248783
serg128
2004-07-19 18:53
2004.08.01
как в TTreeView получить родительский узел?


3-1089034799
first_may
2004-07-05 17:39
2004.08.01
Yaffil...


8-1084092251
X-Disa
2004-05-09 12:44
2004.08.01
Image c масштабированием


4-1087802260
Magikan
2004-06-21 11:17
2004.08.01
своя клиентская область