Опять Runtime Error 213

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

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

Ответить
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Опять Runtime Error 213

Сообщение BlazeBio »

При попытки загрузки интерфеса выдаётся сообщение Runtime Error 213 (rtl: выход за границы коллекции) in streams_.dll at 0002EF59. Раньше работал интерфейс, потом чё-то подправил в нескольких местах ( в seleсtах менял и где-то ещё) и начала выдаваться ошибка 213. Чтобы она могла значить в моём фейсе? :???:

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

//vipinterface ietalon parameters (kgroup:comp;ketalon:comp;ckatstan:comp);
interface ietalon;
Show At (,,93,25);
var ckatstan,ketalon,kgroup:comp;
	res:word;
	mcname:string;
	etalmc:string;
	groupmcname:string;
create view as select
ppkatstan.name,katmc.name,* from ppkatstan,ppkatstanmc,katmc
where((//ckatstan==ppkatstan.atl_nrec and
	 ppkatstan.atl_nrec==ppkatstanmc.cppkatstan
and katmc.nrec==ppkatstanmc.cmc
));


create view etalon
as select /*etalon(ppkatstan.atl_nrec),*,*/k1.name,ppkatstan.name,*//,groupmc.name,*
from katmc k1,PPKATSTAN,groupmc
where ((
ppkatstan.cmc==k1.nrec
and (7=k1.isarch)
and ppkatstan.cgroupmc==groupmc.nrec));

parameters kgroup,ketalon,ckatstan;
panel petalon
 screen setalon (,,Sci1478EscIns)
    show at (,,,8);
  fields
  	mcname:noprotect;
  	etalmc:protect,pickbutton;
  	groupmcname:protect,pickbutton;
  buttons
	cmRealMC;
<<
    МЦ          .@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    Эталон МЦ   .@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    Группа МЦ   .@@@@@@@@@@@@@@@@@@@@@@@@@@@@

 			<.~в~ыбор МЦ.>


>>
end;
  browse  betalon2 (,,Sci1478EscIns);
      show at (,9,,);
	table katmc;
	fields
		katmc.name:protect;
  end;
	handleevent
		cmCheckField:
		{
			 case CurField of
				 #mcname:
				 {
					 if etalon.getfirst ppkatstan where((ckatstan==ppkatstan.atl_nrec))=tsok
					 {
						 etalon.ppkatstan.name:=mcname;
						 update current ppkatstan;
					 }
 						 rescanpanel(#ppkatstan);
				 }
			 end;
		}
	end;
end;
	handleevent
	  	cmInit:
	  		{if etalon.getfirst ppkatstan where ((ckatstan==ppkatstan.atl_nrec))=tsok
				{
					mcname:=etalon.ppkatstan.name;
					ckatstan:=etalon.ppkatstan.atl_nrec;
				}
			if etalon.getfirst k1 where ((ketalon==k1.nrec))=tsok
				{
					etalmc:=etalon.k1.name;
					ketalon:=etalon.k1.nrec;
				}
			if etalon.getfirst groupmc where ((kgroup==groupmc.nrec))=tsok
				{
					groupmcname:=etalon.groupmc.name;
					ckatstan:=etalon.groupmc.nrec;
				}
				rescanpanel(setalon);
				rescanpanel(#katmc);
			}
		cmPick:
		{
				  UpdateTable();
 				  case CurField of
					#etalmc:
					{
						res:=  RunInterface(PickKatMC,ketalon);
						ppkatstan.cmc:=ketalon;
						if etalon.getfirst k1 where ((ketalon==k1.nrec))=tsOk
							{
								etalmc:=etalon.k1.name;
								ketalon:=etalon.k1.nrec;
							}
						rescanpanel(#etalon.k1);
						rescanpanel(#ppkatstan);
	     			}
					#groupmcname:
					{
						res:=  RunInterface(PickGroupMC,kgroup);
						ppkatstan.cgroupmc:=kgroup;
						if etalon.getfirst groupmc where ((kgroup==groupmc.nrec))=tsok
							{
								groupmcname:=etalon.groupmc.name;
								ckatstan:=etalon.groupmc.nrec;
							}
							rescanpanel(#etalon.groupmc);
							rescanpanel(#ppkatstan);
					}
					end;
		}
		cmRealMC:
		{
		}
		cmClose:
		{
		}
	end;
end.
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Опять Runtime Error 213

Сообщение Den »

"Отрубайте" потихоньку свои новшества и ловите когда не словится рантайм.
Ну или в рабочую старую версию интер-са, добавляйте поэтапно свои изменения и также следите за рантаймом..
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Re: Опять Runtime Error 213

Сообщение galover »

Ловля рантайма в Галактике это песня. У меня последний раз из-за view случился. Переставил вьюхи местами и заработало! Или падало на RecordsInTable(viewName.tnTableName) вынес table в безымянную view и RecordsInTable(tnTableName) заработал. Так что happy debuging гарантирован
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Опять Runtime Error 213

Сообщение RAJAH »

О! И тему новую создавать не надо.
У нас такая же ошибка (вплоть до 16-ричного кода ). Галактика вылетает при входе в акты на услуги в снабжении. Пробовал под разными пользователями на разных компах, с нашими ресурсами и без них - всё равно. Что делать?
Почему-то только у старых пользователей валится: вновь введённые пользователи такой проблемы не имеют.
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Re: Опять Runtime Error 213

Сообщение BlazeBio »

Оказалось, что недочёт в select.

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

create view etalon
as select k1.name,ppkatstan.name,*
from katmc k1,PPKATSTAN,groupmc
where ((
ppkatstan.cmc==k1.nrec
and (7=k1.isarch)
and groupmc.nrec==ppkatstan.cgroupmc));
После этого стал запускаться интерфейс.
У меня возник ещё вопрос: почему в браузе betalon2 ничего не отображается? Я запускаю данный фейс из другого(из него передаётся параметр ckatstan). Причём, если задать вместо ckatstan во вьюхе число('024234356...'), которое соответсвует одному из nrecов ppkatstan, то в интерфейсе ietalon данные в браузе появляются, к тому же правильные(согласно указанному nrec).
Кстати брауз тоже поменялся

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

  browse  betalon2 (,,Sci1478EscIns);
      show at (,9,,);
	table ppkatstan,cartesian;
	fields
		katmc.name:protect;
  end;
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

Re: Опять Runtime Error 213

Сообщение BlazeBio »

Добавил ёще одну комповскую переменную wnrec в ietalon, присвоил ей значение ckatstan в cmInit, поставил вместо ckatstan во вью wnrec, и всё заработало. :grin:
Screw
Слесарь-системщик
Сообщения: 304
Зарегистрирован: 29 мар 2005, 17:49
Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
Контактная информация:

Re: Опять Runtime Error 213

Сообщение Screw »

Очень опасный кусок кода: rescanpanel(setalon); Здесь Атлантис попытается пеерсканировать содержимое всех визуальных элементов, связанных с узлом номер setalon. Будет большой удачей, если значение setalon совпадёт с внутренним номером одного из добавленных в логическую таблицу интерфейса узлов. В данном же случае, по всей видимости, имеет место обратное - номер оказался за границами коллекции узлов ЛТ. В итоге - 213-й рантайм.
Виталий
Ответить