Jojobets |
Отправлено: 23.06.2005, 19:17 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 16
|
База: MS Access
Несколько потоков программы выполняют одну и ту же операцию-добавляют новую запись в одну таблицу, присваивают полям значения, потом обновляют таблицу (Post). По сути, имеем многопользовательский доступ к таблице. С переменным успехом появляется ошибка "Обновление невозможно. Блокировка установлена пользователем admin на машине ... ". Каждый поток использует свой объект TADOConnection и TADOTable. Вопрос в том, как грамотнее реализовать описанную задачу. Редактирование записей не требуется, только добавление. |
|
Gedeon |
Отправлено: 23.06.2005, 20:21 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
MS Access и несколько подключений вообще не очень хорошая идея.
|
|
olegenty |
Отправлено: 24.06.2005, 07:15 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
за пару дней такой работы *.mdb файл так распухнет, что аж жуть...
|
|
Jojobets |
Отправлено: 24.06.2005, 08:25 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 16
|
В случае с MS SQL Server наблюдается та же картина, хоть и пореже. Видно, что-то неправильно делаю. |
|
AVC |
Отправлено: 24.06.2005, 08:27 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Если очень хочется, то можно сделать "сервер приложений", который будет выстраивать запросы на добавление в очередь. В вашей постановке это просто еще один поток. |
|
Jojobets |
Отправлено: 28.06.2005, 21:51 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 16
|
Предлагаю вниманию следующее решение (см. файл). Используется одно подключение (TADOConnection) и число таблиц (TADOTable), равное количеству потоков. Получается однопользовательский доступ (одно подключение), да и ладно. Поэтому и ошибка с блокировкой больше не появится.
|
|