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

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

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

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

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

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

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

Тақырыбы 11.3.  Есептелетін және таңдау өрістерін құру

 

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

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

Мәліметтердің өрісі және типі туралы келесі сұрақтарды қарастырады:  

  • Мәліметтердің қорындағы өріс объектісі;  
  • өрістің динамикалық және статикалық өрісі;  
  • мәліметтердің жиынтығында объектілер өрісін қолдану тәсілі;  
  • TField классы — мәліметтердің жиынтығына өрісті қолдану;  
  • өрістің объектілерінің типі және мәліметтің типі;

 

  

Өріс объектісі

 

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

 

Editl.Text := Tablel.Fields[0].AsString;

 

Fields қасиеті мәліметтер жиынтығының  объектілер типінің интекстелген  тізімін көрсетеді. 

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

 

Editl.Text := Tablel.FieldByName('SomeField1).AsString;

 

Ағымдағы жазбаның өрісіне мәнді  меншіктеу үшін жоғарыдағы келтірілген  тәсілді қолдануға болады немесе өріс белгісіз болған жағдайда Fieidvalues типімен жазуға болады:

 

Tablel.FieldValues['SomeField'] := Editl.Text;

 

Класстың негізінде типтелген  өрістің иерархиясын сипаттайтын  Tfield класын қолдануға болады. Осы калсстың негізінде басқа класс туды.

 

Өрістің объектісі деген  не және оның қандай мүмкіншілігі бар?

 

Біріншіден Tfield классының сипаттамасы  өрістің базалық классы ретінде  мәліметті дұрыс визуальизациялауды қамтамасыз ету үшін мәліметті көрсететін компонентпен байланыстыра алу керек. Мысалы, өріс объектісі шрифтінің  параметрін, тегістеу тәсілін, бастапқы әріпті реттеуді көрсете алу тәсілінен  тұруы мүмкін.

Екіншіден өріс объектісі  осы өрістің  ағымдағы мәнінен тұрады.

 

 

Сурет 11.3.1 - Өрістер класының иерархиясы

 

Мәліметтерді көрсететін компоненттер өрістермен тікелей байланысқан  болады.  

 

Статикалық және динамикалық  өрістер

 

Delphi бағдарламалау тілінде өрістер  объектісін құрудің екі тәсілі  бар. 

Динамикалық өрістер бағдарламалық  жағдайда бағдарламаны өңдеу кезінде  лбъектіні құрмаса онда динамикалық  өріс қолданылады. Өрістің анық объектісі  автоматты түрде мәліметтердің  жиынтығын ашқан кезде құрылады. Ол мәліметтер қорының кестесіне  сәйкес келеді. Өрістің кез-келген объектісі Tfield классының мұрагері болып табылады. Ал оның нақтылы типі кесте өрісінің тиіпіне теі болады.

Мәліметтердің жиынтығының компоненті мәліметтер қорының кестесіне қосылғаннан  кейін қосымша баптаусыз тек  динамикалық өрісті қолданады. Динамикалық  өрістің қасиеті мен оқиғасына  индекстелген қасиетті Fields қолдануға  болады немесе FieldByName тәсілін қолдануға  болады. 

Динамикалық өрістер мәліметтер қорының  кестесінің өрісінің сипаттамасы берілген жағдайда қолданылады.

Статикалық өріс өңдеу кезеңінде  қолданылады. Оның қасиеттерін Объектілер инспекторынан баптауға болады.

Статикалық өрістер арнайыландырылған  өрістер редакторының көмегімен  құрылады, оны тышқанды екі рет  бас арқылы шақыруға болады немесе Fields Editor көмегінің көмегімен ашуға болады.

Өрістер редакторы алдында құрылған статикалық өрістер тізімінен тұрады. Барлық командалар жылжымалы менбдегі командалармен орындалады. Осы редактордың  жоғарғы бөлігінде мәліметтер жиынтығын  жылжытатын батырмалар орналасқан, Ол тек мәліметтерді ашу кезінде  ғана белсенді болады.

New field командасының көмегімен жылжымалы менюден өрістер редаторын ашу арқылы статикалық өрісті құруға болады. Типті таңдау үшін бірнеше радиобатырмалардың тобы Field Type қолданылады.

  • Data — мәліметтер өрісі;
  • Calculated — есептелетін өріс;
  • Lookup — өрісті көру.

 

TField классы

 

Жоғарыда айтылғандай үлкен  класстар иерархиясынан TField классы базалық  класс болып табылады. Ол абстрактілі  өрістердің мәсілдерімен оқиғаларын басқарады. Осы класстан барлық типтелген өрістер  классы мұраға қасиетті қалдырады.

Tfield классының қасиеті мен оқиғасы  төменде келтірілген.  Объектінің  атауы төмендегі қасиеттен тұрады:

 

property Name: TComponentName;

 

Өріс объектісін құру кезінде объектінің атауы сәйкес мәліметтер жиынтығының  компонентімен және өріс атауымен беріледі.

 

 

Қасиет 

property FieldName: String; -мәліметтер қорындағы кестенің өріс атын қайтарады.

 

Қасиет 

property FullName: string; -осы жағдайда барлық атауды мұраға қалдыру арқылы іске асады.

Мәліметтер қорының кестесінде өрістің атауы келесі қасиетте орналасқан болады: property Origin: String; 

 

Қасиет

property FieldNo: Integer; -мәліметтер жиынтығындағы өрістің реттік нөмірін қайтарады. Егер өріс объектіс статикалық болып табылса, онда рет өзгереді.

 

Қасиет

property Index: Integer; - Fields  тізімінен орістің индексіні көрсетеді.

 

Өрістің функциональды сипаттамасы  келесі қасиетпен анықталады:

type TFieldKind = (fkData, fkCalculated, fkLookup, fklnternalCalc,

fkAggregate);

property FieldKind: TFieldKind;

 

Көп жағдайда оның мәні объектіні  құру кезінен бастап автоматты түрде  анықталады. FieldKind қасиетін қарастыруға  болады:  

  • fkData — жазба өрісі;  
  • fkCalculated — есептелетін өріс;  
  • fkLookup — көру өрісі;  
  • fklnternalCalc — ішкі есептеу өрісі;  
  • fkAggregate — агрегаттық өріс.

Егер өріс есептелетін болса, онда

property Calculated: Boolean;

қасиеті True мәнін қабылдайды.

 

Қасиет

property DataType: TFieldType; - өрістің мәліметінің типін қайтарады

property DataSize: Integer; - жадының көлемінен тұрады.

 

Қасиет

property Value: Variant

 

мәліметтің Post жиынтығынан тұрады:

with Tablel do begin Open;

while Not EOF do begin

if Fields[0].Value > 10

then Fields[1].Value := Fields[1].Value*2;  

Next; 

end; 

Close; 

end;

Қасиет 

property Readonly: Boolean; - редакторлауға тиым салады (Readonly := True) немесе (Readonly := False) рұқсат етеді.

 

Қасиет

property DisplayText: String; - өрістің мәнінен тұрады. Ол жолдық форматта тұрады.

 

Қасиет

property Text: String; - редакторлау кезінде мәліметтің компонентін көрсету компонентін қолданылдады.

 

Қасиет 

property DisplayWidth: Integer; - өрістің мәнін көрсету үшін символының санын анықтайды.

 

Қасиет 

property Visible: Boolean; - мәліметтердің көрсетілуін сипаттайтын  компоненттерді көрсетуге жауап береді.

 

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

 

  1. Өріс объектісі деген не?
  2. Өрістер класының иерархиясы
  3. Статикалық өрістер деген не?
  4. Динамикалық өрістер деген не?
  5. TField классы деген не?

 

11.4 тақырыбы Мәліметтер қатынаудың навигациялық тәсілдер

 

 

Дәріс  мақсаты:  Навигациялық  қатынас жасау әдісінің  негізгі амалдарын

қарастыру.

Кілттік  сөздер:  навигациялық  әдіс,  жазбаларды  сұрыптау,  жазбаларды  іздеу, жазбаларды електен өткізу.

 

Мәліметтер жиынын сұрыптау

 

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

Сұрыптау  бағыттаy  ағымдағы  индекстің  ixDescending  параметрі  анықтайды,  қалыпты жағдайда  қосылмаған  болады және  сұрыптау мәндерінің өсу реті бойынша орындалады. Егер    ixDescending индексінің белгісі  қосылған болса, онда сұрыптау мәндердің  кему реті бойынша орындалады. Жазбаларды сұрыптауды  орындалатын  индексті  қою,  IndexName  немесе  IndexFieldNames қасиеттерінің  көмегімен орындалады. IndexName қасиетінің мәні негізінде, оны құрғандағы  индекс  аты  көрсетіледі.  IndexFieldNames  қасиетін  пайдалану барысында  сәйкес индекстердің өріс аттары көрсетіледі.

Paradox  кестесінің  басты   индексінің    (кілтінің)  аты   болмауына байланысты,  бұл   индекс  бойынша  сұрыптауды  IndexFieldNames  қасиетінің көмегімен  орындауға болады.

Индекстің атын көрсетумен сұрыптауды мысалмен көрсетейік.

 

Procedure TForm1.Button4Click(Sender: Tobject);

Begin

Case Radiogroup1.ItemIndex of

   0: Table1.IndexName:=’IndName’;

   1: Table1.IndexName:=’indBirthday’;

   end;

end;

 

Мәліметтер жиыны негізінде  Table1  компоненті  пайдалынады,  ал сұрыптау екі тәсілмен орындалады: Name өрісі үшін құрылған IndName индексі бойынша, және Birthday өрісі үшін құрылған indBirthday индексі бойынша.

Индекстік  өрістердің  атын  көрсетумен  тағы  бір  сұрыптау  мысалын көрсетейік.

Procedure TForm1.Button5Click(Sender: Tobject);

Begin

Case Radiogroup1.ItemIndex of

   0: Table1.IndexFieldNames:=’Name’;

   1: Table1.IndexFieldNames:=’Name;Birthday’;

   2: Table1.IndexFieldNames:=’Code’;

   end;

end;

 

Мұнда  сұрыптау  келесі  өрістер  бойынша  орындалады:  Name  (IndNameиндексі), Name және Birthday (indNameBirthday индексі),  Code (басты индекс).

Енді  қиынырақ  сұрыптау  мысалын  қарастырайық.  Мәліметтер  қоры ретінде  Table1  компоненті  қолданылады.  Пайдаланушы  жазбаларды сұрыптауды    екі  айырып-қосқыштың  көмегімен  басқара  алады:  бірінші  сұрыптаудың  түрі,  ал  екінші  сұрыптаудың  бағыты  көрсетіледі.  Сұрыптау

Сортировать  түймесін  басқан  соң  орындалады.  Форма  түрі  11.4.1 -суретте көрсетілген.

 

 

Cурет 11.4.1 - Сұрыптау формасының мысалы

 

Procedure TForm1.Button5Click(Sender: Tobject);

Begin

Case Radiogroup1.ItemIndex of

   0: Table1.IndexName:=’IndName’;

   1: Table1.IndexName:=’IndBirthday’;

   2: Table1.IndexName:=’’;

   end;

Case Radiogroup1.ItemIndex of

0: Table1.IndexDefs[Table1.IndexDefs.IndexOf(Table1.IndexName)].Options:=

Table1.Indexdefs[Table1.IndexDefs.IndexOf(Table1.IndexName)].Options+[ixdescending];

1: Table1.IndexDefs[Table1.IndexDefs.IndexOf(Table1.IndexName)].Options:=

Table1.Indexdefs[Table1.IndexDefs.IndexOf(Table1.IndexName)].Options-

[ixdescending];

End;

End;

Жазба  сұрыпталатын  өріс  IndexName қасиеті  арқылы  қойылады. Сұрыптау  болмаған  жағдайда  бұл  өріске  бос  жол  меншіктеледі.  Бұл  Paradox кестесі  үшін,  бірінші  өріс  бойынша  сұрыптауды  білдіреді. dBase  кестесі  үшін кесте файлына  жазбалардың енуіне байланысты орналастырылады.

Сұрыптау  бағытын  басқару  ағымдағы  индекстің  ixDescending параметрінің  көмегімен  жүзеге  асырылады.  IndexDefs  тізіміндегі  ағымдағы индекс нөмерін анықтау үшін IndexOf әдісі  қолданылады.

 

Жазбаларды іздеу

 

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

Locate  (const  keyFields:  String;  const  KeyValues:  Variant;  Options: TLocateOptions):Boolean  функциясы  өрістің  берілген  мәнімен  іздейді.  Егер жазба   табылса,  онда функция True мәнін,  ал  басқа жағдайда False  қайтарады.  Іздеу жүргізілетін  өріс  тізімдері  KeyFields параметрінде беріледі, өріс  нүктелі үтірмен  (;)  бөлінеді. Variant  типті KeyValues  параметрі   іздеу  үшін  өріс мәнін көрсетеді. 

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