Есептелетін және таңдау өрістерін құру

Автор работы: Пользователь скрыл имя, 17 Декабря 2013 в 17:39, реферат

Краткое описание

Мәліметтер қорының әр кестесі өрістердің жиынтығынан тұратын жеке құрылымға ие болады. Әр өрстің мәліметтерінің жиынтығы мәліметтің типін сипаттайтын мазмұнынан тұрады, оған анықталған орында мән сәйкес келуі тиіс.
Delphi тіліндегі мәліметтер қорынының қосымшасындағы әр жинаққа өзіне сәйкес объект тура келеді. Өрістің негізгі объектісі болып Tfield классы табылады, ол абстрактілі өріспен жұмыс жасауға да негізделген. Ол мәліметтердің типіне сәйкес келеді. Осы базалық классқа басқа класстар сәйкес келеді.

Прикрепленные файлы: 1 файл

ВТ-31 лекция.docx

— 1.19 Мб (Скачать документ)

Options  параметрі  келісім   бойынша  символдық  жолды   іздеуге пайдалынады. Бұл параметр  жиын типіне TLocateOptions жатады, және  келесі мәндерді қабылдайды:

• loCaseInsensitive (әріптердің регистрі ескерілмейді);

• loPartialKey (мәндердің кейбір бөлігі сәйкес болуды білдіреді);

Бір өріс бойынша іздеуге  мысал:

Table1.Locate(‘Number’, 123, []);

Іздеу Number өрісі бойынша  орындалады, және бұл өрістің мәні 123 саны болатын бірінші жазба  ізделінеді.

Мысал ретінде мәліметтер жиынынан  іздеуді қамтамасыз ететін оқиғаны өңдеуді қарастырамыз. Форма  түрі 11.4.2-суретте келтірілген.

 

 

Сурет 11.4.2 - Іздеу  формасының мысалы

 

Пайдаланушы  товар  аты  (Name)  және  құны  (Price)  өрістері  бойынша іздеуді жүзеге асырады. Іздеу процесі «Іздеу» түймесін шерткен соң басталады.

Төмендегі оқиғаны өңдеу  модулінің мәтіні келтірілген.

procedure TForm1.Button1Click(Sender: TObject);

Var Keyfields: String;

    KeyValues: Variant;

      Options: TLocateOptions;

begin

if not (CheckBox1.Checked or CheckBox2.Checked) then begin

   MessageDlg('yt pflfys eckjdbt gjbcrf', mtInformation, [mbOK],0);

   exit;

   end;

// Бір уақытта Name, Price екі  өрісі бойынша іздеу

if CheckBox1.Checked and CheckBox2.Checked then begin

   KeyFields:='Name;Price';

   KeyValues:=VararrayOf([edit1.Text,edit2.Text]);

   end

// Екі өрістің біреуі  бойынша іздеу

   else begin

   // Name өрісі бойынша  іздеу

   if CheckBox1.checked then begin

      Keyfields:='Name';

      keyvalues:=edit1.Text;

      end;

   // Price өрісі бойынша  іздеу

   if CheckBox2.Checked then begin

      KeyFields:='Price';

      KeyValues:=edit2.Text;

      end;

   end;

   // Іздеу әріптердің  регистріне байланысты емес орындалады

   // кейбірелері сәйкес  болатын мүмкіндіктерімен іздеу

Options:=[loCaseInsensitive,loPartialKey];

// Жазба табылған жоқ

