Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.046 c
1-1090409031
cvg
2004-07-21 15:23
2004.08.01
по функции postmessage


1-1090308197
Дельфятник
2004-07-20 11:23
2004.08.01
Вопрос по TListBox, TCheckListBox и TCustomListBox в Delphi 7.


1-1090224195
Qwer
2004-07-19 12:03
2004.08.01
Как запустить процедуру ?


1-1090311246
SerKom
2004-07-20 12:14
2004.08.01
чтобы активный контрол был по центру ScrollBox а (по вертикали),


6-1086005410
Ruwer, inc.
2004-05-31 16:10
2004.08.01
Как в indy HTTPServer вовремя обработать запрос и послать ответ.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский