Қадам 1. МҚ мен динамикалық байланыс
Модульдің формасында ауыспалы жолдық типті және оған ConnectionString қасиетіндегі AdoQuery1 компонентасын меншіктейік.
Ол үшін 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;
……………………………………………………….
Мәтіннің жолдары басқадай қосылып тұрулары да мүмкін, ол негізінен провайдерлерге (сіз, МҚ мен байланысқан) байланысты.
МҚ – ның файылында ұйымдастырылған жол: Source=C:\Мои Документы\Иванов\BDMyWorld.mdb;
Жол Source= символының бірізділігінен басталады нүктелі үтірмен аяқталады. Айтылғанды жаңа бір бағдарлама ішіндегі бағдарламаны жасайтын, жолдардың қиылысуында және оны басқаға ауыстыруында қолданайық.
Директивадан кейін модуль формасына {$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;
……………………………………………………….
Тапсырма: Бағдарлама ішіндегі бағдарламалар алгоритімімен танысып, оларға комментарии жасаңыз.
Dialogs бетінен TOpenDialog компонентін формаға орналастырыңыз. Name қасиетіне dlgBD мағынасын беріңіз.
Енді төмендегі қара шрифтпен жазылғанды өндеуші 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;
Проект компиляциясын (CTRL+F9) орындаңыз. Егер де қате болмаса проекті сақтаңыз, меню қатарынан File, Close All таңдап бағдарламаның жұмысын тексеріңіз оны проводник арқылы жібересіз.
Бағдарлама дұрыс жұмыс істейтініне көз жеткізіңіз, файл BDMyWorld.mdb бағдарлама сақталған жерде тұрса. Ол үшін бір жерде Temp папкасын құрып оған BDMyWorld.mdb файлын және MyWorld.exe көшіріп алыңыз.
Temp папкасынан BDMyWorld.mdb файлын жойып тастап MyWorld.exe қайта жіберіңіз.
Осы терезеде өз папкаңызға барыңыз да BDMyWorld.mdb файлын тауып, «Открыть» батырмасын басыңыз және бағдарламаның дұрыс жұмыс істейтініне көз жеткізіңіз.
Бағдарламаны жауып оны проводник арқылы ашыңыз. Пайда болған диалогты терезеде «Отмена» батырмасын басыңыз, сол кезде экранда келесідей мәлімет шығуы керек:
11-сурет – Қателік туралы терезе
Енді Temp папкасына BDMyWorld.mdb файлын көшіріп алып, MyWorld.exe қайта ашыңыз. Бағдарлама ешқандай кедергісіз жұмыс жасауы керек.
Достарыңызбен бөлісу: |