if not Table1.Locate(KeyFields,KeyValues,Options) then begin

   Beep;

   MessageDlg('Жазба табылмады, mtInformation, [mbOK],0);

   exit;

   end;

end;

Тізбектеп  іздеуді,  жазба  өрістері  мәні  мен  іздеу  үшін  берілген    мәннің ұқсас  сәйкестерін  іздеуге  арналған  FindNearest,  SetNearest,  EditNearest  және GotoNearest әдістерінің көмегімен ұйымдастыруға  болады.

Жазбаларды  тізбектеп  іздеу  үшін,  қосымша  форма  оқиғасын  өңдеуге мысал қарастырайық.

 

 

Сурет 11.4.3 - Тізбектеп  іздеу формасына мысал

 

Қосымшаның  форма  компоненті  үшін  оқиғаны  өңдеу  программасы  төменде келтірілген.

procedure TForm1.Edit1Change(Sender: TObject);

Var strField: String;

begin

// егер іздеу режимі  қосырмаған болса, онда процедурадан  шығу

if not CheckBox1.Checked then exit;

// іздеу үшін өрісті  таңдау

case RadioGroup1.ItemIndex of

     0:strField:= 'Name';

     1:strField:= 'Firm';

     2:strField:= 'City';

     end;

// іздеуді орындау

Table1.Locate(strField,edit1.Text,

[loCaseInsensitive,loPartialKey]);

end;

procedure TForm1.CheckBox1Click(Sender: TObject);

begin

edit1Change(Sender);

end;

procedure TForm1.RadioGroup1Click(Sender: TObject);

begin

edit1Change(Sender);

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

Form1.Close;

end;

 

Мәліметтерді  електен өткізу

 

Мәліметтер  жиынында  таңдалынатын  жазбалар  үшін  шек  қою  –фильтрация деп аталады. Delphi жүйесі жазбаларды фильтрациялау  мүмкіндігін өрнек бойынша және аралығы бойынша жүзеге асырады.

 

Бақылау сұрақтары:

1. Индекстік өрістің қажеттілігі?

2. Мәліметтерді сұрыптау  қалай жүргізіледі?

3. Мәліметтерді іздеу  не үшін қажет? 

4. Іздеу әдістерінің түрлері?

5. Мәліметтерді електен  өткізу дегеніміз не?

 

 

Тақырыбы 11.5 Сүзгілеу тәсілдері

Дәріс мақсаты: Мәліметтерді електен өткізу әдістерін толық қарастыру.

Кілттік  сөздер:  өрнек бойынша електен өткізу,  аралық  бойынша електен өткізу, Filter, Filtered, SetRangeStart, SetRangeEnd, SetRange, ApplyRange.

Мәліметтер  жиынында  таңдалынатын  жазбалар  үшін  шек  қою  –фильтрация деп аталады. Delphi жүйесі жазбаларды фильтрациялау  мүмкіндігін өрнек бойынша және аралығы бойынша жүзеге асырады.

 

Өрнек бойынша  електен  өткізу

 

Мәліметтер  жиынын  өрнек  бойынша  фильтрациялауды  қолдану  барысында,  жазбаларды  таңдау  шартымен  берілген  фильтрдің  өрнегін қанағаттандыратын  жазбалармен  шектеледі.  Фильтрдің  өрнегін  беру  үшін String  типті Filter қасиеті  қолданылады.

Фильтрация шартын көрсетуге  мысал ретінде келесі өрнекті  келтірейік.

Oklad <= 20000

Post = ‘Инженер’ OR Post = ‘лаборант’

   Бірінші өрнек  оклад өрісінің мәні 20000 аспайтын  барлық жазбаларды іріктеп алады.  Екінші өрнек мамандық өрісі  инженер немесе лаборант мәнінен тұратын жазбаларды іріктеуді қамтамасыз етеді.

Фильтрді  екпінді  етуге  және  оны  алып  тастауға  Boolean  типті  Filter қасиеті  қолданылады.  Қалыпты  жағдайда  бұл  қасиеттің  мәні  False,  және фильтрация  өшірілген  болады.  Filtered  қасиетіне  True  мәнін  қойғанда фильтрация  қосылады,  және  Filter  қасиетінде  жазылған  фильтрді қанағаттандыратын мәліметтер жиынында жазбалар іріктелінеді.

Фильтрация  параметрі  TFilterOptions  типті  FilterOptions  қасиетінің көмегімен  беріледі.  Бұл  қасиет  жиын  типіне  жатады,  және  екі  мәннің комбинациясын қабылдайды:

•  foCaseInsensitive – әріптердің  регистрі  ескерілмейді,  яғни  Post  =

‘преподаватель’ фильтр өрнегіндегі  преподаватель, ПРЕПОДАВАТЕЛЬ немесе Преподаватель бірдей мағынада қабылдана  береді.

•  foNoPartialCompare  – іріктеу үшін,  өріс және мәндерінің  толық сәйкес болуын  тексеруді орындайды.  әдетте  символдар жолы  үшін  қолданылады. Мысалы,  Post  =  ‘П*’ фильтрі үшін  foNoPartialCompare  мәні  қосылғанда  Post өрісінде  Преподаватель,  Преп-ль,  немесе  Профессор мәндерінен  тұратын жазбалар іріктелініп алынады.

Өрнек  бойынша  мәліметтер  жиынын  фильтрациялау  үшін,  форма оқиғасын өңдеу мысалын  қарастырайық. Форма 11.5.1-суретте келтірілген.

Сурет 11.5.1 - Өрнек бойынша електен өткізу формасының мысалы

Мәліметтер  жиынын  фильтрациялау  екі  түйменің  және  редакциялау өрісінің  көмегімен  орындалады.  Фильтровать  (btnFilter)  түймесін  басу барысында  мәліметтер  жиынының  Filtered  қасиетіне  True  мәні  меншіктелу жолымен  фильтр  орындалады.  edtFilter  редакторы  фильтр  өрнегін  қоюғаарналған.  Фильтрдің  орындалуында  өрнектегі  шартты  қанағаттандыратын жазбаларды  іріктеу  орындалады.  Все  записи  (btnAllrecord)  түймесін  басқанда фильтр ажыратылады, барлық жазбалар көрсетіледі.

Төменде  Form1  форма  қосымшасының  үш  оқиғаны  өңдеу  модулі келтірілген.

procedure TForm1.FormCreate(Sender: TObject);

begin

Table1.FilterOptions:=[foCaseInsensitive];

Table1.Filtered:=False;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Table1.Filtered:=True;

Table1.Filter:=edit1.Text;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

Table1.Filtered:=False;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

Form1.Close;

end;

end.

 

Жазбаларды  таңдау  үшін  дайын  өрнектердің  тізімін  пайдаланған  да ыңғайлы  болады.  Мұндай  режим  ComboBox  және  Memo  компоненттерінің көмегімен  жасалынады.  Егер  фильтрация  шарты  белгілі  және  өзгермейтін болса, онда пайдаланушы  жазбаларды іріктеуді CheckBox жалаушасының және RadioButton айырып-қосқышының көмегімен  басқара алады.

Форма  қосымшасы  оқиғасын  өңдеуге  мысалы  ретінде,  пайдаланушы  фильтрацияны  екі  өріс  бойынша  немесе  өрнегі  бойынша  басқару  мүмкіндігін қолданатын, әйтпесе  фильтрацияны алып тастайтын қарастырайық.

 

Сурет 11.5.2 - Бірнеше өріс бойынша електен өткізу формасына мысал

 

procedure TForm1.FormCreate(Sender: TObject);

begin

  Table1.Filter:='';

  Table1.FilterOptions:=[foCaseInsensitive];

  Table1.Filtered:=True;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

  Table1.Filtered:=True;

// оклад бойынша фильтрациялау

if Radiobutton1.Checked then table1.Filter:='Salary >'+

Edit1.Text+ 'AND Salary <'+Edit2.Text;

// туған күні бойынша

if Radiobutton2.Checked then table1.Filter:='Birthday >'+

DateToStr(DateTimePicker1.Date)+'AND  Brithday  <

'+DateToStr(DateTimePicker2.Date);

// өрнек бойынша фильтрациялау

if Radiobutton3.Checked then Table1.filter:=edit3.Text;

if Radiobutton4.Checked then Table1.Filter:='';

end;

Ең  кіші  және  ең  үлкен  датаның  мәнін  енгізу  үшін  екі  TDateTimePicker (DateTimePicker1.Date және  DateTimePicker2.Date)  типті  компоненттер қолданылады. Окладтың мәндеріне шек  қою үшін Edit1.Text және Edit2.Text бір жолды  редакторлары қолданылды.

 

Аралық бойынша  електен өткізу

 

Аралық бойынша фильтрацияда мәліметтер жиынына өрістерінің  мәндері көрсетілген  аралықта  болатын  жазбалар  енеді,  яғни  фильтрация  шарты  мәні >төменгі  шекара  AND  мәні  <  жоғарғы  шекара  түріндегі  өрнек  болып  табылады.  Өрнек  бойынша  фильтрациядан  айырмашылығы  кестенің  барлық жазбалары  тізбектеліп  қарап  шыққанда,  аралық  бойынша  фильтрациялау  индекстік-тізбектелген  әдіспен  жүргізіледі,  сондықтан  фильтрацияның  бұл тәсіліне тек индекстік өрістер  қолданылады. Өріс аты, жазбаларды таңдау үшін критерий  ретінде  көрсетілген  аралық,  IndexName  IndexFieldNames қасиеттерінің  көмегімен  ағымдағы  сияқты  қоюлуы  керек.  Егер  ағымдағы индекс қойылмаса, онда келісім бойынша басты индекс қолданылады.

Аралық  бойынша  фильтрацияны  қосу  және  ажырату  ApplyRange  және CancelRange  әдістері қолданылады.

SetRangeStart  және  SetRangeEnd  әдістері  аралықтың  төменгі   және жоғарғы  шекараларын   қояды.  Аталған  процедуралардың   параметрлері  жоқ, сондықтан   аралық  шекараларын  қою   үшін  меншіктеу  инструкциясын  қолданылады.  Сонымен  қатар  SetRangeStart  және  SetRangeEnd  әдістері  мәліметтер жиынын dsSetKey режиміне  ауыстырады.

Алдын  ала  қойылған  аралық шекараларын  өзгертуге SetRangeStart және SetRangeEnd  әдістерінің  әрекеттеріне  сәйкес  келетін,  EditRangeStart  және EditRangeEnd әдістері арналған.

Аралық  бойынша  фильтрацияны  қамтамасыз  ететін  қосымша  формасы  оқиғасын өңдеу модулін мысал  ретінде қарастырайық.

 

 

Сурет 11.5.3 - Аралық бойынша електен өткізу формасына мысал

 

procedure TForm1.FormCreate(Sender: TObject);

begin

Table1IndexName:='indSalary';

end;

// Salary өрісі бойынша фильтрация

/ / бұл өрістің индексі  ағымдағы индекс сияқты қойылған  болу керек

procedure TForm1.Button1Click(Sender: TObject);

begin

with Table1 do begin

    // аралықтың төменгі  шекарасын қою

    SetRangeStart;

    FieldByName('Salary').AsString:=edit1.Text;

    // аралықтың жоғарғы  шекарасын қою

    SetRangeEnd;

    FieldByName('Salary').AsString:=edit2.Text;

    // фильтрацияны  қосу

   ApplyRange;

end;

        end;

//фильтрацияны алу

procedure TForm1.Button2Click(Sender: TObject);

begin

Table1.CancelRange;

End;

end;

 

Бақылау сұрақтары:

1. Електен өткізу дегеніміз  не?

2. Өрнек бойынша електен  өткізу қалай жүзеге асырылады?

3. Аралық бойынша електен  өткізу қалай жүзеге асырылады?

4. Аралық бойынша електен  өткізу әдістері?

 

Тақырыбы 11.6. Бірнеше кестелердегі мәліметтер жиынтығын құру және өңдеу

 

 

Дәріс мақсаты: Байланысқан кестелермен жұмыс жасауды қарастыру.

Кілттік сөздер: байланыс, байланысқан кесте, негізгі кесте, бағынышты кесте, алғашқы кілт, сыртқы кілт.

 

Объектілі бағдарланған модель

 

Объектілі бағдарланған мәліметтер моделінде мәліметтер қорының жеке жазуларын  идентификациялауға  мүмкіндік  бар.  МҚ-ның  жазулары  мен  оны өңдеу  функцияларының  арасында  объектілі  бағдарланған  программалау тілдерінің командаларының көмегімен өзара байланыс тағайындалады.

Информация о работе Есептелетін және таңдау өрістерін құру