Экрандық формады есептелетін өрістерді құру
Егер №3 формада мәні басқа өрістерден алынатын есептелетін өріс құру керек болса, келесідей әрекеттерді орындау керек:
Өрістер редакторында жаңа жолды құру керек, оны Calculated деп белгілейміз. Ол үшін, DataModule5 көшіп, қажетті мәліметтер жиынынын (тышқан көмегімен) ағымды ету (Table2), тышқанның оң жақ батырмасын шертіп, мәзірден Field Editor таңдау, қайтадан тышқанның оң жақ батырмасын шертіп, мәзірден New Field таңдау. Осыдан соң сұхбаттық терезеден өріс атын белгілеу, оның типін және жолдық өрістер үшін - өлшемін орнату керек (31-сурет).
31-сурет – New Field терезесі
Жаңа өріс үшін TField компоненті құрылады, енді оған қатынауды өрістер редакторында жасауға болады.
Есептелетін өріс жататын, мәліметтер жиыны (Table2) компоненті үшін, OnCalcFields оқиға өңделуінің анықтау керек.
Мысалы, Table2 мәліметтер жиыны үшін, «Приход» кестелік мәліметтер қорын білдіретін, есептелетін өрістерге Table2Vychisl «Да» мәнін енгіземіз, егер Table2Kolvo өрісінде мәні 100-ден асса. Кері жағдайда, Table2Vychisl өрісіне бос мәнді енгіземіз:
procedure TDataModule5.Table2CalcFields(DataSet: TDataSet);
begin
IF Table2Kolvo.Value > 100 Then
Table2Vychisl.AsString := 'Да'
ELSE
Table2Vychisl.AsString := ' ';
end;
Егер мәліметтер жиынының AutoCalcFields қасиетінің мәні True болып орнатылса, мәліметтер жиынының dsInsert және dsEdit режимінде, онымен реляциялық байланысқан (кестелік мәліметтер қорының бүтінділік шектеулері орнатылған кезде) OnCalcFields оқиғасы есептелмейтін өрістер модификациясы кезінде басталады.
OnCalcFields оқиғаны өңдеу-процедурасы есептелелтің өріс мәнінің есептеу алгоритмінің құрылымын құрайды. Осы өңделгіште мән тек есептелетің өріске ғана меншіктелуі мүмкін, ал МҚ құрылымында анықталған өріске меншіктей алмайды (32-суретте қосымша көрсетілген).
32-сурет – Іске қосылған қосымшаның түрі
Ескерту. Кейбір кездерде есептелетін өрістерге басқа кестелер өрістерінде болмайтын мәндерді меншіктеу қажеттілігі болады. Басқаша айтқанда, кейде есептелетін өріске форманың кейбір айнымалыларының мәндерін жазуға тиімді болады. Мысалы, біз Tbl мәліметтер жиынына жазбаларды қосайық, кейбір есептеу алгоритмі бойынша Summa өрісінің мәнін есептейміз. Summa өрісіне есептеулер жүргізу үшін, TekOstatok айнымалысы қолдансын. TekOstatok мәнін біз TblTO есептелетін өріске енгізетін болайық.
Мұнда бір қиындық туындайды: мәнді есептелетің өріске енгізілуі OnCalcFields өңдеу процедурасы арқылы жүзеге асады және бұл TekOstatok локалды айнымалы мәні жоғалтылған кезінде болады.
Осы жағдайда Tbl-ге қосылатын жазулар, алгоритм жұмысы үрдісінде, локалды айнымалыларды еске сақтау кейбір динамикалық тізімінде тура келеді, ал соннан соң осы элементтердің мәндерін TblTO өрісіне меншіктеп, оның қажетті элементтерін OnCalcFields оқиғалар өңдеуінде шығару.
Достарыңызбен бөлісу: |