Страница 5 из 5

Re: 8.1 вылетает по рантайму (оракл)

Добавлено: 09 ноя 2016, 20:28
edward_K
А вот вопрос.То, что вы привели с ora90drv , похоже на кусок который выполняется при каждом переходе между модулями для чистки "зависших" зверей.
То , что это попало в ошибку - это уже следствие наверное.
По порядку
1. В галактику зашли?
2. Запустили отчет. В логах в cminit в первой строке что то появляется? Если нет, то у вас скорей всего косяк в логической табле, если да - это уже проще. Внимательно следите за временем, в лог вывод добавьте.

Re: 8.1 вылетает по рантайму (оракл)

Добавлено: 10 ноя 2016, 00:22
maikl
Ошибка некорректного дескриптора часто происходит из за конфигурационных файлов (если сами конфигурировали интерфейсы).

Re: 8.1 вылетает по рантайму (оракл)

Добавлено: 10 ноя 2016, 09:50
edward_K
Кстати. Ошибка при загрузке фейса со временными таблицами может быть еще вызвана наличием глобальной времянки с другой структурой(в том числе и в других ресурсах) , чем та, что используется в фейсе при компиляции. Попробуйте переименовать времянку.

Re: 8.1 вылетает по рантайму (оракл)

Добавлено: 10 ноя 2016, 11:02
savov
Ошибка где то в логической.
Исправил сейчас так

Код: Выделить всё

.create View TKatalog as select * from tblSapIM, tMain;
....

            stmt:=0;

            stmt := sqlAllocStmt;
            sqlAddStr(StmtString,'         SELECT t2.tNsap, t2.tViddv, t2.tzavod, t2.tsklad, t2.tparty, t2.tksap, t2.tbarkod, t2.td56, t2.ted, ');
            sqlAddStr(StmtString,'         Sum(tkol) FROM ( SELECT tbOracleData.tNsap tNsap, tbOracleData.tviddv tviddv, tbOracleData.tzavod tzavod, ');
            sqlAddStr(StmtString,'         tbOracleData.tsklad tsklad, tbOracleData.tparty tparty, tbOracleData.tksap tksap, tbOracleData.tbarkod tbarkod, ');
            sqlAddStr(StmtString,'         tbOracleData.td56 td56, tbOracleData.ted ted, tbOracleData.tkol tkol FROM  tbOracleData  ');
            sqlAddStr(StmtString,'            ) t2 group by t2.tNsap, t2.tVidDv, t2.tzavod, t2.tsklad, t2.tparty, t2.tksap, t2.tbarkod, t2.td56, t2.ted order by t2.tNsap');
            sqlPrepare ( stmt, StmtString );
            sqlExecute ( stmt );
            sqlFetchInto(stmt, TableByField(FieldNum(Tkatalog.tmain.tNSAP))); // вот здесь теперь вылет по 213 - выход коллекции за пределы!
            sqlFreeStmt(stmt);
Вылет теперь по 213 ошибке, причем до помеченной строки все работает, во временную таблицу оракла все входит, но вот выгрузка вылетает. Предполагаю неверно описание в помеченной строке результирующей таблицы. Пробовал разными методами, но не прокатывает (например, sqlFetchInto(stmt, Tkatalog.tntmain);). Что не так описано ?

Re: 8.1 вылетает по рантайму (оракл)

Добавлено: 10 ноя 2016, 11:10
Den
Дак это код fcom похоже.

Re: 8.1 вылетает по рантайму (оракл)

Добавлено: 10 ноя 2016, 11:19
edward_K
угу. Пробуем sqlFetchInto(stmt,TKatalog.tnTMain), но не факт, что прокатит, да и работу DSQL в Fcom никто не гарантировал, в силу старости последнего. Есть еще несколько возможностей получения данных запроса, но они медленнее на порядок.

Re: 8.1 вылетает по рантайму (оракл)

Добавлено: 10 ноя 2016, 11:27
savov
пробовал такое, не прокатывает

Re: 8.1 вылетает по рантайму (оракл)

Добавлено: 10 ноя 2016, 12:13
savov
edward_k, прокатила версия с переименованием логической таблицы. НЕ времянки, а именно логической таблы. Почему это получилось, не знаю. Такая же логическая таблица объявлялась в другом ресурсе.
Код

Код: Выделить всё

.create View TKatalog as select * from tblSapIM;

.Create view tMC  as Select katmc.barkod, katmc.name from katmc
where((FMC==katmc.name));

.create View TVMain_IM as select * from Tmain;
...
            stmt := sqlAllocStmt;
            sqlAddStr(StmtString,'         SELECT t2.tNsap, t2.tViddv, t2.tzavod, t2.tsklad, t2.tparty, t2.tksap, t2.tbarkod, t2.td56, t2.ted, ');
            sqlAddStr(StmtString,'         Sum(tkol) FROM ( SELECT tbOracleData.tNsap tNsap, tbOracleData.tviddv tviddv, tbOracleData.tzavod tzavod, ');
            sqlAddStr(StmtString,'         tbOracleData.tsklad tsklad, tbOracleData.tparty tparty, tbOracleData.tksap tksap, tbOracleData.tbarkod tbarkod, ');
            sqlAddStr(StmtString,'         tbOracleData.td56 td56, tbOracleData.ted ted, tbOracleData.tkol tkol FROM  tbOracleData  ');
            sqlAddStr(StmtString,'            ) t2 group by t2.tNsap, t2.tVidDv, t2.tzavod, t2.tsklad, t2.tparty, t2.tksap, t2.tbarkod, t2.td56, t2.ted order by t2.tNsap');
            sqlPrepare ( stmt, StmtString );
            sqlExecute ( stmt );
            sqlFetchInto(stmt, tntmain);
т.е. пришлось разбить на два View и в таком виде работает.

Re: 8.1 вылетает по рантайму (оракл)

Добавлено: 10 ноя 2016, 12:28
edward_K
У вас в логе компиляции наверняка сообщение, что tmain куда то добавлена. Видимо sqlfetch не могет понять имя вьюхи.

Re: 8.1 вылетает по рантайму (оракл)

Добавлено: 18 ноя 2016, 15:59
savov
Хм... поторопился я с оптимистичными выводами... Ошибка через некоторое время повторилась! Все с теми же признаками, перекомпиляция и новое переименование таблиц не помогает.Чертовщина какая-то :mad: