|
Тема
|
Въпросче...
|
|
Автор |
БOИЛ () |
Публикувано | 12.02.03 10:41 |
|
Имам следния въпрос :
Потребителя желае да направи справка след което евентуално да редактира данните от справката . За целта в изпълнимия файл се вика метод от .DLL, който създава необходимите ADO компоненти , и след като ги инициализира вика съхранена процедура на сървъра .В метода от .DLL се отваря и затваря конекцията към SQL сървъра, като към .EXE-то се изпраща резултата
или под формата на множество отделни променливи или под формата на DateTable. Т.е. в .Exe-to не се ползват никакви ADO компоненти .
[.EXE] -> [.DLL] -> [MS SQL SERVER 2000]
Потребителя може веднага да редактира данните , може цял ден да блей пред тях и накрая на деня да ги редактира . А може и въобще да не ги редактира .
Проблема в случая е че потребителите са повече от 50 , като всеки един от тях може в даден момент да направи обръщение към едни и същи данни.
Според вас кой е най-подходящия начин да се направи така ,че когато един потребител извлича данни , и когато реши да ги редактира да е сигурен ,че друг не ги е променил пред него.
Естествено ,че първото нещо което идва на ум на човек при такъв случай е заключването, но след като огледах нещата нещо не ми харесва идеята, още повече ,че връзката на потребителя с SQL Server-a се съдава и унищожава в DLL -a .
| |
|
Кое не ти харесва в заключването не разбрах? Добавяш за всеки запис флаг locked, дигаш го, когато трябва да се редактира и го сваляш, когато вече е свободен.
Я вышел им наперерез!
| |
Тема
|
Re: Въпросче...
[re: БOИЛ]
|
|
Автор | Mr_lbkis (Нерегистриран) |
Публикувано | 12.02.03 11:21 |
|
Uno momento! Искаш да кажеш, че ще е възможно един потребител да е отворил данните на неговия комп, да се е заблеял по колежките си, и чак привечер да се сети да ги редактира? А през това време някой вече може да ги е редактирал от друг компютър, тъй ли?
Хич не знам дали съм разбрал правилно темата, ама така каго го четях - се сещам за добрите чичковци от Майкрософт, дето написаха мрежов Ofiice. Тряа да провериш коя версия поддържа работа в мрежа (мисля че от 2к нагоре), и просто да използваш благинките. Абе, верно, че като се попретовари и става бъгав, ама в общи линии върши чудесна работа. Е, сега аз не мога да знам дали в твоя проект ще свърши работа, защото не съм запознат с проекта, но все пак ми беше приятно, че си писахме.
| |
Тема
|
Re: Въпросче...
[re: БOИЛ]
|
|
Автор |
jamie (Bad to the bone) |
Публикувано | 12.02.03 13:32 |
|
Къстъм локинг. Просто си го правиш ти - не разчитай на АДО за това.
Правиш си таблица в ДБ-то с локове.
Така ще може да информираш потребителя какво става и какви действия да се предприемат.
UB40 !
| |
|
Ами можеш да пазиш timestamps.
Примерно за някакви данни пазиш кога последно са update-нати.
Когато някой потребител ги прочете в неговата сесия пазиш този запис.
Като тръгне да commit-ва - проверяваш дали не са променяни след него (по timestamp-a). Ако са - rollback. Ако не са - commit-ваш и променяш този запис (timestamp-a).
Нещо такова.
| |
Тема
|
Ami Batch Update...
[re: БOИЛ]
|
|
Автор | ADO (Нерегистриран) |
Публикувано | 12.02.03 18:52 |
|
na rekordset-a mu e maijkata- той си влачи и оригиналните данни...
| |
|
|
|
|