TDataSet (мәліметтің абстрактілі жиыны) базалық класына мәліметтер жиындарымен жұмыс істеген кезде BDE-нің функционалдылығын жүзеге асыратын TBDEDataSet классы негізделген. Оның ұрпағы - TDBDataSet классы – мәлімет қорымен байланыс үшін жауап береді. Оның негізінде бағандар мен жолдарға ұйымдастырылған кестелер түріндегі реляциялық ақпаратпен жұмыс істей алатын компоненттер жасалған. Атап айтқанда, маңызды компоненттердің бірі TТable TDBDataSet классының ұрпағы болып табылады.
TField (жазба өрісі) класы.
Берілген класс бағдарламада виртуалды келтірілген нақты жазба өрісін сипаттайды, яғни ол физикалық жазба үшін қабық ретінде болады және оны жобалаушыға қажетті касиеттері мен тәсілдер жиынтығымен толықтырады. Физикалық (реалды бар) өрісті сипаттайтын TFiеldDef класына қарағанда TField класының негізінде псевдоөрістер құрылады: есептегуе жататын өрістер, сәкес келу өрістері және тағы басқалар.
TField типі бағдарламада шынайы жоқ. Оның орнына, жазба өрісінің нақты типтеріне сәйкес келетін (мысалы, TDataField датаны сақтайтын өріс үшін, TGraphicField графикалық бейне сақтатйын өріс үшін т.с.с.) оның көптеген ұрпақтары қолданылады. Сонымен қатар қасиеттердің көбісі осы ата-ана класында сипатталған.
TFieldDef (жазба өрісін сипаттау) классы.
TFieldDef класы мәлімет қоры кестесінің физикалық өрісін сипаттауға қолданылады. Мәліметтер модуліне жаңа кесте қосылғанда, ол үшін барлық өрістірдің сипатталуы қалыптастырылады. Келешекте, мысалы, мәлімет модулін көру терезесінен Fields жолының контекстік менюсінен NewField (оріс құру)пунктін таңдау арқылы виртуалды өрістердің де сипатталуын қалыптастыруға болады. Одан кейін бағдарламада TFieldDef класымен мәлімет көзімен байланыс блогында TFiеldDef класының өрістерін TField класының өрістеріне автоматты түрде айырбасталатындықтан жұмыс істеу мүмкін емес болып қалады.
Класс TNamedItem (мәлімет қоры элементтерін анықтаудың базалық классы) және TСollectionItem (коллекция элементі) кластардың қасиеттер мен әдістерін мұрағаттанады.
TData Source (мәліметтер көзі) компоненті.
Арналуы. Компонент кестелер мен басқа да физикалық мәліметтер жиынтықтары және формадағы басқару элементтері арасындағы байланысты қамтамасыз етеді.
Құрылуы. Бұл компонент күрделі баптауды қажет етпейді. Оның тек State (TDataSetState типі) қасиетін ғана қарастырайық. Ол бізге DataSet қасиетінде берілген мәліметтер жиынының жағдайы туралыақпарат алуға (мәлімет редакторлау, қосу, фильтрациялау және т.б.) мүмкіндік береді.
Қолданылуы. Бағдарламалаушыға тәжірибелік жұмысында келесі әдіс қажет болады:
function ISlinkedTo (DataSet: TDataSet): Boolean;
Ол мәліметтер көзі параметр ретінде берілген DataSet мәліметтер жиынтығымен байланысқанын және байланыспағанын анықтайды. OnDataChahge оқиғасы мәліметтер жиынтығының бір жазбасының редакторлауы болған кезде пайда болады, OnDataChahge оқиғасы – мәліметтер жиынтығының жағдайы өзгерген кезде, ал OnUpdateData оқиғасы – мәліметтер қорына жасалған жаңартуларды енгізгеннен кейін Post әдісі орындалғанның алдында пайда болады.
ІІ МҚБЖ-мен жұмыс істеу
МҚБЖ-мен жұмыс істеу принциптері
Мәліметтер модулін құру.
Delphi жүйесіндегі мәлімет қорына қатынау МҚБЖ-мен жұмыс істеуге арналған визуалды емес компонентердің бай жиынтығын қолдану арқылы жүзеге асырылады.Әдеттегідей, бұл компоненттер құрылатын бағдарламада арнайы мәліметтер модулінде (TDataModule)топтастырылады. Мәліметтер модулін объектілердің жұмысын орталықтанған түрде басқаруға мүмкіндік беретін және мәлімет қорларымен байланысқан бағдарлама логикасын есептеу әрекеттеріне және мәліметтердің формада бейнеленуін жүзеге асыратын бағдарламалық кодтан бөлетін объектілерді сақтаушы деп қарауға болады.
Мәліметтер модулін жаңа жоба құрып File New DataModule командасы арқылы қосуға болады.
Басты формадан мәліметтер модулінің ішіне қатынауды үшін Unit1.Pos файлындағы бар модульдер тізімінен оның атын (Unit2) көрсету керек:
Unit Unit1;
Interface
Uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Unit2;
Мәліметтер қорлары кестелеріне қатынау
Мәліметтер модулі панеліне мәліметтер қорларының қажетті кестелеріне қатынауды қамтамасыз ететін компоненттерді орналастыру қажет. Мысал ретінде Delphi 6 стандартты масылдары болып табылатын мәліметтер қорларының кестелерін қарастырайық. Дайын ақпараты бар көптеген кестелерден тұратын DBDEMOS базасын алайық.
Мәліметтер қорының BDE кестесіне қатынау жасау үшін BDE (мәліметтерге қатынау) компоненттер панелінен TTable компоненті қолданылады. Ол мәліметтер модуліне еңгізілгеннен кейін объектілер ағашын көрушіде компоненттер арасындағы логикалық байланыстарды сипаттайтын ағаш пайда болады. Осы ағаштағы объектілер жағдайын тартыа алу тәсілімен өзгертуге, сондай-ақ оларға жаңа объектілерді қосуға болады. Тышқанның оң жақ батырмасы көмегімен ағаштың әрбір элементінің негізгі қасиеттеріне қатынауды тез алуға болады. Олардың бәрі де терезенің оң жағында орналасқан объектілердің контекстік менюінен де алына алады.
Алғанында Alias (мәліметтер қорының псевдонимі) және Table1 (TTable класының объектісі)сұрақ белгісімен белгілінеді. Бұл объект толық анықталмаған және бағдарламада әзірше қолданыла алмайдыдегенді білдіреді. Оны ұйымдастыру үшін ең алдымен мәліметтер модулінен жалғыз объект Table1-ді ерекшелеу керек. Енді объектілер Инспекторында DatabaseName (мәліметтер қорының аты) қасиеті үшін DBDEMOS мәнін таңдау қажет. Ашылатын тізімде ағымдағы жүйеде жатқан басқа да мәліметтер қорлары көрсетіледі. Осыдан кейін мәліметтер модулінің сол жақ панелінде Alias торабынан қызыл белгі алынады. Енді Table1объектісі байланысқан кестені белгілеу қажет. Мәліметтер қорының қажетті кестесі TableName қасиетінің ашылатын тізімінен таңдалады. Ол Itеms.db кестесі болсын. Осы кестеге бағдарламадан қатынау жасау үшін оның Active қасиетіне true мәнін меншіктеу қажет.
Динамикалық және тұрақты өрістер
Әрі қарай кестенің өрістерін бағдарламада екі тәсілмен қолдануға болады;динамкилық кестелер (dynamic) түрінде немесе тұрақты кестелер (persistent) түрінде. Айталық кестелерде алдын-ала бар өрістер ғана қолданылады және оларға тек жай операциялар (көру, редакторлау) ғана орындалады. Ондай өрістермен динамикалық өрістер ретінде (мұндай режим үнсіздік бойынша қойылған) жұмыс істеуге болады. Бірақ, көбінесе мәліметтердің иілгіш өңделуінде қажеттілік туады, яғни уақытша қосымша, мысалы басқа мәндер негізінде есептелетін “псевдоөрістерді” құру мүмкіншілігі. Сол уақытта басқа компоненттер осындай өрістері нақты кестенің толымды өрістері деп санайды, ал бұл олардың қасиеттерімен манипуляциялар жасап, ақпаратты көрсетудің қажетті режимдерін тез баптауға мүмкіндік береді.
Ол үшін кесте негізінде тұрақты өрістер жиынтығын құрайды. Кесте мәліметтер модулінде таңдалған кезде контекстік менюде FitldEditor (өрістер редакторы) пунктін белгілеу қажет. Алғашында бос тұрақты өрістердің ашылған тізімінде контекстік менюді ашу қажет. Кестенің барлық өрістерін тізімін Add all fields (барлық өрістерді қосу) командасы көмегімен қосуға болады. Келешекте өрістерді тізімінен алып тастауға (физикалық түрде олар кестеде қалады), қайта қоюға, орналасу ретін өзгерту, қасиеттерін баптауға (мысалы, динамикалық өрістерге тиісті емес көрінудің Visible қасиеті) және тағы басқа мүмкін болады.
Осындай псевдоөрістермен, сондай-ақ олар мәліметтер модуліне TDataModule класының жеке өрістері ретінде қосылатындықтан жұмыс істеу ыңғайлы. Оларға айнымалыларға сияқты, олардың атаулары бойынша касты сипаттау негізінде тікелей баруға болады:
Type
TDataModule 2 = class (TDataModule)
Table1. TTable;
Table2.TTable;
Table1OrderNo: TFloatField;
Table1ItemNo: TFloatField;
Table1PartNo: TFloatField;
Table1Qty: TIntegerField;
Table1Discount: TFloatField;
Table2PartNo: TFloatField;
Table2VendorNo: TFloatField;
Table2Description: TStringField:
Table2OnHand: TFloatField;
Table2OnOrder: TFloatField;
Table2Cost: TCurrencyField;
Table2ListPrice: TCurrencyField;
Private
{ private declarations}
public
{public declarations}
end;
Мәліметтер көздері
МҚБЖ жұмыс істеуге арналған экрандық элементтер коп жағдайда Windows-тың қарапайым басқару элементтеріне ұқсас. Олар бағдарламаның айнымалыларын емес, кестенің өрістерін редакторлауға арналғанымен ерекшеленеді. Негізінен оларды TTable компоненттеріне тікелей қосуға болады, бірақ Delphi-де басқа, жақсылау, иілгіштеу жол табылған – аралық деңгей компоненті TDataSource (мәліметтер көзі) құрылған.
Бұл компонент МҚБЖ кестелері мен экрандық басқару элементтері арасында делдалдық қызмет атқарады. Бұл не үшін жасалған? деген заңды сұрақ туады. TDataSource компоненті біріншіден, нақты МҚБЖ-дан абстаркциялануға мүмкіндік береді. Мысалы, егер көп қолданушылық Справочник жасау керек болса, желіде жұмыс істей алатын бірдей мәліметтер қорының схемасы бар ьасқа ірі МҚБЖ-ға кестелерді баптаған жеткілікті. Басқару элементтері мұны байқамай қалады, себебі нақты кестелерге емес мәліметтер көзіне сүйенеді. Екіншіден, Delphi-де мәліметтер көзі ұғымы кесте ұғымынан кеңіректеу. Теория жүзінде осындай көздің қызметін мәліметтерді жазбалар жиынтығы түрінде көрсете алатын кез клеген виртуалды құрылғы атқара алады. Мысалы, Жазбалар Интеренттің бір жерінде орындалатын бағдарламалық компонентерімен инерциялана алады.
Қолданушылық интерфейсті жобалау
TDBGrid (мәліметтер кестесі) компоненті (Сурет-1).
Кестенің жазбаларын редоктарлауға, қосуға немесе жоюға мүмкіндік алу үшін бағдарламалық код жазу міндет емес. Формада Data Controls (мәліметтерді басқару элементтері) панелінен TDBGrid компонентін орнатқан жеткілікті.
Сурет-1
TDBGrid TDBNavigator
TDBNavigator (навигатор) компоненті (Сурет-1).
Кесте бойынша навигацияны жеңілдетуге арналған Delphi 7жүйесінде TDBNavigator компоненті бар. Ол әдетте, формада TDBGrid компоненттің астында орналастырылып, оған DataSource қасиеті арқылы байланысады.
Навигатор жазбалар жиыны бойымен алға, артқа қозғалуға, алғашқы және соңғы жазбаларға өтуге, және басқа да бірқатар функцияларды орындауға мүмкіндік береді. Навигатор функциялары қосымшаның орындалу барысында да, бағдарламалық кодтан да оның батырмаларын басу арқылы жүзеге асырылады.
Мәліметтер жиынтығы
Мәліметтер қоры кестелерінің ақпараты Паскальда TDataSet класымен сипатталады, оның негізінде TTable компоненті жасалған. Осы компонентің көмегімен жаңа жазбаны қосу өте жеңіл.
TDataSet мәліметтер жиынтығымен жұмыс істеу кезінде мәліметтер жиынтығының көрсеткіші ұғымы пайдаланалады. Ол нақты қазіргі уақытта мәліметтер қоры кестесінің қандай жазбасы ағымдағы болып табылатының анықтайды. Біз TDBGrid кестелерімен жұмыс істегенде уақыттың кез келген мезетінде тек бір ғана жазбаны, өзгертіп, жойып және қоса аламыз. Ол кестеде жұлдызшамен белгіленеде және ағымдағы болып саналады. TdataSet класының көрсеткішті мәліметтер жиынтығы бойынша жылжытуға арнлаған қасиеттері мен тәсілдері бар. Ақпаратты өзгерту немесе жою бойынша барлық операциялар ағымдағы – көрсеткіш қойылған жазбаға қолданылады деп саналады.
Мәліметтер қорындағы өзгертулерді жазу, яғни сақтау тек Post тәсілін шақырғаннан кейін ғана орындалады.
Мәліметтер жиынтығының модификациясы
Мәліметтер жиынтығының модификациясын орындау үшін ең алдымен, ол ашық екеніне көз жеткізу керек. Жиынтықтың жағдайы Active қасиетінің мәтінен тексеріледі, осы кезде оның мәні ауқытша болуы керек. Мәліметтер жиынтығының ашулыу Open (параметрлерсіз) тәсілі көмегімен орындалады. Келесі қадам - жасалатын өзгерістердің типтерін анықтау. Мәліметтер қосылуы (параметрлерсіз Insert тәсілі) немесе модификациялануы (параметрлерсіз Edit тәсілі). Тек ағымдағы жазба өрістері ғана модификацияланады. Барлық өзгерістерді еңгізгеннен кейін оларды қорда сақтау (Post тәсілі) немесе сақтаудан бас тарту (Cancel тәсілі) керек.
Жазба өрістері
Ағымдағы жазба өрістеріне өзгерістерді еңгізу өрісі кәдімгі меншіктеу операторлары көмегімен іске асырылады. Ағымдағы жазба өрістері мәліметтер жиынтығының TFields типті Fields қасиетінде сақталады. Бұл нақты өрістерді сипаттайтын TField типті элементтер тізімі. өрістердің номерленуі нольден басталады.
TField класының әр бір өріске оның мәліметтер қорындағы нақты типіне байланысты қатынауға мүмкіндік беретін ыңғайлы қасиеттер жиынтығы бар. Жолды сандық өріске жазу сияқты қателік жағдайлардың пайда болмауы ұшін өрістің типін ескрген жөн. Мысалы, AsString қасиеті мәтінді форматтағы өрістің мәніне қатынауға мүмкіндік береді:
Edit1.Text:=Table1.Fields[0]. AsString;
Table1.Fields[0]. AsString:=Edit1.Text;
TField класс объектілерінің басқа да қасиеттері төмендегі кестеде келтірілген.
Мәліметтер кестесінің өрістер форматын сипаттайтын қасиеттер
Қасиет
|
Арналуы
|
AsBoolean
|
Boolean форматы
|
AsCurrency
|
Currency форматы
|
AsDateTime
|
TdateTime форматы
|
AsFloat
|
Double форматы
|
AsInteger
|
Integer форматы
|
AsString
|
String форматы
|
AsVariant
|
Variant форматы
|
Мәліметтерді көру және редакторлау
Мәліметтер қорын пайдаланушыларға экранда кешенді ақпаратты көрген жақсы. Мысалы, Table1 кесте жазбаларын шығарғанда белгілі бір сандық өрістің орнына басқа кестеден сәйкес мәліметінің мәтіндік атауын көрсеткен дұрыс.
Осындай талаптарды Table1физикалық кесте үшін өрістер редакторында (Fields Editor) құрылатын сәйкес келу өрістері (Lookup Fields) көмегімен жүзеге асыруға болады.
Олар бар кілттік мәндерге сәйкес келетін басқа кестелердің өрістер мәндерінің орнын басатын реалды өрістерді имитациялайды.
Кестелер үшін өріске деген қатынаудың тағы бір тәсілі анықталған – оның аты бойыншаFieldByName тәсілі көмегімен:
function FieldByName (const FieldName:String):TField;
Мысалы, 2 индекс бар Parts кестесінің өрісіне мәліметтер қосатын оператор DataModule2.Parts.Fields[2].AsString:=Edit1.Text; орнына, өріске оның аты Name боыйынша қатынау тәсілін қолдануға болады:
DataModules.Parts.FieldByName(‘Description’).AsString:=Edit1.Text; тәсілдерінің екеуінде де артықшылықтары мен кемшіліктері бар. Бір жағдайда кестедегі өрістердің тәртібін үнемі бақылау қажет, екіншіде - өрістердің атаулары мәліметтер қорында қзгертілген болса, оларды қолмен бағдарламада өзгерту қажет.
2.3 Мәліметтер жиынтығымен жұмыс істеудің негізгі тәсілдері.
Мәліметтер жиынтығын сорттау
Мәліметтер қорларының кестелерін құрғанда, мәліметтерге қатынауды тездететін, кестелер өрістері үшін индекстерді қалыптастырған жөн. Кейбір МҚБЖ – лерде дұрыс ұйымдастырылған индексация - жұмыс эффективтілігін жақсартудың жалғыз құралы. Осы кезде белгілі бір МҚБЖ-ға байланысты ньюанстарды ескерген жөн (мысалы, индекстер санының көптігі қорда жазбаларды таңдауды тездетуы мүмкін, бірақ оған жаңа ақпарат қосу операцияларын баяулатуы мүмкін).
Кестеге екіншілік индексті қосу (алғашында ол алғашқы индекс арқылы тәртіпке келтірілген деп саналады) мысалы Database Desktop қосымшасы көмегімен құрылған индекстің IndexName қасиетіндегі осы индекстің атын таңдау арқылы жүзеге асырылады. Осы кезде кестенің таңдалған индекс бойынша сортталуы орындалады.
Кесте жазбаларын Қолданушы әрекеттеріне байланысты әр түрлі тәртіпте көрсетуге мүмкіндік беретін IndexName қасиетіне мәнді бағдарламаның орындалуы кезінде де меншіктеуге болады.
Клиент-серверлік МҚБЖ-лар үшін IndexName қасиеті орнына, әдетте, индексті сипаттайтын өрістердің аталуар тізімін нүктелі үтір арқылы көрстегуе мүмкіндік беретін IndexFieldNames қасиеті падаланылады. Осы жерде бір ескерту: IndexName және IndexFieldNames қасиеттерін бірге қолдануға болмайды. Олардың біреуне өзгерістерді еңгізгенде екіншісі автоматты түрде тазартылады.
Кесте индексін тек жобалау кезеңінде ғана емес, сондай-ақ бағдарламаның орындалу барысында да құруға болады. Ол үшін келесі тәсіл орындалады:
Procedure AddIndex(const Name, Fields:String; Options: TindexOptions: const DescFields:String =’ ’);
Жаңа индекстің атауы Name параметрінде көрсетіледі. Осы атауға нақты МҚБЖ-ның талаптары арналады. Индекс негізделетін өрістер Fields Name параметрінде нүктелі үтір арқылы атап көрсетіледі.
Индекс қасиеттері Options параметрімен анықталады. Оынң келесі типі болады:
Type TІndexOption=(ixPrimary, ixUnigue, ixDescending, ixCaseInsensitive, ixExpression, ixNonMaintained);
Options параметрінің маңызды мәндерін келесі кестеден көруге болады.
Мәліметтер кестесінің индексін сипаттайтын қасиеттері
Мән
|
Индекс қасиеттері
|
ixPrimary
|
Алғашқы индекс
|
ixUnigue
|
Индекстің өрістердің барлық мәндері уникалды
|
ixDescending
|
Индекс бойынша сорттау кему тәртібінде орындалады
|
ixCaseInsensitive
|
Сорттау үрдісі мәтіндік өрістердің ішіндегі мәліметтің регистріне сезімтал емес.
|
Екіншілік индексті жою үшін келесі тәсілді қолдануға болады:
Procedure DeleteIndex (const Name: String);
Қатынауы бар индекстер тізімін
Procedure GetIndexNames (List: TStrings); тәсілі алуға мүмкіндік береді.
Фильтрлер
Көп жазбалары бар кестелерді көру ыңғайсыз. Белгілі бір шартпен байланысқан жазбалар тобын ғана ерекшелеу жиі қажет болады. Мысал қарастырайық. Бізге Parts кестесінің бөлшектердің саны 50-ден аз (OnHand өрісі) екені көрсетілген немесе бөлшектің құны 500 теңгеден көп емес екені көрсетілген (Cost өрісі) барлық жазбаларды таңдап алу қажет делік. Ол үшін мәліметтер жиынтығын берілген шарт бойынша фильтрлеу қажет.
Мұндай шарт (ол сұрау деп аталады) мәтіндік жол түрінде мәліметтер жиынтығының Filter қасиетінде жазылады және құрамына ағымдағы мәліметтер жиынтығының өрістері, константалары, логикалық және қатынас операциялары қолданылатын логикалық өрнек кіреді: мысалға, ондай жазбаларды айқындау үшін Filter қасиетіне келесі жолды жазу керек:
OnHand <50 or Cost < =500
Мәндердің фильтрациялануына рұқсат ету үшін мәліметтер жиынтығының Filtered қасиетін true тең деп орнату керек.
Егер Filter қасиетіне жол жобалау кезеңінде емес, бағдарламаның орындалуы барысында еңгізілсе (мысалға, батырманы шерту бойынша), онда қажет жазбалардың таңдаулы динамкалық түрде орындалады.
Шарттың құрылымына белгілі бір шектеулер қойылады. Көптеген автономды және файл-серверлік МҚБЖ-лер үшін өрічтер мәндерін бір бірімен салыстыруға рұқсат берілмейді. PartNo < Cost
Бірақ та, клиент-серверлік МҚБЖ-лердің көбісі мұндай мүмкіндікті қолдайды. Бұл SQL тілінің ерекшеліктерімен байланысты.
Фильтрациялау үрдісінде FilterOptions қасиетінің қосымша баптарын қолдану мүмкін. FoCaseInsensitive бабы мәтіндік ақпаратты салыстырған кезде реистр есепке алына ма, жоқ па екенін анықтайды, foNoPartialCompare бабы мәтіндік өрістер мәндерінің толық сәйкес келуі бойынша фильтрлеуді орындауға немесе жлдардың біреуі жұлдызшаға аяқталса жолдары бірдей деп санауға мүмкіндік береді.
‘123*’ = ‘12345’
Аралықтарды ерекшелеу
Фильтрлерді қолдану өте күрделі сұрауларды қалыптастыруға мұмкіндік береді, бірақ үлкен көлемді мәліметтер жиынтықтарында фильтрлеу баяу жүреді. Сондықтан Ttable компоненті үшін мәліметтер қоры кестелерінің нақты өрістеріне шектердің мүмкін мәндерін оперативті беруге мүмкіндік беретін тәсілдер тобы ұйымдастырылған.
Ең бірінші:
Рrocedure SetRangeStart;
тәсілі шақырылады.
Ол кестені аралықтың алғашқы мәнін қабылдау жағдайына қояды. Осы тәсілден кейін алғашқы мәндерді индекстелген өрістерге меншіктеу операторлары келуі керек. Әрі қарай
Procedure SetRangeEnd;
тәсілі щақырылады.
Оның көмегімен аналогиялық әдіспен аралықтың соңғы шекарасы беріледі. Қалыптастырылған аралыққа енген жазбаларды сұрыптау келесі тәсілді шақыру арқылы іске асырылады:
Procedure ApplyRange;
Мысалы, егер Button1 батырмасын шерткенде Cost өрісінің мәндері50-ден кем емес және 100-ден артық емес болатын бүкіл жазбаларды сұрыптау керек болса, келесі кодты қолдануға болады:
DataModule2.Parts.SetRangeStart;
DataModule2.Parts.FieldByName(“Cost”).AsCurrency := 50;
DataModule2.Parts. SetRangeEnd;
DataModule2.Parts. FieldByName(“Cost”).AsCurrency := 100;
DataModule2.Parts.ApplyRange;
Кестенің аралықты қолданып жұмыс істеу режимін жою үшін
Procedure CancelRange;
тәсілі қолданылады.
Кестедегі іздеу
Көлемі үлкен мәліметтер қорларында ақпаратты қажет жазбаны іздеу құралдарсыз түзету мен редакторлау өте қиын. Ең жеңілі ондай іздеуді
Function Find Key (const KeyValues: array of const): Boolean;
тәсілі арқылы орындау.
Іздеу кілті деп аталатын параметр IndexName және IndexFieldNames қасиетінде көрсетілген әр бір өріс үшін мәндер тізімін сипаттайды. Мысалы, егер мәліметтер қорының көрсеткішін Parts кестесінің PartNo өрісінің мәні 900-ге тең жазбасына жылжыту үшін келесі команданы орындау керек
DataModule2. Parts.FindKey ([900])
Осы кезде Parts кестесі PartNo өрісі бойынша индекстелуі және IndexName қасиетінде индекс ретінде сәйкес екіншілік индекстің атуының тұруы талап етіліде. FindKey тәсілі қажет жазба табылмағанда false мәнін қайтарады. Қолданушының ыңғайлылығы үшін қосымшаға келесі тәсілді қосқан артық болмайды:
Procedure FindNearest (const KeyValues: array of const);
Бұл тәсіл KeyValues параметріне нақты сәйкес келмесе де оған ең жақын болатын сәйкес қрістің мәні бар жазбаны табуға әрекеттенеді.
Мысалы, бүтін 5 санына 4 пен 6 ең жақын сандар ‘AA’ жолына - ‘AB’ жолы ең жақын және т.с.с. болады.
Іздеу кілтін, сондай-ақ, келесі тәсіл арқылы қалыптастыруға болады:
Procedure SetKey;
Сәйкес әдіс аралықыт қалыптастыруды еске түсіреді. Іздеу кілті қалыптастырылғаннан кейін керекті жазбаға
Function GotoKey: Boolean;
тәсілі арқылы өтуге болады.
Мәні бойынша ұқсас жазбаға өту
Function GotoNearest;
тәсілдің көмегімен жүзеге асырылады.
Мысалы:
DataModule2.Parts.SetKey;
DataModule2.Parts.FieldByName(‘PartNo’).AsInteger:=900;
DataModule2.Parts.GotoNearest;
Іздеу үшін, сондай-ақ, әмбебап тәсілдерді де қолдануға болады:
Function Locate(const KeyFields: string; const KeyValues: Variant; Options: TLocateOptions):Boolean;
Function Lookup(const KeyFields: string; const KeyValues: Variant; const ResultFields: string): Variant;
Бірінші тәсіл параметр ретінде іздеу орындалатын өрістер тізімін, әрбір өрістің мәндерінің тізімін және іздеудің қосымша баптауларының жиынтығын (TlocateOptions типі) алады. Мысалы, PartNo индекстелген өрісте 900 мәнін іздеу келесі жолмен орындалуы мүмкін.
DataModule2. Parts. Locate (‘PartNo’; VarArrayOf([900]), [ ]);
Екінші тәсіл іздеу мен қоса атаулары ResultFields параметрінде көрсетілген өрістер мәндерінің массивін (Variant типті) қайтарады.
DataModule2. Parts. Lookup (‘PartNo’; VarArray[900]), ‘Cost’);
Мәліметтер жиынтығымен жұмыс істеуге арналған негізгі компоненттер
DataControl панелі компонентерінің сипаттамасы (Сурет-2).
Сурет-2
DBEdit DBImage DBComboBox DBCtrlGrid
DBText DBMemo DBCheckBox
DBRichEdit
DBListBox
TDBText (мәліметтер жазылуы)
Арналуы. TLabel компонентімен аналогиялық TDBText компоненті жазбаның жеке өрісінің ішіндегісін көрсетуге мүмкіндік береді.
Құрылуы. Мәліметтер көзі DataSource қасиетінде көрсетіледі, қажет өріс - DataField қасиетінде.
TDBEdit (редакторлау өрісі) компоненті.
Арналуы. Компонент ағымдағы жазбаның жеке өрісінің мәнін редакторлауға мүмкіндік береді.
Құрылуы. Қолданылатын қасиеттер TDBText компонентінің қасиеттерінен ажыратылмайды. ReadOnly қосымша қасиеті мәліметтерді редакторлауға тыйым салуға мүмкіндік береді.
Қолданылуы. Бұл компонент TMaskEdit компонентінің ұрпағы болып табылады және ValidateEdit тәсілінің көмегімен енгізілген ақпараттың берілген маскаға сәкес келуін тексеруге мүмкіндік береді. Маска компонентпен байланысқан жазба өрісінің EditMask қасиеті арқылы қатынаулы болады, ал масканың негізінде құрылған мән EditText қасиетінде сақталады.
TDBMemo (көп жолдық өріс) компоненті.
Арналуы. Бұл компонентің көмегімен жазбаның екілік өрісінің іші бейнеленеді. (мысалы, Blob).
Құрылуы. Егер өрісте оның толық мазмұны (графика, мәтін) керек болса, AutoDisplay қасиетінің мәнін true деп қою керек.
Қолданылуы. LoadMemo тәсілі Blob өрісінің мазмұнын, егер ол мәтіндік мәліметтерді сақтайтыны белгілі болса, берілген компонентке тасымалдауға мүмкіндік береді.
TDBImage (бейне) компоненті.
Арналуы. TDBImage компонентінің көмегімен мәліметтер қорында сақталатын суреттерді экранға шығаруға болады.
Құрылуы.суреттер осы өрісте егер AutoDisplay қасиеті true мәніне ие болса, автоматты түрде бейнеленеді. Кері жағдайда суретті LoadMemo тәсілін шақыру арқылы жүктеуге болады. Ағымдағы жазбаның өрісінде берілген компонент дұрыс қарастыратын форматтағы (мысалы, BMP) бейне сақталады деп болжанады. Осы бейнені, мысалға, Picture қасиетін пайдаланып, көшіріп алуға болады.
Image1. Picture.Assign(DBImage1. Picture);
QuickDraw қасиетіне true мәнін меншіктеп, суретін экранға шығарылуын тездетеді, ал бұл үлкен жазбалар жиынтықтарын активті көру кезінде өте пайдалы. Бірақ осындай жағдайда бейненің сапасы төмендейді. Stretch қасиеті формадағы TDBImage компонентінің ағымдағы көлеміне бейнені сәйкестендіруге (сығуға және тартуға) мүмкіндік береді.
TDBListBox (мәліметтер тізімі) компоненті.
Арналуы және құрылуы. Бұл компонент тізімнен өрістің жаңа мәнін таңдауға арналған. Мүмкін болатын мәліметтер тізімі алдын-ала дацындаладыжәне Items қасиетіне енгізіледі (TStrings типі, жолдар массиві).
TDBComboBox (мәліметтердің тізімі бар өрісі компоненті.
Арналуы. TDBList компоненті сияқты осы компонент ашылатын мәндер тізімінен өрістердің жаңа мәндерін таңдауға, көрсетуге мүмкіндік береді. Енгізу аймағында мәтінді теру барысында тізімдегі қажет жазбаға тез жылжуға немесе онда жоқ мәнді тез енгізуге мүмкіндік бар.
Құрылуы мен қолданылуы. TComboBox компонентінен мұрағаттанған қасиеттерге қосымша TDBComboBox класында тізімдегі элементтердің көрсетілу әдісін анықтауға мүмкіндік беретін TComboBoxStyle типті Style қасиеті бар. Басқасында бұл компонент стандартты TComboBox компонентіне толығымен эквивалент.
TDBCheckBox (мәліметтер жалаушасы) компоненті.
Арналуы. Кесте өрісіне байланысқан және логикалық типті (Boolean) бар жалауша элементі көмегімен осы өрістің жағдайын бейнееуге және оның мәнін өзгертуге мүмкіндік бар. Осы компоненті туынды мәндердің екеуінің біреуне тең бола алатын өрістер үшін де қолдануға болады.
Құрылуы. Компонент “қосылған” болып саналатын мәндер тізімі ValueChecked мәтіндік қасиетінде беріледі. Элементтер нүктелі үтір арқылы атап көрсетіледі:
DBCheckBox1. ValueChecked: = ‘True; Yes’;
Сәйкесінше компонент “айырылған” деп саналатын мәндер тізімі ValueUnChecked қасиетінде беріледі:
DBCheckBox1. ValueUnChecked: = ‘False; No’;
Осы мәндер жазылған регистр ескерілмейді. TDBRadioGroup (мәліметтер айырып-қосқыштар тобы) компоненті.
Арналуы. Бұл компонент өрістер мәндерінің шектелген жиынтығын айқын түрде шығаруға арналған. Әрбір мәнге сәйкесінше топтың бір айырып-қосқышын қоюға болады.
Құрылуы. Айырып-қосқыштар атуларының тізімі Items (TStrings типті) қасиетіне енгізіледі. Қрістің оларға сәйкес келетін мәндері Values (TStrings типті) қасиетінде сақталады.
Компонентпен байланысқан өрістің ағымдағы мәніне қатынауды Value қасиеті арқалы алуға болады.
TDBRichEdit (форматтау өрісі) компоненті.
Арналуы. Компонент TRichEdit компонентінің барлық қасиеттерін мұрағаттайды және Blob екілік өрістердің мазмұндарын мәліметтер қорынан форматталған мәтін түрінде көрсетуге мүмкіндік береді.
Құрылуы мен қолданылуы. Компонент TDBMemo компоненті сияқты қолданылады.
TDBCtrlGrid (еркін форма) компоненті.
Арналуы. Компонент жазбалар кестесін (TDBGrid) еске салады, бірақ мәліметтерді қатал кестелік түрде емес, Data Controls (мәліметтерді басқару элементтері) панеліндегі таңдалған компоненттер жиынтығы көмегімен және туынды түрде көрсетуге мүмкіндік береді. Мысалы, бағандар санын еркін түрде беруге болады.
Құрылуы. Компонент формаға қойылған кезде, ол панельдер жиынтығы түрінде көрсетіледі, оның алғашқысы бос, ал басқалары штрихталған және көрнекілік үшін ғана келтірілген.
Бірінші панельде жазбаның нақты өрістерін бейнелеуге арналған компоненттерді орналастыру және оларды мәліметтер жиынтығының сәйкес өрістері мен DataField қасиеті арқылы байланыстыру қажет. Жиынтықтың атының өзі DataSource ұасиетіне автоматты енгізіледі.
Бағдарламаның орындалу барысында панельдің әрбіреуінде сәйкес объектілер көмегімен жеке жазбалар өрістерінің мәндері бейнеленеді. TDBCtrlGrid класының қасиеттері келесі кестеде келтірілген.
TDBCtrlGrid класының қасиеттері.
Қасиет
|
Арналуы
|
AllowDelete
|
Қолданушыағымдағы жазбаны жоя алатын болса, true мәніне ие
|
AllowInsert
|
Қолданушы жаңа жазбаны қоя алса, true мәніне ие
|
Canvas
|
Ағымдағы жазба үшін сурет салу аумағы (холст)
|
ColCount
|
Бағандар саны
|
EditMode
|
Берілген компонент жазбаны редакторлау, қосу немесе жою үшін қолданылатын болса, true мәніне ие
|
Orientation
|
Жазбалардың кесте ішінде көрсетілу тәртібі. Мүмкін мәндер – goVertical (жоғарыдан төмен), goHorizontal (солдан оңға)
|
PanelBorder
|
Панель шекараларының формасы
|
PanelCount
|
Әрбір панель үшін бір уақытта көрінетін жазбалар саны
|
PanelHeight
|
Әрбір панельдің биіктігі
|
PanelIndex
|
Панельдің тізімдік номері
|
PanelWidth
|
Әрбір панель ені
|
RowCount
|
Еркін форманың ішіндегі бір уақытта көрінетін панельдердің саны
|
SelectedColor
|
Мәліметтер жиынтықтағы ағымдағы жазбаның мазмұнын көрсететін панель үшін фондық түс
|
ShowFocus
|
Ағымдағы жазба айналасында фокусты белгілейтін тікбұрыш бейнеленетін болса true мәніне ие
|
Қолданылуы. Жазбадан жазбаға көшуді басқару үшін TDBNavigator компонентін қолдануға болады, сондайақ қажет әрекеттер
Procedure DoKey(Key: TDBCtrlGrid Key);
тәсілі көмегімен де жүзеге асырылады. Key параметрі нақты әрекеттердің біреуін анықтайды, мысалы: келесі панельге көшу (gkNextTab), кесте бірнешебағаннан тұрса, оның жақынырақ орналасқан панельге көшу (gkRight) және т.б.
TDBCtrlGrid компонентінің Canvas қасиеті бар болғандықтан, ол панельдің бейнесін өздігінен саоуға арналған OnPaintPanel оқиғасын өңдей алады.
ІІІ DBF, Paradox форматтарымен жұмыс жасау
Қазіргі кезде мәліметтер қорларымен жұмыс істейтін жаңа және перспективті формат XML, сондай-ақ өте жақсы ADO форматтарының бар болуына қарамастан көптеген бағдарламалаушылар DBF және Paradox форматтарын әлі де қолданады. Сондықтан оларды қарастырмай кетуге болмайды.
Paradox кестелерін құру
Paradox және DBF – бұл мәліметтер қорлары емес, кестелер. Егер Access- тің бір базасында бірнеше кестелер сақталынатын болса, Paradox пен DBF-те бір файлда тек бір кесте ғана сақталады. Сонымен қатар, индектер кестеден бөлек сақталынады, ал бұл белгілі бір кедергілерді туғыуы мүмкін.
Алғашқы мәліметтер қорын құру үшін Database Desktop жеке бағдарламасын жүктеу керек. Ол Сурет-3-те көрсетілген. Ол Delphi-дің жабдығына кіреді. Ашқаннан кейін келесі әрекеттерді орындау керек:
File/New/Table менюін таңдау;
Ашылған терезеде тізімнен Paradox7 таңдау;
ОК батырмасын басу.
Рет бойынша номер – Database Desktop оны автоматты түрде генерациялайды және оны өзгерту мүмкін емес;
FieldName – өріс аты. Осы жерде өрістерге тек ағылшын әріптермен бос орын қалдырмай аттарды қоюға болады;
Type - өрістің типі. Тышқанның оң жақ батырмасын шерткеннен кейін мүмкін болатын бүкіл өрістердің тізімі шығады, осы жерден керегін таңдай қажет;
Size – мөлшер. Бұл өрістің мөлшері. Өрістердің бүкіл типтерінің мөлшерлерін өзгертуге болмайды. Көпшілігінде ол қатаң түрде берілген. Мөлшер көбінесе жолдық типтер (alpha), бинарлық (binary) және т.б. өзгертіледі;
Key – кілт. Егер осы баған екі рет шертілген болса, онда ағымдағы өріс кілттік өріске айналады. Бұл үнсіздік бойынша кестенің кестенің бүкілі осы өріс бойынша сортталады дегенді білдіреді. Кілттік өрістер болып тек алғашқы өрістер ғана бола аады, яғни екінші өріс тек біріншімен ғана кілттік өріс бола алады. Кілттік өріссіз кестеге жаңа жазбаны енгізуге болмайды.
Мысал үшін, тапсырмаларды қабылдау – классикалық мысалын алайық. Ең бастысы бұл мәліметтер қорының құрылымын дұрыс елестету және құру. Біз қарастыратын жағдайда есеп келесі өрістер бойынша жүргізілсін:
Фамилия;
Аты;
Тегі;
Туған күні;
Туған жері;
Оқу түрі;
Үлгерімі;
Мекен-жайы.
О сы өрістерді жазғаннан кейін ат беріп сақтаймыз.
Сурет-3
Енді Пуск/Программы/Borland Delphi менюінен SQL Explorer бағдарламасын жүктеңіз (Сурет-4).
Осында кестенің әр түрлі директорияларына псевдонимдер (Alias) құрылады. Бұл псевдонимдер регистрде сақталады және одан кейін барлық бағдарламалар орындалғанда осы псевдонимдер бойыншакестенің директориясын тауып алып, мәліметтерге қатынау кезінде қолдануға жататын қажетті балық баптауларды оқи алады.
Жаңа ат құру үшін Object менюінен New пунктін таңдау қажет. Database driver name өрісі STANDART болуы қажет терезе ашылады. ОК батырмасын басамыз. Бұл жаңа Alias (аты) құрайды. Оны қажет атқа ауыстыруға болады. Біздің жағдайда STANDART2.
Терезенің оң жағында PATH жолына бару қажет. Директория таңдау терезесі ашылады. Құрылған кестелері бар директорияны тауып, ОК басылады.
Жасалғанның бәрін сақтау үшін Object менюінен Apply пункті таңдалады.
Енді кестелер дайын. Delphi-ді іске қосып Paradox кестелерімен жұмыс істейтін алғашқы бағдарламаны жазуға болады.
Жаңа жоба құрыңыз. Оған Data Access вкладкасынан DataSource компонентін, BDE вкладкасынан TTable компонентін қою керек. Бірінші DataSource үшін DataSet қасиетін Table1 деп қояйық. Енді Table1-дің келесі қасиеттерін өзгерту керек:
DatabaseName – STANDART2 қою керек (бұл SQL Explorer-де жасалған Alias);
TableName – tab.db. Бұл кестенің аты жолдың ашылатын тізімінен таңдалады;
Active – кестеге активизация жасау үшін мәні true деп қойылады.
Одан кейін Data Controls компоненттер палитрасынан DBGrid компонентін қойыңыз. DataSource қасиетінде біреуіне Datasource1 деп жазылады.
Енді бағдарламаны жүктеп, оның жұмыс істейтініне көз жеткізуге болады. Бірақ, бұл жердегі кесте тек қана экран бетіне шығып тұр.
Paradox мәліметтер қорымен жұмыс істейтін алғашқы қосымша дайын деп айтуға болады.
Сурет-4
Мәлімет қорының жасалу сатылары
Менің тақырыбым “Студенттердің мәлімет қорларын ұйымдастыру” деп аталады. Осы бағдарламаны жасау белгілі бір тапсырмалардың орындалуын көздейді. Ең біріншіден, бағдарламаның қажеттігі туралы айта кеткен жөн. Әрбір куратор өз тобы туралы мәлімет алу керек. Оларды реттеу, тез тауып алу және сурансы жасалу мақсатында осындай қормен жұмыс істейтін бағдарлама жобаланған. Мәліметтерді енгізу үшін Paradox кестелерін пайдаландым. Бағдарламаның жобалануы кезіндегі түрі 1-қосымшада көрсетілген. Жалпы жоба төрт формадан тұрады. Алғашқы формасына басқаі формалар тәуелді болып табылады. Басты формада орналасатын негізгі компоненттерді қарастырайық. Бұл формада негізінен пароль енгізетін компонентерден тұрады. Екінші форма меню қатарынан тұрады, яғни бұл жерден сіз өзінізге керек менюді таңдайсыз. Осы таңдағандардың ішінде ең бірінші мәліметтер болып табылады. Оның біз алдында қордың өзінің Database Desktop бағдарламасы арқылы құрылғанын туралы айтып кеткенбіз енді оны айтпай кетуге де болады. Себебі, қорлардың құрылу барысы жоғарғы бөлімдерде аталып көрсетілген. Сонымен, басты формаға, ең біріншіден бағдарламадағы басқару элементтерінің қормен байланысы үшін жауап беретін басты компонент TTable орнатылады. Осы жерде айта кететін бір жай: бағдарламадағы барлық класстар компоненттерінің атаулары үнсіздік бойынша қалдырылған. Сондықтан, TTable компонентінің Name қасиеті Table1. Формаға сондай-ақ, мәліметтер қорларымен жұмыс істеуге арналған DataSource және кестенің түрін келтіретін DBGrid компоненті орнатылады. Одан кейін кесте бойынша жылжуды жүзеге асыратын стандартты батырмалары бар Data Controls панелінен DBNavigator компонентін орнаттым. Осы қойылған компоненттердің қасиеттерін қолданушы интерфейсіне деген қатынасын ескере отырып және бағдарламаның қателіксіз жүктелуін көздеп өзгерттім. Сонымен қатар басты формада әр түрлі функцияларды атқаратын келесі басқару элементтері бар: 2 TCheckBox, 4 TButton, TEdit, TRadioGroup, TComboBox, TListBox және формадағы меню жолы үшін жауап беретін TMainMenu компоненті. Әрбір компоненттің 2-қосымшада келтірілген код бөлімінде анықталған орындайтын функциясы бар. Сонымен қатар, меню жолының Анықтама пунктің таңдау арқылы ашылатын үшінші формадан оның авторы туралы мағлұмат алуға болады. Бағдарламаның интерфесі қолданушылардың қажеттіліктерін ескере отырып жасалған.
50>
Достарыңызбен бөлісу: |