"Внутренняя ошибка - объект не найден в ресурсе" H

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
PViP
Местный житель
Сообщения: 254
Зарегистрирован: 08 июн 2007, 08:26
Откуда: Красноярск
Контактная информация:

"Внутренняя ошибка - объект не найден в ресурсе" H

Сообщение PViP »

Галка 712
Вот такая ошибка вылетает! С чем связана не могу понять!

Пишу свой экземпляр интерфейса для UserReports. Там завожу пару временных таблиц table struct -ом.

Где то вычитал на формуме что тако е происходит когда пытаешься искать по временной табле с использование переменных объявленных в другой вьюхе(первоисточник назвал ее представлением) - просмотрел все, ни как не могу разобраться, вроде нигде не делаю getfirst по временной табле с использованием переменных из друхих вьюх.

Причем заметил такую штуку, компилишь пустую заглушку для UserReports потом компилю свой отчет с таким же именем, подключаю его в галактике при открытом окошке "Отчеты пользователя" (где у меня отображается заглушка), вызываю отчет и вуаля, он работает, а вот если сразы мой отчет подцепить и вызвоть окно списка отчетов пользователя, то ничего не получиться, сразу ошибка!

Дайте наводку или совет, уже не знаю что делать, задрала эта ошибка, в чем причина?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

8) Перечитал на 2 раза - ни фига не понял. Исходники могет выложить
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

8) ага... тоже 2 раза перечитал и так и не понял кто с каким именем компилится и как подключается
PViP
Местный житель
Сообщения: 254
Зарегистрирован: 08 июн 2007, 08:26
Откуда: Красноярск
Контактная информация:

Сообщение PViP »

это я назвал заглушкой

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

#include UserReport.vih


VipInterface UserReport_SKLFRO Implements IUserReport;

Interface UserReport_SKLFRO;

create view as;
procedure Run;
begin
  message('');
end;
!-------------------------------------------------------------------------------
function GetReportName: String;
begin
  GetReportName := 'Тест';
end;
!-------------------------------------------------------------------------------
function GetGroupName (Level : Word) : String;
begin
  GetGroupName := '';
end;
!-------------------------------------------------------------------------------
function GetPriority : Integer;
begin
  GetPriority := 0;
end;
!-------------------------------------------------------------------------------
function VisibleInModule(Ind : Byte) : String;
begin
  VisibleInModule := 'SKLAD';
end;
end. 
Сначала компилирую заглушку и подключаю ее к галактике, она запускается как надо.

Затем компилирую свой отчет, с точно таким же именем фейса и подключаю его к галактике в то время когда окно "Отчеты пользователя" открыто. В этом случае мой отчет отрабатывается как положено.

А вот если подключить и запустить сразу мой отчет(второй вариант, не заглушка) то вываливается ошибка.
PViP
Местный житель
Сообщения: 254
Зарегистрирован: 08 июн 2007, 08:26
Откуда: Красноярск
Контактная информация:

Сообщение PViP »

Собственно не важно что там как подключается, надо чтобы отчет запускался как положено! :)
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

Имя пользовательского интерфейса не должно совпадать с названием другого интерфейса.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

интересно и как вы объявляли table struct.
я вообще для создания польз.отчетов пользуюсь неким шаблоном который зависит от 10 define . само формирование отчетов делаю в отдельном фейсе/автономной форме. Проект состоит из кучи define и undef и посредине #make шаблон ну и ключ /b в строке компиляции.
Так можно отчет можно проверить через запуск внешнего фейса например. Тробла с автономными(Ard) slk отчетами - runform на них выдваало нечто подобное, хотя через Ard все без проблем.
PViP
Местный житель
Сообщения: 254
Зарегистрирован: 08 июн 2007, 08:26
Откуда: Красноярск
Контактная информация:

Сообщение PViP »

edward_K, объявил так, вариантов других и не знаю :)

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

table struct mySKLFRO
(
  Nrec : comp,
  NameMC : string[255],
  CodeMC : string[255],
  EdMC   : string[255],
  Kol    : double,
  FactPrice : double,
  SumPrice : double,
  sum    : array[1..17] of double
)
with index
(
  Index0=Nrec,
  Index1=NameMC(seg,asc), CodeMC(asc),
  Index2=NameMC(asc),
  Index3=CodeMC(asc)
);
Как выяснил, проблема было в следующем коде
было

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

