VB и MSSQL 2000

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
K Victor A
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 13.05.2009 (Ср) 4:56

VB и MSSQL 2000

Сообщение K Victor A » 22.05.2009 (Пт) 5:06

доброго дня подскажите как сделать чтобы Adodc не мог обращаться к записи если она редактируется другим пользователем!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: VB и MSSQL 2000

Сообщение alibek » 22.05.2009 (Пт) 7:58

Установить пессимистическую блокировку.
Lasciate ogni speranza, voi ch'entrate.

K Victor A
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 13.05.2009 (Ср) 4:56

Re: VB и MSSQL 2000

Сообщение K Victor A » 23.05.2009 (Сб) 6:05

Подскажите пожалуйста как! пишу диплом, сетевую АИС, впервые сталкиваюсь. с такой проблемой, раньше писал однопользовательские локалки
(в свойствах Adodc'a или где?)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: VB и MSSQL 2000

Сообщение alibek » 23.05.2009 (Сб) 9:08

K Victor A, объясни мне, как такое возможно, что ты пишешь диплом, сетевую автоматизированную информационную систему, и при этом никогда не слышал про блокировки?
Если ты пишешь диплом, значит ты на последнем курсе. Если тема диплома сетевые ИС, значит специальность связана с информационными технологиями. Про базы данных и блокировки ты должен был знать два или три года назад.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Re: VB и MSSQL 2000

Сообщение Andrey Fedorov » 23.05.2009 (Сб) 11:13

K Victor A писал(а):доброго дня подскажите как сделать чтобы Adodc не мог обращаться к записи если она редактируется другим пользователем!


Между прочим - крайне не рекомендую подобное...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

K Victor A
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 13.05.2009 (Ср) 4:56

Re: VB и MSSQL 2000

Сообщение K Victor A » 23.05.2009 (Сб) 11:41

Но почему? ведь возникают проблемы при обращении к данным (к примеру уже не существующим)! Подскажитие все же как сделать?!?!

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: VB и MSSQL 2000

Сообщение arvitaly » 23.05.2009 (Сб) 15:09

Не зная стандартных методов, я бы придумал, например, флаг

VBTerminator
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 415
Зарегистрирован: 19.11.2008 (Ср) 20:10

Re: VB и MSSQL 2000

Сообщение VBTerminator » 23.05.2009 (Сб) 15:55

alibek писал(а):Установить пессимистическую блокировку.

Если я правильно понял, то блокировка должна быть у "другого пользователя".

K Victor A писал(а):Подскажите пожалуйста как!

А блокировка ставится так:
Код: Выделить всё
cnnMain.Connect "connectionstring", "user", "pass", adLockPessimistic

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: VB и MSSQL 2000

Сообщение arvitaly » 23.05.2009 (Сб) 15:58

не мог обращаться к записи

конкретной записи

VBTerminator
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 415
Зарегистрирован: 19.11.2008 (Ср) 20:10

Re: VB и MSSQL 2000

Сообщение VBTerminator » 23.05.2009 (Сб) 16:12

arvitaly писал(а):
не мог обращаться к записи

конкретной записи


Ну и!..
Самоучитель Visual Basic 6.0 писал(а):Пессимистическая блокировка записей. Блокируется редактируемая запись. Освобождение от блокировки происходит при переходе на следующую запись.

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: VB и MSSQL 2000

Сообщение arvitaly » 23.05.2009 (Сб) 16:17

cnnMain.Connect "connectionstring", "user", "pass", adLockPessimistic


А какая тут запись редактируется? Первая?

VBTerminator
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 415
Зарегистрирован: 19.11.2008 (Ср) 20:10

Re: VB и MSSQL 2000

Сообщение VBTerminator » 23.05.2009 (Сб) 16:20

arvitaly писал(а):А какая тут запись редактируется? Первая?

Уф... Вообще-то "редактируемая" запись та, к которой в данный момент применяется метод Update одного из клиентских рекордсетов.

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: VB и MSSQL 2000

Сообщение arvitaly » 23.05.2009 (Сб) 16:24

Уф... Вообще-то "редактируемая" запись та, к которой в данный момент применяется метод Update рекордсета.

Хм, смотри ситуацию. Человек ввел данные в форму для конкретной записи. Нажимает Update. Другой человек тоже ввел данные в форму и на секунду после первого нажал Update.
Что сохранится? А если формы заполняются по полчаса?
Ты слышал о таком понятии как отключенный рекордсет?

VBTerminator
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 415
Зарегистрирован: 19.11.2008 (Ср) 20:10

Re: VB и MSSQL 2000

Сообщение VBTerminator » 23.05.2009 (Сб) 16:28

arvitaly писал(а):.Что сохранится?

Всё, ведь обращение идёт не обновременно, но если они писали в одну и ту же запись, то данные последнего сохранения, конечно, перекроют более ранние.

arvitaly писал(а):А если формы заполняются по полчаса?

Если форма, то сохранение произойдёт по нажатии кнопки "сохранить"/"отправить" или какая там...

arvitaly писал(а):Ты слышал о таком понятии как отключенный рекордсет?

Нет.


Или я чего-то не догоняю по этой теме?

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: VB и MSSQL 2000

Сообщение arvitaly » 23.05.2009 (Сб) 16:31

Всё, ведь обращение идёт не обновременно, но если они писали в одну и ту же запись, то данные последнего сохранения, конечно, перекроют более ранние.


И ты считаешь - это выход из ситуации?

Если форма, то сохранение произойдёт по нажатии кнопки "сохранить"/"отправить" или какая там...


Естественно форма.

Нет.
Или я чего-то не догоняю по этой теме?

Узнай. Возможно не догоняешь.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: VB и MSSQL 2000

Сообщение alibek » 23.05.2009 (Сб) 18:29

arvitaly писал(а):Хм, смотри ситуацию. Человек ввел данные в форму для конкретной записи. Нажимает Update. Другой человек тоже ввел данные в форму и на секунду после первого нажал Update.

Ты слово "пессимистическая" заметил?
Это при оптимистической блокировка происходит при выполнении Update. А при пессимистической блокировка будет, как только ты тронешь запись, например сделаешь rs!fld1=rs!fld1.
Lasciate ogni speranza, voi ch'entrate.

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: VB и MSSQL 2000

Сообщение arvitaly » 23.05.2009 (Сб) 18:35

Ты слово "пессимистическая" заметил?
Это при оптимистической блокировка происходит при выполнении Update. А при пессимистической блокировка будет, как только ты тронешь запись, например сделаешь rs!fld1=rs!fld1.

А при чтении из рекордсета будет ставиться блокировка? Наверное, нет. И опять таки это означает, что до начала обновления записи rs!fld1=rs!fld1 или Update - 2 пользователя вполне могут заполнить все форму (при отключенном рекордсете)

K Victor A
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 13.05.2009 (Ср) 4:56

Re: VB и MSSQL 2000

Сообщение K Victor A » 24.05.2009 (Вс) 12:19

alibek, случилось так, что такие тонкости были пропущены, причем не мной мимо ушей, а преподами! Да и вообще наверное такие темы студенты должны догонять сами, ведь в универах дают основу...
что я имею? - ADO Data Control.
что он имеет? -ConnectingString (я пишу: Provider=SQLOLEDB;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=MyDB;Data Source=(LOCAL), на локальном)
- RecordSource (заполняю селектом)
куда ж вставить adLockPessimistic???
у Adodc есть свойство: LockType, где можно выбрать пессемистик,
но когда открываю два приложения, ставлю на одну и туже запись, и что то выводит только ошибки или именно их и надо обработать? зачем тогда пессимистик ставить? что то я запутался совсем!
Выручайте!!!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: VB и MSSQL 2000

Сообщение alibek » 24.05.2009 (Вс) 12:48

K Victor A писал(а):но когда открываю два приложения, ставлю на одну и туже запись, и что то выводит только ошибки или именно их и надо обработать? зачем тогда пессимистик ставить? что то я запутался совсем!

Разумеется будет ошибка, ведь запись заблокирована.
Эту ошибку и надо обрабатывать.
Lasciate ogni speranza, voi ch'entrate.

K Victor A
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 13.05.2009 (Ср) 4:56

Re: VB и MSSQL 2000

Сообщение K Victor A » 24.05.2009 (Вс) 13:31

да, ошибки при удалении записи, когда пытаюсь во втором приложении удалить уже не существующую запись!!
проблема еще в чем: в обоих приложениях оба аддока стоят на одной записи, делаю апдейт из одного приложения, второе ничего не сообщает!, хотя поставил тип блокировки в свойстве аддока пессимистик?! как быть!?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Re: VB и MSSQL 2000

Сообщение alibek » 24.05.2009 (Вс) 13:33

K Victor A писал(а):проблема еще в чем: в обоих приложениях оба аддока стоят на одной записи, делаю апдейт из одного приложения, второе ничего не сообщает!, хотя поставил тип блокировки в свойстве аддока пессимистик?! как быть!?

А что оно должно сообщать?
По своей инициативе ничего сообщаться не будет. Начнешь во втором приложении что-нибудь менять, тогда и появится ошибка блокировки.
Lasciate ogni speranza, voi ch'entrate.

K Victor A
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 13.05.2009 (Ср) 4:56

Re: VB и MSSQL 2000

Сообщение K Victor A » 24.05.2009 (Вс) 13:39

а зачем тогда блокировку ставить, и без нее все ошибки также выдает

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: VB и MSSQL 2000

Сообщение arvitaly » 24.05.2009 (Вс) 22:17

а зачем тогда блокировку ставить, и без нее все ошибки также выдает


Очень интересно, что за ошибки без нее выдает?

K Victor A
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 13.05.2009 (Ср) 4:56

Re: VB и MSSQL 2000

Сообщение K Victor A » 25.05.2009 (Пн) 3:32

Вот гляди:
два приложения, ода и таже запись, апдейтю в одном, во втором остаются старые значения.
Он не сообщает в первом приложении, что запись заблокирована, так как во втором приложении выбрана запись другим пользователем, меняет и все тут, а второе потом, в случае апдейта выводит ошибку, что запись не найдена

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: VB и MSSQL 2000

Сообщение arvitaly » 25.05.2009 (Пн) 3:47

Еще раз повторю, я бы использовал флаг, чтобы 2-е приложение не могло эту запись даже открыть

K Victor A
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 13.05.2009 (Ср) 4:56

Re: VB и MSSQL 2000

Сообщение K Victor A » 25.05.2009 (Пн) 6:01

флаг это конечно интересно! но а в случае сбоя системы, при редактировании (ведь флаг мы должны апдейтить в записи) запись останется навсегда потеряна для пользователя, или есть другой вариант его использования?!

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: VB и MSSQL 2000

Сообщение arvitaly » 25.05.2009 (Пн) 9:01

Для чего флаг в самой таблице, я вижу систему так
Есть таблица типа Sessions

Методы работы

1. При запуске приложения из нее чистятся все принадлежащие этому приложению записи
2. При открытии "рабочей записи" в таблице создается запись, указывающая на блокировку
3. При окончании работы с "рабочей записью" - запись из Sessions удаляется.
4. При каждом обращении к таблице - из нее удаляются записи, которые старше n-времени (15 минут например). Таким образом даже при аварийном завершении работы - все будет нормально :D

Также возможно совместить это с ведением статистики редактирования базы

K Victor A
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 13.05.2009 (Ср) 4:56

Re: VB и MSSQL 2000

Сообщение K Victor A » 25.05.2009 (Пн) 13:46

здорово, еще бы подсказал как это реализовать !!!, боюсь мне это не под силу в данный момент... (если не трудно :bom: )

arvitaly
Постоялец
Постоялец
 
Сообщения: 485
Зарегистрирован: 12.04.2009 (Вс) 0:30
Откуда: Казань

Re: VB и MSSQL 2000

Сообщение arvitaly » 25.05.2009 (Пн) 13:53

Вроде уже по пунктам все расписал, где проблема то?

K Victor A
Начинающий
Начинающий
 
Сообщения: 23
Зарегистрирован: 13.05.2009 (Ср) 4:56

Re: VB и MSSQL 2000

Сообщение K Victor A » 25.05.2009 (Пн) 14:05

arvitaly писал(а): При открытии "рабочей записи" в таблице создается запись,

где она создается, и как к ней обратиться ?

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 81

    TopList