Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

HELP Проблема при многопользовательском доступе [D5, dBase, FoxPro]


Страницы:   1 2

Alexey K ©   (2004-01-08 15:17:00) 

РАзрабатывалось приложение как локальное DBF (Halcyon). Нужно сделать теперь из него многопользовательское (срок позавчера).
Запустив ее вдвоем с коллегой из сети при вводе данных получили задвоение номеров, и вообче в базе полный мусор при одновременной записи туда. Помогите кто что посоветует как грамотнее блокировать записи или может еще чего нибудь???
С Уважением Алексей К.


chudaks   (2004-01-09 11:52:00) [21]

если у тебя делфя 5-я то BDE установлена.
Используй запросы.
Перед тем как ставить новый номер прога должна будет проверить самый последний номер, затем зарезервировать следующий номер.
При редактировании записи проверить не пытается ли кто данную запись редактировать, следовательно нужно поле указывающее редактируется ли запись или нет.


Alexey K   (2004-01-09 11:10:00) [22]

Додумал вот до такого варианта.
Сделал таблицу вида
"имя_таблицы" "ID"
"имя_таблицы" "ID"
Уникальные номера берутся из этой таблицы, запись блокируется на и = +1
Запись с полученым ID записывается в нужную таблицу.
Вроде должно работать ? Кто,Что думает, может как то иначе сделать можно лучше, и как уйти от ошибки при блокировке, через try exept?


Sergey13   (2004-01-09 09:52:00) [23]

2unreger (09.01.04 07:37) [5]
>А никто не хочет реализовать мою давнюю идею - пусть клиенты работают с локальными копиями базы, а синхронизацию дописать самому?
Эта идея напоминает анекдот.
-Вот написал архиватор. Жмет все в 5 байт.
-Здорово!!! Дай поюзать.
-Подожди, вот разархиватор напишу...


unreger   (2004-01-09 07:37:00) [24]

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

Со своей стороны готов поучаствовать в обсуждении.


Alexey K   (2004-01-08 15:44:00) [25]

Спасибо конечно, но SQL не пойдет кода очень много не успею я, да и базы то не большие если бы сразу знать... Можно подробнее про генерацию уникальных и блокировку записей. Еще дело в том, что текущий уникальный номер (вернее номер, баз много, млин) сохраняется в ИНИ файле.


Anatoly Podgoretsky   (2004-01-08 15:37:00) [26]

Desdechado © (08.01.04 15:28) [1]
Для первого варианта еще придется сменить Halcyon на БДЕ, если это не Фокспро таблицы.


Vlad   (2004-01-08 15:34:00) [27]

Насколько я знаю, в DBF - единственный способ многопользовательской работы - это блокировка записей.
С Halcyon правда не работал, работал из под фокс-про, в качестве счетчика (генератора) ID была отдельная таблица, где при получении нового ID каждый раз блокировалась запись, после чего счетчик инкрементировался и, затем, блокировка снималась.


Desdechado   (2004-01-08 15:28:00) [28]

при сроке "позавчера" ничего путного не выйдет :(
а по-хорошему:
1. табличный доступ менять на запросный
2. переходить на SQL-сервер


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо