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

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

Что может вызывать блокирование записи? [D7, MSSQL, Paradox]


Aleksandr ©   (2002-11-26 16:37:00) 

Суть проблемы такова - поток создает TTable, присваивает ее DataBaseName путь к файлу таблицы, открывает, вставляет туда запись, сохраняет и уничтожает. Когда при следующем прохождении этого потока создаешь TTable, открываешь ее, находишь вставленную запись Locate, а потом пытаешься сделать ей Edit - БДЕ смертельно обижается и пишет, что record locked by another user. Она же была закрыта и - абсолютно точно - уничтожена, перед тем как пересоздаться заново... Может, тут что-то с сессией надо сделать?


Romkin   (2002-11-26 17:48:00) [1]

Поток должен работать со своей TSession & TDatabase, и закрывать их по окончании работы (создавать эти компоненты надо в Execute, разумеется), а у TSession установить AutoSessionName - для этого и надо


Aleksandr   (2002-11-26 17:29:00) [2]

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


Shaman   (2002-11-26 17:20:00) [3]

BDE кэширует таблицы и записывает их окончательно на диск только при закрытии сессии или при специальном вызове функции BDE API Как функция называется точно не помню, нашел ее в хелпе по BDE API


Johnmen   (2002-11-26 17:07:00) [4]

Если сделать вставку в рамках единой транзакции - БДЕ, скорее всего, не будет обижаться :)))
Да и сессия д.б. одна...


Наверх

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