Автор работы: Пользователь скрыл имя, 17 Декабря 2013 в 17:39, реферат
Мәліметтер қорының әр кестесі өрістердің жиынтығынан тұратын жеке құрылымға ие болады. Әр өрстің мәліметтерінің жиынтығы мәліметтің типін сипаттайтын мазмұнынан тұрады, оған анықталған орында мән сәйкес келуі тиіс.
Delphi тіліндегі мәліметтер қорынының қосымшасындағы әр жинаққа өзіне сәйкес объект тура келеді. Өрістің негізгі объектісі болып Tfield классы табылады, ол абстрактілі өріспен жұмыс жасауға да негізделген. Ол мәліметтердің типіне сәйкес келеді. Осы базалық классқа басқа класстар сәйкес келеді.
Тақырыбы 11.3. Есептелетін және таңдау өрістерін құру
Мәліметтер қорының әр кестесі өрістердің жиынтығынан тұратын жеке құрылымға ие болады. Әр өрстің мәліметтерінің жиынтығы мәліметтің типін сипаттайтын мазмұнынан тұрады, оған анықталған орында мән сәйкес келуі тиіс.
Delphi тіліндегі мәліметтер
Мәліметтердің өрісі және типі туралы келесі сұрақтарды қарастырады:
Өріс объектісі
Өрістің объектісі әртүрлі типтегі
мәліметтердің өрістерінің
Editl.Text := Tablel.Fields[0].AsString;
Fields қасиеті мәліметтер
Әр өріс объектісі өрісті анықтайтын
бірнеше параметрлерден тұрады. Мысалы,
мәліметтердің жиынтығында
Editl.Text := Tablel.FieldByName('
Ағымдағы жазбаның өрісіне мәнді меншіктеу үшін жоғарыдағы келтірілген тәсілді қолдануға болады немесе өріс белгісіз болған жағдайда Fieidvalues типімен жазуға болады:
Tablel.FieldValues['SomeField'
Класстың негізінде типтелген
өрістің иерархиясын
Өрістің объектісі деген не және оның қандай мүмкіншілігі бар?
Біріншіден Tfield классының сипаттамасы
өрістің базалық классы ретінде
мәліметті дұрыс
Екіншіден өріс объектісі осы өрістің ағымдағы мәнінен тұрады.
Сурет 11.3.1 - Өрістер класының иерархиясы
Мәліметтерді көрсететін компоненттер өрістермен тікелей байланысқан болады.
Статикалық және динамикалық өрістер
Delphi бағдарламалау тілінде өрістер объектісін құрудің екі тәсілі бар.
Динамикалық өрістер бағдарламалық
жағдайда бағдарламаны өңдеу кезінде
лбъектіні құрмаса онда динамикалық
өріс қолданылады. Өрістің анық объектісі
автоматты түрде мәліметтердің
жиынтығын ашқан кезде
Мәліметтердің жиынтығының компоненті мәліметтер қорының кестесіне қосылғаннан кейін қосымша баптаусыз тек динамикалық өрісті қолданады. Динамикалық өрістің қасиеті мен оқиғасына индекстелген қасиетті Fields қолдануға болады немесе FieldByName тәсілін қолдануға болады.
Динамикалық өрістер мәліметтер қорының кестесінің өрісінің сипаттамасы берілген жағдайда қолданылады.
Статикалық өріс өңдеу кезеңінде қолданылады. Оның қасиеттерін Объектілер инспекторынан баптауға болады.
Статикалық өрістер
Өрістер редакторы алдында құрылған статикалық өрістер тізімінен тұрады. Барлық командалар жылжымалы менбдегі командалармен орындалады. Осы редактордың жоғарғы бөлігінде мәліметтер жиынтығын жылжытатын батырмалар орналасқан, Ол тек мәліметтерді ашу кезінде ғана белсенді болады.
New field командасының көмегімен жылжымалы менюден өрістер редаторын ашу арқылы статикалық өрісті құруға болады. Типті таңдау үшін бірнеше радиобатырмалардың тобы Field Type қолданылады.
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 қасиетін қарастыруға болады:
Егер өріс есептелетін болса, онда
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; - мәліметтердің көрсетілуін сипаттайтын компоненттерді көрсетуге жауап береді.
Бақылау сұрақтар:
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:=’
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;
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:=’
2: Table1.IndexName:=’’;
end;
Case Radiogroup1.ItemIndex of
0: Table1.IndexDefs[Table1.
Table1.Indexdefs[Table1.
1: Table1.IndexDefs[Table1.
Table1.Indexdefs[Table1.
[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 параметрі іздеу үшін өріс мәнін көрсетеді.