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), равное количеству потоков. Получается однопользовательский доступ (одно подключение), да и ладно. Поэтому и ошибка с блокировкой больше не появится. 
|
 |