Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VP_LAB_BD_DELPHI.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
10.19 Mб
Скачать

6.1.8.2. Table және Query компоненттерінің фильтрлерімен таңдау

Table1 компонентінің фильтрімен деректерді таңдау үшін MaskEdit1 терезесіне сынақ кітапшасы нөмірінің қажет мәні енгізіледі. MaskEdit1 терезесіне екі рет шерту арқылы MaskEdit1DblClick әдісі шақырылады. Мұнда J=2 болғанда Table1 компонентімен жұмыс істеу үшін фильтр орнатылады:

DataSource1.DataSet :=Table1;

Table1.Filtered :=True;

Table1.Filter := ‘NZ>’+MaskEdit1.Text;

Осыған ұқсас Query1 компонентінің көмегімен мәліметтердің фильтрациясы орнатылады. Қосымша ретінде Query1 фильтрін орнатудың алдында Query1.Close операторымен Query1-дің ДҚ-нан ажыратылуы жасалады; ал фильтрді орнатқан соң - Query1-дің ДҚ-на Query1.Open операторымен қосылуы жүзеге асады.

6.1.9. Мәліметтерді сұрыптау әдістері

Мәліметтердің сұрыпталуы негізгі немесе екінші ретті кілттері анықталған, яғни индекстері құрылған бағандардың мәндері бойынша жүргізіледі. Менюдегі ‘Сортировать по:’ командасын шақырған кезде индекстің өрістерінің аттарының сәйкесінше мәндері орнатылғаннан кейін сұрыптау жүзеге асады, мысалы:

Table1.IndexFieldNames:=’NZ’; - зачетка номері бойынша сұрыптау үшін;

Table1.IndexFieldNames:=’FIO’; - фамилия бойынша сұрыптау үшін;

Table1.IndexFieldNames:=’RS’; - стипендия мөлшері бойынша сұрыптау үшін;

Сұрыптау индексінің өрістерін анықтау үшін менюдің әр пункті үшін әртүрлі әдістер қолдануға болады. 6.1 листингісінде сұрыптаудың бірнеше әдістерінің мысал фрагменті берілген. Сонымен қатар бөлінген – менюдің барлық пункттеріне сұрыптауды шақыратын бір әдіс қолдануға болады. Мұндай мысал 6.2 листингісінде берілген. Мұнда сұрыптау индексінің өрісін анықтау N16Click әдісі орындалады. IndexFieldNames мәнін құру үшін кесте өрісінің атын таңдау – индекс өрісінің аты – IndexDefs қасиетінің мәндерінің тізімінен төмендегідей оператор көмегімен орындалады:

Table1.IndexFieldNames:= Table1.IndexDefs[Tag].Fields;

Тізімнің элемент номері Tag қасиетінің мәнімен анықталады. Ол ‘Сортировать по:’ мәзіршесінің әр командасына менюді жасау барысында орнатылады. Әртүрлі бағандар бойынша сұрыптау үшін Tag қасиетінің мәндері 6.3 кестеде берілген.

6.3 Кесте. Әртүрлі бағандар бойынша сұрыптау үшін Tag қасиетінің мәндері

Сұрыптау үшін:

Мәзір пунктінің аты

Tag қасиетінің мәні

Зачетка номері бойынша

N16

0

Фамилия бойынша

N17

2

Стипендия мөлшері бойынша

N18

1

Индекстер тізбегін IndexDefs тізімінен Table1 компонентінің IndexDefs қасиеті мәндерін шақыру арқылы көруге болады. Бұл қасиеттің жанында орналасқан көпнүктеге шерту Editing Table1.IndexDefs-ті, яғни кестенің индекстер редакторын шақырады. Оның түрі 6.6 суретінде берілген. Одан IndexDefs тізімінің элементтер номері көрінеді.

6.6 сурет. Кестенің индекстерінің редакторының түрі

6.1.10. Мәліметтерді іздеу әдістері

Мәліметтерді іздеу Поиск мәзірінің әр командасына жеке-жеке жүргізіледі:

  • фамилия бойынша ( J=5 );

  • фамилия бойынша тез іздеу ( J=6 );

  • жақын сәйкестік бойынша ( J=7 );

  • фамилия және стипендия бойынша ( J=8 );

  • біртіндеп іздеу.

Алғашқы төрт түрді іздеу процессі 2-ші кезеңде жүзеге асады. Бірінші кезеңде N19Click (біртіндеп іздеуден басқа барлық іздеу әдістері үшін біреуінің) әдісі көмегімен жүзеге асады:

  • қажет фамилияны енгізу үшін Label6 белгісінінен және Edit1 редактор терезесінен тұратын Panel1 панелін көрсету;

  • іздеу әдісінің белгісінің J мәнін орнату.

Фамилия және стипендия бойынша іздеу үшін Panel1 панелінен басқа сонымен қатар Panel2-ге де көрінетін режим орнатылады. Оның белгісіне ‘Введите размер стипендии:’ деген текст жазылады және қажет стипендия мөлшерін енгізуіміз үшін MaskEdit1 терезесі белсенді болады.