if (PodrView.GetFirst Pick where ((SaldView1.SaldMoun.KodSPO == pick.crec(noindex))) = tsOK){}
сделал так

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

var tmpNREC : comp;
tmpNREC := SaldView1.SaldMoun.KodSPO;
if(PodrView.GetFirst Pick where ((tmpNREC == pick.crec(noindex))) = tsOK){}
Для себя сделал такой вывод из этой проблемы, поправьте если не прав, НЕЛЬЗЯ ДЕЛАТЬ ПОИСК ВО ВЬЮХЕ ПО ЗНАЧЕНИЯМ ХРАНЯЩИМСЯ(ИМЕННО ХРАНЯЩИМСЯ) В ДРУГИХ ВЬЮХАХ! :?[/b]
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

это аксиома :).
по pick правильно искать по связке wtable+crec
PViP
Местный житель
Сообщения: 254
Зарегистрирован: 08 июн 2007, 08:26
Откуда: Красноярск
Контактная информация:

Сообщение PViP »

edward_K
у меня во вьюхе зашито wList, разве этого не достаточно?

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

create view PodrView
as
select * from pick, katpodr
where ((
          word(11) == pick.wList
      and Pick.crec == KatPodr.NRec
      ));
Последний раз редактировалось PViP 27 мар 2008, 15:18, всего редактировалось 1 раз.
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

тогда tmpNREC == pick.crec во воьюху и перетащите
а гетферст делайте без условия
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

неа. Поскольку в getfirst вы указалаи условие, то ему наплевать на условия во вьюхе
create view PodrView
var tmpNREC : comp;
as
select * from pick, katpodr
where ((
word(11) == pick.wList
and tmpNREC == Pick.crec
and Pick.crec == KatPodr.NRec
));
set PodrView.tmpNREC :=SaldView1.SaldMoun.KodSPO ;
if(PodrView.GetFirst Pick) = tsOK){}
так правильней. А вообще конечно бежать нужно по Pick а потом по Saldview если там есть индекс подходящий.
PViP
Местный житель
Сообщения: 254
Зарегистрирован: 08 июн 2007, 08:26
Откуда: Красноярск
Контактная информация:

Сообщение PViP »

Написал второй отчет в UserReport, теперь когда подключен отчет UserReport_SKLFRO и UserReport_JrnRegKasOrd то галактика при вызове пункта "Отчеты пользователя" в любом модуле зависает не доходя даже до показа списка отчетов!

Грушил что вьюхт одинаково называются, поменял, все равно одна и таже фигня!

По раздельности отчеты запускаются! В чем дело?
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

у меня что то было такое, почему не помню. Этот пример что щас дам - работает. (8.10)

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

#Component "F_UserReport"
#include UserReport.vih
VipInterface UserReport_Staff Implements IUserReport   Licensed (Free);
Interface    UserReport_Staff;
procedure Run;
begin
 RunInterface('z_staff_tnf::rep_stuff');
end;
function GetReportName: String;
begin
  GetReportName := 'Отчет о численности.'
end;
function GetGroupName (Level : Word) : String;
begin
  GetGroupName := '';
  case Level of
    1 : GetGroupName := 'Управление персоналом';
  end;
end;
function GetPriority : Integer;
begin
  GetPriority := 0;
end;
function VisibleInModule(Ind : Byte) : String;
begin
  VisibleInModule := '';
  case Ind of
    1 :  VisibleInModule := 'STAFFMAINMENU';
  end;
end;
end.
Обратите внимание на функцию GetGroupName, по-моему у меня из за нее и висло...
PViP
Местный житель
Сообщения: 254
Зарегистрирован: 08 июн 2007, 08:26
Откуда: Красноярск
Контактная информация:

Сообщение PViP »

Алексей, спасибо! Догадался правда сам, без Вашей помощи!

Запихал вот так в оба отчета

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

function VisibleInModule(Ind : Byte) : String; 
begin 
   VisibleInModule := 'SKLAD'; 
end;
 
а надо

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

function VisibleInModule(Ind : Byte) : String; 
begin 
  VisibleInModule := ''; 
  case Ind of 
    1 :  VisibleInModule := 'SKLAD'; 
  end; 
end; 
Ответить