Страница 1 из 1
Вылетает галактика
Добавлено: 24 июн 2014, 17:57
novichok
Подскажите, пожалуста, почему галактика вылетает при запуске моего ARD-отчёта?
Он компилируется нормально, несколько секунд работает, а потом ...
Сообщение "Прекращена работа программы ядро 2-х уровневого атлантис-приложения"
Прям дурдом какой-то.
Re: Вылетает галактика
Добавлено: 24 июн 2014, 19:04
edward_K
logstrtofile вам в помощь.
сначала редко, потом на выявленном куске чаще.
Вылетает молча? причин много есть - без кода и локализации куска в нем тяжко предположить.
Может вылетать на криво построенном запросе или попытке вставки с использованием полей массивов или данных с другой view.
Re: Вылетает галактика
Добавлено: 24 июн 2014, 19:20
novichok
edward_K писал(а):logstrtofile вам в помощь.
сначала редко, потом на выявленном куске чаще.
Вылетает молча? причин много есть - без кода и локализации куска в нем тяжко предположить.
Может вылетать на криво построенном запросе или попытке вставки с использованием полей массивов или данных с другой view.
Вылетает всегда в разных местах, как будто от фонаря.
Код: Выделить всё
stmt:=sqlAllocStmt;
sqlAddStr(query,'insert into schfact (direct,tipuser,subtip,dfact,dpost,num,corg,csoprhoz,sum[2],sum[3],summa,summareg) values ');
sqlAddStr(query,'(1,7218,16,#date(31,12,2013),#date(31,12,2013),'#39+String(i-1)+''#39);
sqlAddStr(query,',#comp('+zap1[1]+'),#comp('+zap2[1]+'),');
xlGetCellValue(i,4,yach);
if trim(yach)=''
then { xlGetCellValue(i,5,yach);
yach:='-'+yach };
sqlAddStr(query,Replace(yach,',','.')+','+zap2[2]+','+zap2[2]+','+zap2[2]+')');
k_osh:=sqlPrepare(stmt,query);
Такой кусок может не нравиться? zap1 и zap2 берутся из предыдущих selectов
Re: Вылетает галактика
Добавлено: 24 июн 2014, 19:32
edward_K
Скорей всего вы не следите за инициализацией или освобождением хендлов.
как то так
Код: Выделить всё
//******************************************************************************
Procedure ClearQuery(var liHandle : longint);
{
if (liHandle <> 0)
{
sqlFreeStr(liHandle);
liHandle := 0;
}
}
и так
Код: Выделить всё
sqlFreeStmt(stmt);
ClearQuery(vliSQLCommand);
Еще в эти функции лучше передавать готовую строку.
И все так logstrtofile
вам покажет в какой именно момент вы вылетаете. Вроде именно это приводит к случайным вылетам в момент инициализации.
Re: Вылетает галактика
Добавлено: 24 июн 2014, 20:23
novichok
Спасибо !!!
sqlFreeStmt у меня было, а := 0 не было.
Теперь перестала вылетать!