Есть две базы: SP_LS (справочник лекарств), PF_LS (план-факт-остаток по лекарствам). Нужно в броузе (по SP_LS) менять "на месте" (прямо в нем) цифры плана (конечно, можно бы и в InputWindow каком-нибудь - но "заказчику" так хочется, "по-экселски").
Пишу "по-простому" такой, к примеру, код ("RU866" - т.к. базы в DOS-кодировке):
use PF_LS codepage "RU866" new
index on NOMKOD to PF_LS.NTX // NOMKOD - (N, 7) код лек-ва из SP_LS
set index to PF_LS.NTX
use SP_LS codepage "RU866" new
index on NOMKOD to SP_LSN.NTX
set index to SP_LSN.NTX
set relation to NOMKOD into PF_LS
go top
....
// в main-окне Win_1 на соотв. странице таба - броуз
@ 30, GetBorderWidth() browse Br_Lek2 of Win_1 ;
/* width Win_1.Tab_0.Width */ ; // ?? как получить ширину таба?
width Win_1.Width - GetBorderWidth() * 4 ;
height 160 ;
workarea SP_LS ;
fields { "SP_LS->NOMKOD", "SP_LS->NAIM", ;
"SP_LS->TORG_R", "SP_LS->TORG_L", ;
"SP_LS->MNN_R", "SP_LS->MNN_L", ;
"PF_LS->PLAN1", "PF_LS->FAKT1", "PF_LS->OST1", ;
"PF_LS->PLAN6", "PF_LS->FAKT6", "PF_LS->OST6" ;
} ;
widths { 70, 60, 60, 60, 80, 50, 60, 60, 60, 60, 60, 60 } ;
headers { "Ном.код", "Наименование", ;
"Торг.наим.(рус.)", "Торг.наим.(лат.)", ;
"МНН (рус.)", "МНН (лат.)", ;
"План 1м.", "Факт 1м.", "Остаток 1м.", ;
"План 6м.", "Факт 6м.", "Остаток 6м." ;
} ;
justify { BROWSE_JTFY_RIGHT,,,,,, ;
BROWSE_JTFY_RIGHT, BROWSE_JTFY_RIGHT, BROWSE_JTFY_RIGHT, ;
BROWSE_JTFY_RIGHT, BROWSE_JTFY_RIGHT, BROWSE_JTFY_RIGHT } ;
on change { || Ris_Gr_Le2() } ; // функция разрисовки грида с детальной инфой по ЛС
readonly { .T., .T., .T., .T., .T., .T., .F., .T., .T., .F., .T., .T. } ;
edit inplace
т.е. "редактируемые на месте" поля - из "дочерней" базы.
Кликаем в броузе на какой-то из "планов" (например, на PF_LS->PLAN1, открывается GETBOX ввода (как и хотим, "на месте"), вводим цифирь, ENTER... и вылетаем по ошибке
Error BASE/1003 Переменная не существует: PLAN1
Called from _INPLACEEDITSAVE(2189)
Called from _INPLACEEDITOK(2166)
Called from (b)_BROWSEINPLACEEDIT(1977)
Called from _DOCONTROLEVENTPROCEDURE(1559)
Called from EVENTS(473)
Called from _DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(1280)
Called from _BROWSEINPLACEEDIT(2081)
Called from _BROWSEEDIT(1238)
Called from EVENTS(2164)
Called from _DOMESSAGELOOP(0)
Called from _ACTIVATEWINDOW(1280)
Called from DOMETHOD(4608)
Called from MAIN(74)
...и что - "не суждено сбыться мечте идиота"? :)
Кстати, почему-то еще "в нагрузку" после этого (именно после подобного вылета) перестают в FARе работать клавиши ENTER и ESC (пользую KEYRUS в Win98) ("лечится" перезагрузкой - иногда только "холодной").