Почему выдается сообщение "таблица ... отсутствует в словар"
Добавлено: 18 янв 2012, 15:26
Добрый день.
У меня вот такая проблем - выскакивает сообщение о том что таблицы нету в словаре при компиляции следующего кода:
Задача вывести в интерфейс данные из временной таблицы которая заполняется прямым SQL.
В виду малого опыта допускаю что объявил неверно временную таблицу, прошу помочь разобраться.
У меня вот такая проблем - выскакивает сообщение о том что таблицы нету в словаре при компиляции следующего кода:
Код: Выделить всё
//Добавлять во все проекты -----------------
#param /linc:d:\viperprojekt\autoexec.vpp
#setcurenv "galnet" from 'c:\GAL810\exe\';
#define ComponentVersion
//-----------------------------------------
#include GALNET.CCM
//Выбираем с чем работаем (в данном случае ресурс L_SOPRDOC)
#Component "L_SOPRDOC"
//Выбираем интерфейс из ресурса (в данном случае AKTREC)
alter interface AKTREC;
// Будем изменять обработчики таблице "SPSOPR"
tableEvent table SPSOPR
// Объявляем обработчик который нам нужен
cmPick:
{
// выбираем случай из "#NAMEMCUSL:" и присваиваем запуск интерфейса
case curfield of
#NAMEMCUSL:
{
if runinterface (L_MCU::GETMC,spsopr.cmcusl) = cmdefault and spsopr.cmcusl != 0
if isnew()
insert current spsopr;
else
update current spsopr;
rereadrecord(#spsopr);
runinterface (L_SOPRDOC::Example, katsopr.corg, spsopr.cmcusl, katsopr.cgruzto,spsopr.kolfact,spsopr.price,spsopr.csporder)
spsopr.rprice:=spsopr.price;
update current spsopr;
PutCommand(cmRefreshBDdata)
}
// иначе обрабатываем обычный "cmPick"
else if(inherited::HandleEvent(cmPick) = heOk) {}
end;
}
end;
end.
Interface Example 'TEST' (,,scinterface), escClose, cyan, doAccept;
var _corg, _cmc, _csporder, _gruz, _cpodr, tmpGruzto:comp;
var _kol,_price:double;
parameters _corg, _cmc, _cpodr, _kol,_price,_csporder, tmpGruzto
//временная таблица
table struct tmpGruzto "Временная таблица Грузополучателей"
(
CGRUZTO :string "Наименование грузополучателя",
KATORG3 :string "Наименование контрагента",
CGRUZTONREC :comp "NREC грузополучателя"
)
with index
(
ind = CGRUZTONREC //Индекс по NREC грузополучателя
);
// тут временная таблица закончилась
create view as select * from katsopr, spsopr, katorg, katparty, sklorder, sporder, katpodr, katorg katorg2
where
((
_corg == katsopr.corgbase and
_cpodr == katsopr.cgruzfrom(noindex) and
201 == katsopr.vidsopr and
_cmc == spsopr.cmcusl and
katsopr.nrec /== spsopr.csopr and
katsopr.corgbase == katorg.nrec and
spsopr.cmcusl == katmc.nrec and
1 == spsopr.prmc and
spsopr.cparty == katparty.nrec and
spsopr.nrec == sporder.cspsopr and
sporder.csklorder == sklorder.nrec and
sklorder.cpodr == katpodr.nrec and
katsopr.cgruzto == katorg2.nrec
))
bounds filGruz = _gruz == katsopr.cgruzfrom(noindex)
;
browse EmployeeBrowse;
// table spsopr;
Fields
katsopr.nsopr '№ сопроводительного документа':[30], protect;
katsopr.dsopr 'Дата':[10], protect;
// katsopr.vidsopr:protect;
katmc.name 'Наименование товара':[25], protect;
if (IsValid(tnKATSOPR), katorg.name, '') 'Наименование контрагента':[25], protect;
katparty.name 'Название партии':[25], protect;
sklorder.norder '№ Ордера':[10], protect;
katpodr.name 'Наименование склада':[15], protect;
katorg2.name 'Наименование грузополучателя':[25], protect;
end;
// При нажатии F6 запускаем интерфейс Example2
handleevent
cmnext :
{
RUNINTERFACE (L_SOPRDOC::Example2, _corg, tmpGruzto)
}
cmInit :
{
}
cmDefault:
{
_kol:=spsopr.kolfact;
_price:=spsopr.price;
_csporder:=sporder.nrec;
}
cmpick:
{
_gruz:=0;
runinterface(L_KATORG::GetKatOr,_gruz,0,false,0,0);
if _gruz !=0
{
subbounds(tbfilGruz);
addbounds(tbfilGruz);
}
else
subbounds(tbfilGruz)
PutCommand(cmRefreshBDdata)
}
end;
/*interface Example 'A'
final procedure P; {message('Интерфейс A...')}
screen S
<<
>>
end
handleevent
cminit: {P; abort}
end; */
end.
Interface Example2 'TEST2' , escClose, cyan, doAccept;
create view as select * from tmpGruzto;
browse GruztoBrowse;
Fields
tmpGruzto.CGRUZTO 'Наименование грузополучателя':[25], protect;
tmpGruzto.KATORG3 'Наименование контрагента':[25], protect;
end;
handleevent
cmInit :
{
var stmt:longint
stmt := sqlAllocStmt;
sqlBindParam(stmt, 1, _CORG);
sqlExecStmt(stmt, 'select distinct KATORG.NAME, KATORG3.NAME, KATORG.NREC from KATORG, KATSOPR, KATORG KATORG3 where KATSOPR.CGRUZTO = KATORG.NREC and KATSOPR.CORGBASE = KATORG3.NREC and ? = KATSOPR.CORGBASE');
sqlFetchInto(stmt, tntmpGruzto);
sqlFreeStmt(Stmt);
}
end;
end.
В виду малого опыта допускаю что объявил неверно временную таблицу, прошу помочь разобраться.