![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Уже начинаю тохонько звереть от непонимания причины. Когда программа запущена вручную, то работает нормально, но когда запускается через реестр перестаёт писать в базу, сваливается на выполнении SQL запроса. Чтение старых данных происходит нормально. Такое ощущение, что база становится ReadOnly.
Код:
if Assigned(sldb) then
begin
sldb.BeginTransaction;
try
St := AnsiString(Format('INSERT INTO maplog(date, ...'))); // обрезано для краткости
// Не выполняется при запуске из реестра
sldb.ExecSQL(St);
sldb.Commit;
except
sldb.Rollback;
end;
end; |
|
#2
|
||||
|
||||
|
От имени какого пользователя запускается из реестра? Права на запись в файл у него есть?
|
|
#3
|
||||
|
||||
|
Пользователь один, права есть.
|
|
#4
|
||||
|
||||
|
Пользователь точно тот же самый, а не NetworkService какой-нибудь? Каков конкретно текст ошибки?
|
|
#5
|
||||
|
||||
|
Пользователь один. SQLite ошибок не даёт - гад, тупо не работает. Логирование каждой строки показало, что не отрабатывает ExecSql, да и только по автозапуску. При ручном запуске всё в норме.
|
|
#6
|
||||
|
||||
|
Цитата:
Обработчик Application.OnException пустой? |
|
#7
|
||||
|
||||
|
Вот в блоке except и переходит на Rollback.
Никаких компонентов. Имеется в исходниках процедура RaiseError, но она в секции private. Также имеется функция SQLiteErrorStr и хотя она доступна, толку от неё никакого - требует числового кода ошибки, которого нет. |
|
#8
|
||||
|
||||
|
Цитата:
Код:
try .... except Rollback; .... raise; end; |
|
#9
|
||||
|
||||
|
Цитата:
Шаманство, не желает нормально работать при запуске из реестра. Бред конечно, но по какой-то причине при запуске из реестра, не срабатывает глобальная переменная. Обидно на такую мелочь потерять время. Последний раз редактировалось angvelem, 24.06.2014 в 23:07. |