-
Модульдің формасында ауыспалы жолдық типті және оған 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 қайта ашыңыз. Бағдарлама ешқандай кедергісіз жұмыс жасауы керек.
Достарыңызбен бөлісу: |