Методические указания к практическим работам


Қадам 1. МҚ мен динамикалық байланыс



бет13/16
Дата06.07.2018
өлшемі1,52 Mb.
#47958
түріМетодические указания
1   ...   8   9   10   11   12   13   14   15   16

Қадам 1. МҚ мен динамикалық байланыс


  1. Модульдің формасында ауыспалы жолдық типті және оған ConnectionString қасиетіндегі AdoQuery1 компонентасын меншіктейік.

  2. Ол үшін Ctrl+C пернелерүйлесімділігі арқылы объектілер инспекторларының қасиетін көшіріп, содан кейін модульдің формасына қойыңыз. Жол ұзақ болғандықтан оны бірнеше жолдарға бөлу керек болады. Нәтижесінде сізде келесідей шығуы керек (қарамен белгіленген):

……………………………………………………….

var


fmMain: TfmMain;

NameSortField:string;Desc:boolean;



var ConStr:string =

'Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data ' +

'Source=C:\Мои Документы\Иванов\BDMyWorld.mdb;Mode=Share Deny None;Ext' +

'ended Properties="";Jet OLEDB:System database="";Jet OLEDB:Regis' +

'try Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type' +

'=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bu' +

'lk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Data' +

'base Password="";Jet OLEDB:Create System Database=False;Jet OLED' +

'B:Encrypt Database=False;Jet OLEDB:Don'#39't Copy Locale on Compact=' +

'False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:S' +

'FP=False' ;

implementation

uses SplshWnd, unRep;

……………………………………………………….

Мәтіннің жолдары басқадай қосылып тұрулары да мүмкін, ол негізінен провайдерлерге (сіз, МҚ мен байланысқан) байланысты.


  1. МҚ – ның файылында ұйымдастырылған жол: Source=C:\Мои Документы\Иванов\BDMyWorld.mdb;

  2. Жол Source= символының бірізділігінен басталады нүктелі үтірмен аяқталады. Айтылғанды жаңа бір бағдарлама ішіндегі бағдарламаны жасайтын, жолдардың қиылысуында және оны басқаға ауыстыруында қолданайық.

  3. Директивадан кейін модуль формасына {$R *.dfm} төменде берілген мәтінді енгізіңіз:

……………………………………………………….

{$R *.DFM}

procedure ChangeBasePath(var scon:string;sbase:string);

var j1,j2:integer;

begin

j1:=Pos('Data Source=',scon);

if j1>0 then begin

repeat

Inc(j1);

until scon[j1]='=';

Inc(j1);J2:=J1;

repeat

Inc(j2);

until scon[j2]=';';

Delete(scon,j1,j2-j1);

Insert(sbase,scon,j1);

end;

end;
function FindFileBD(nmFileBD:string;var scon:string; var dlg:TOpenDialog):string;

var sb:string;

begin

sb:= ExtractFilePath(ParamStr(0))+ nmFileBD;

if Not(FileExists(sb)) then

begin

//Настройка диалога:

dlg.Filter:='Файл ' +nmFileBD+'|'+nmFileBD;

dlg.Title :='Найдите файл базы данных !';

dlg.InitialDir:=ExtractFilePath(ParamStr(0));

if dlg.Execute then

begin

sb:=dlg.FileName;

ChangeBasePath(scon,sb);

end

else

begin

