Вот, предлагаю посмотреть такой интерфейс
Код: Выделить всё
//--------------------------------------------------------------------------------------------------------
TABLE STRUCT LOCAL MTMARK ""(
NREC : COMP
, NAMEKLASS : STRING
, NAMEKLVAL : STRING
, COKLVAL : COMP
)
WITH INDEX
(
MT1 = NREC(surrogate),
MT2 = NAMEKLASS+NAMEKLVAL
);
TABLE STRUCT LOCAL MTPAY "Получение, платежи"(
NREC : COMP
, CMTMARK : COMP
, PTYPE : WORD "0 - Получение, 1 - Оплата"
, SUMMA : DOUBLE
, COVAL : COMP
)
WITH INDEX
(
MT11 = NREC(surrogate),
MT33 = COVAL,
MT44 = PTYPE,
MT55 = CMTMARK+COVAL
);
TABLE STRUCT LOCAL ttITOGO "Итого по"(
NREC : COMP
, SUMMA : DOUBLE
, COVAL : COMP
)
WITH INDEX
(
tt111 = NREC(surrogate, unique)
);
//--------------------------------------------------------------------------------------------------------
Interface iKREDITHISTORY, CYAN;
Show at(60,10,120,20);
CREATE VIEW V1 as
SELECT
*
FROM
MTMARK,
MTPAY,
ttITOGO
;
HandleEvent
cmInit:{
insert MTMARK SET NAMEKLASS := 'Долгосрочный', NAMEKLVAL := 'EUR', COKLVAL := 2;
insert MTPAY SET CMTMARK:=MTMARK.NREC, PTYPE:=0, SUMMA:=10000, COVAL:=2;
insert MTMARK SET NAMEKLASS := 'Долгосрочный', NAMEKLVAL := 'USD', COKLVAL:=4;
insert MTPAY SET CMTMARK:=MTMARK.NREC, PTYPE:=0, SUMMA:=40000, COVAL:=4;
inser t MTPAY SET CMTMARK:=MTMARK.NREC, PTYPE:=1, SUMMA:=10000, COVAL:=4;
PUTTABLETODBF(#MTMARK, 'MTMARK.dbf',ptfFullTable);
PUTTABLETODBF(#MTPAY, 'MTPAY.dbf',ptfFullTable);
_loop MTMARK ORDERED BY MTMARK.NAMEKLASS, MTMARK.NAMEKLVAL {
groupBy g1 : MTMARK.NAMEKLASS {
var ins : LONGINT;
if((ins := insert ttITOGO set ttITOGO.COVAL := MTMARK.COKLVAL) <> 0){
message('Ошибка '+ins+'! при вставке в ttITOGO');
}else{
message('Вставка '+MTMARK.NAMEKLVAL+', ttITOGO.NREC = '+ttITOGO.NREC+', ttITOGO.COVAL = '+ttITOGO.COVAL);
}
PUTTABLETODBF(#ttITOGO, ttITOGO.NREC+'ttITOGO.dbf',ptfFullTable);
groupby g2 : MTMARK.NAMEKLVAL {
_loop MTPAY WHERE ((MTMARK.NREC == MTPAY.CMTMARK)) {
var upd : LONGINT;
if((upd := update current ttITOGO SET ttITOGO.SUMMA := ttITOGO.SUMMA + MTPAY.SUMMA) <> 0){
message('Ошибка '+upd+'! при обновлении в ttITOGO');
}else{
message('Обновление '+MTMARK.NAMEKLVAL+', SUMMA = '+ttITOGO.SUMMA);
}
}
}
}
PUTTABLETODBF(#ttITOGO, 'ttITOGO.dbf',ptfFullTable);
_loop ttITOGO {
message('Выгрузка '+ttITOGO.COVAL);
}
delete ALL ttITOGO;
}
Abort;
};
End; //HandleEvent
End.
Код: Выделить всё
PUTTABLETODBF(#ttITOGO, 'ttITOGO.dbf',ptfFullTable);
Голову сломал
Нужно бы смайл поставить такой