Екінші кезеңде Button1Click әдісімен берілген іздеу әдістерінің біреуімен жазбаны іздеу жүзеге асады.

Іздеу әдісін анықтау үшін мәзір пунктіне іздеу үшін қолданушының таңдаған Tag қасиетінің мәндері қолданылады. Ол қосымшаны өңдеу барысында орнатылады және 6.4 кестеде берілгендей мәндер қабылдайды.

6.4 кесте. Іздеудің әртүрлі әдістері үшін Tag қасиетінің мәндері

Іздеу үшін

Пунктің аты

Tag қасиетінің мәні

Фамилия бойынша

N19

5

Фамилия бойынша тез іздеу

N20

6

Жақын сәйкестік

N21

7

Фамилия және стипендия бойынша

N22

8

N19Click әдісінде мәзір пунктіне сәйкес J=Tag қасиетінің мәні орнатылады. Содан соң Label6 белгісінен ( ‘Введите ФИО и нажмите кнопку Искать’), Edit1 терезесінен және іздеу процесін іске қосу үшін Искать (Poisk) батырмасынан тұратын Panel1 панелі көрсетіледі.

Қажет фамилиялар мен инициалдарды енгізіп, Искать батырмасын басқан соң PoiskClick әдісі бойынша іздеу процесі басталады. Ол J белгісінің мәніне байланысты әртүрлі орындалады. Мәліметтерді іздеуден кейін іздеудегі жетістік (немесе сәтсіздік) жайлы S1 және S2 процедураларының көмегімен хабарлама шығады. Іздеу аяқталған соң Panel1.Visible:=False; операторы көмегімен Panel1 панелі көрсетілмейтін күйге ауысады.

PoiskClick әдісінде іздеу процесі J мәнімен анықталады.

J=5 үшін Table1.SetKey және Table1.GoToKey әдістерінің көмегімен фамилия бойынша іздеу жүргізіледі. Алдын ала мына оператор бойынша іздеу жүргізілетін индекстің өріс мәні орнатылады:

Table1.IndexFieldNames:=’FIO’;

Іздеу белгісінің мәні мына оператордың көмегімен орнатылады:

Table1.FieldByName(‘FIO’).AsString:=Edit1.Text;Тез іздеу үшін (J=6) мына функция қолданылады:Table1.Locate(‘FIO’, Edit1.Text, [LoCaseInsensitive, LoPartialRey]);

мұндағы:

FIO – іздеу жүргізілетін жазба өрісінің аты;

Edit1.Text – қажет өрістің мәні (фамилия);

LoCaseInsensitive – әріп регистрі есепке алынбайды;

LoPartialRey – мәндердің бөлшектік сәйкестігі мүмкін.

Ең жақын сәйкес мәнін іздеу кезінде операторлар тізбегі фамилия бойынша іздеу кезіндегі операторлар тізбегіне ұқсас, бір ерекшелігі: соңғы оператор:

Table1.GoToNearest; - ең жақын сәйкес мәнді табу.

Фамилия және стипендия бойынша іздеу кезінде тез іздеудегіге ұқсас әдіс-функция қолданылады; бірақ іздеу белгілерінен тұратын шындық(фактический) параметр ретінде іздеу үшін екі мәннен тұратын тізім түріндегі параметр қолданған:

Table1.Locate(‘FIO’;’RS’, VarArrayOf([Edit1.Text,

MaskEdit1.Text]), // фамилия және стипендия бойынша

[LoCaseInsensitive, LoPartialRey])

Біртіндеп іздеу 3 кезең бойынша жүргізіледі. Іздеуге дайындық N22Click – Поиск – Постепенный әдісі бойынша орындалады. Оның көмегімен белгіден (‘Вводите фамилию: по завершении - двойной щелчок в окне:’) және Edit2 – (фамилия енгізу үшін) редактор терезесінен тұратын Panel3 панеліне көрінетін күй орнатылады. Қажет фамилияны енгізу процесінде мына операторлардың көмегімен Edit2Change әдісі шақырылады:

Table1.IndexFieldNames:='FIO';

Table1.FindNearest([Edit2.Text]);

Фамилияны біртіндеп іздеу және Edit2 терезесіне екі рет шерту аяқталған соң Edit2DblClick әдісі шақырылады. Бұл әдіс көмегімен Panel3.Visible:=false; оператор арқылы Panel3 панелі көрінбейтін күйге көшеді.

6.1.11. ‘Вычислить:’ мәзіршесі командаларының әдістері

Есептеу нәтижесі Label11 белгісіне шығады.

‘Вычислить: - сумму стипендии’ командасын орындау үшін – оны құру және баған суммасын белгіге шығару – N24Click әдісінде ДҚ жазбаларына тікелей қолжетімділік(доступ) қолданылады. Оның текстінің мысалы 6.2 листингісінде берілген.

N25Click әдісіндегі орташа стипендия мәнін құрып, және оны Label11 белгісіне шығару үшін N24Click (Sender) әдісі шақырылады; оның көмегімен S – стипендия суммасы анықталады. Содан соң оның орташасы анықталады.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]