ShowMessage('Не найден файл БД:'+#13#10+sb+#13#10+'До свидания !');

sb:='';

end;

end;

Result:=sb;

if sb<>'' then ChangeBasePath(ConStr,sb);

end;

……………………………………………………….


Тапсырма: Бағдарлама ішіндегі бағдарламалар алгоритімімен танысып, оларға комментарии жасаңыз.


  1. Dialogs бетінен TOpenDialog компонентін формаға орналастырыңыз. Name қасиетіне dlgBD мағынасын беріңіз.

  2. Енді төмендегі қара шрифтпен жазылғанды өндеуші OnCreate формасына енгізіңіз:

procedure TfmMain.FormCreate(Sender: TObject);

var sbase:string;

begin


sbase:=FindFileBD('BDMyWorld.mdb',ConStr,dlgBD);

if sbase<>'' then

begin

ADOQuery1.Active :=False;

ADOQuery1.ConnectionString :=ConStr;

ADOQuery1.Active :=True;

NameSortField:=DBGrid1.Columns[0].FieldName;Desc:=False;



NewQuerySQL;

end

else Application.Terminate;

end;

  1. Проект компиляциясын (CTRL+F9) орындаңыз. Егер де қате болмаса проекті сақтаңыз, меню қатарынан File, Close All таңдап бағдарламаның жұмысын тексеріңіз оны проводник арқылы жібересіз.

  2. Бағдарлама дұрыс жұмыс істейтініне көз жеткізіңіз, файл BDMyWorld.mdb бағдарлама сақталған жерде тұрса. Ол үшін бір жерде Temp папкасын құрып оған BDMyWorld.mdb файлын және MyWorld.exe көшіріп алыңыз.

  3. Temp папкасынан BDMyWorld.mdb файлын жойып тастап MyWorld.exe қайта жіберіңіз.

  4. Осы терезеде өз папкаңызға барыңыз да BDMyWorld.mdb файлын тауып, «Открыть» батырмасын басыңыз және бағдарламаның дұрыс жұмыс істейтініне көз жеткізіңіз.

  5. Бағдарламаны жауып оны проводник арқылы ашыңыз. Пайда болған диалогты терезеде «Отмена» батырмасын басыңыз, сол кезде экранда келесідей мәлімет шығуы керек:



  1. Енді Temp папкасына BDMyWorld.mdb файлын көшіріп алып, MyWorld.exe қайта ашыңыз. Бағдарлама ешқандай кедергісіз жұмыс жасауы керек.

INI-файлдары (Теориялық мәлімдемелер)


МҚ – ын оқыту сыныбының басты жүйелік компьютеріне орналастыру керек деп жорамалдайық, ал басқа компьютерлерге тек қана бағдарламаны ғана қоямыз (файл – сервер әдісі).

Бағдарламаны ашу барысында ол әр дайым оқыту компьютерлерінде МҚ – ын іздеу жайлы диалогты терезесін шығарып отырады, қолданушыға ол кедергі туғызады.

Осы жағдайдын алдын алу шартына INI-файлын қолдану болып табылады.

Бұл файлдар көптеген ОЖ Windowsта басқа да бағдарламаларды құру жағдайда қолданылады.

Delphi – да INI-файлмен жұмыс «TIniFile» классының «inifiles» модулі арқылы жүзеге асады.

INI –файлдарында секциялар мен кілттер бар, оларды аттары арқылы табады. Windows папкасынан TELEPHON.INI мәліметтер файлын мысалға келтірейік:

[Providers]

NumProviders=2

NextProviderID=3

ProviderID0=1

ProviderFilename0=UNIMDM.TSP

ProviderID1=2

ProviderFilename1=WAN.TSP
[Provider1]

NumLines=1

NumPhones=0
[HandoffPriorities]

RequestMakeCall=DIALER.EXE

Құрылған файлда 3 секция - [Providers], [Provider1] және [HandoffPriorities] бар екендігін көреміз. Секция аттары тік төртбұрышты жақшаға алынған. Секциялар ішінде кілттер орналастырылған, әрбір жолдын теңсіздіктен кейін сол жағынан кілттің аты, ал оң жағынан оның мағынасы.



Негізгі TiniFile кластарына келесілер жатады:

Create

Ini-файлын оқу немесе жазу үшін ашу

Free

Ашылған Ini-файлын жабу

UpdateFile

Файлдан дискіге берілген мәліметтерді жаңарту

SectionExists

Берілген секцияда файлдын бар екендігін тексеру

ValueExists

Берілген секцияда кілттін файлда бар екендігін тексеру

ReadSections

Барлық секциялар бар екендігін алу

EraseSection

Берілген секцияны оның барлық кілттерімен жою

DeleteKey

Берілген секцияда кілтті жою

ReadSection

Берілген секцияның кілттерін алу

ReadSectionValues

Берілген секцияның барлық кілттерінің (аттарымен) мағынасын алу

ReadString

Жолдық мағынадан кілттер арқылы берілген секцияның оқу

ReadBool

Логикалық мағынадан кілттер арқылы берілген секцияның оқу

ReadDate

Кілт арқылы берілген секцияда күнді оқу

ReadDateTime

Кілт арқылы берілген секцияда күнді және уақытты оқу

ReadFloat

Кілт арқылы берілген секцияда анықталғанды оқу

ReadInteger

Кілт арқылы берілген секцияда бүтін мағынасын оқу

ReadTime

Кілт арқылы берілген секцияда уақытты оқу

WriteString

Кілт арқылы берілген секцияда (жаңару) жолдық мағынасын жазу

WriteBool

Логикалық жазбаны берілген секцияның кілтіне жазу

WriteDate

Күнді берілген секцияның кілтіне жазу

WriteDateTime

Уақыт пен күнді берілген секцияның кілтіне жазу

WriteFloat

Анықталғанды берілген секцияның кілтіне жазу

WriteInteger

Бүтін мағынаны берілген секцияның кілтіне жазу

WriteTime

Уақытты берілген секцияның кілтіне жазу


Достарыңызбен бөлісу:
1   ...   8   9   10   11   12   13   14   15   16




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет