PROGRAMIRANJE BAZA PODATAKA

  1. Nakon unosa zadatih komponenti naša forma dobiće sledeći izgled:

  

   2. Otvorićemo na nivou forme na događaju OnActivate proceduru čiji je naziv Ucitavanje_ forme i u nju ubaciti sledeći kod:

.
.
//--------Procedura ucitavanja forme-------------------
procedure TForm1.Ucitavanje_forme(Sender: TObject);
begin
Table1.DatabaseName:='c:\sredskol\vezbe\programiranje-2\delphi\baze4';
Table1.TableName:='UcenikA.DB';
Table1.Open;
Odustani.Visible:=False;
Upisi.Visible:=False;
If Table1.RecordCount = 0 Then
begin
Prvi.Visible:=False;
Zadnji.Visible:=False;
Prethodni.Visible:=False;
Sledeci.Visible:=False;
Brisi.Visible:=False;
Dodaj.Visible:=True;
Odustani.Visible:=True;
Upisi.Visible:=True;
end;
end;
.

Na početku ove proceduru otvorili smo našu tabelu tj. njeno svojstvo Active programski će biti postavljeno na True . Dugmad Odustani i Upisi postavićemo na nevidljiva. U slučaju ako u bazi nema upisan ni jedan podatak a što nam govori svojstvo RecordCount (broj upisanih slogova u bazu) tada ćemo postaviti nevidljivom dugmad: Prvi , Sledeci , Prethodni , Zadnji i Brisi tj. videće se samo dugme Dodaj .

 3. Klikom na taster Prvi i ubacićemo sledeći kod:

.
//--------Procedura pozicioniranja na prvi slog------------
procedure TForm1.PrviClick(Sender: TObject);
begin
Table1.First;
end;
.

 4. Klikom na taster Sledeci i ubacićemo sledeći kod:

.
//--------Procedura pozicioniranja na sledeci slog---------
procedure TForm1.SledeciClick(Sender: TObject);
begin
Table1.Next;
end;
.

 5. Klikom na taster Prethodni i ubacićemo sledeći kod:

.
//--------Procedura pozicioniranja na prethodni slog-------
procedure TForm1.PrethodniClick(Sender: TObject);
begin
Table1.Prior;
end;
.

 6. Klikom na taster Zadnji i ubacićemo sledeći kod:

.
//--------Procedura pozicioniranja na zadnji slog-------
procedure TForm1.ZadnjiClick(Sender: TObject);
begin
Table1.Last;
end;
.

 7. Klikom na taster Brisi ubacićemo sledeću proceduru:

.
//--------Procedura brisanja sloga ------------------------
procedure TForm1.BrisiClick(Sender: TObject);
begin
Table1.Delete;
end;
.

 Da bi računar tražio potvrdu brisanja sloga na događaj tabele BeforeDelete uneli smo proceduru Potvrda_brisanja čiji je kod sledeći:

.
//--------Potvrda brisanja-----------------------------
procedure TForm1.Potvrda_Brisanja(DataSet: TDataSet);
begin
if MessageDlg('Zelite brisanje?', mtConfirmation, mbYesNoCancel, 0) <> mrYes then
Abort;
end;
.

8. Klikom na taster Dodaj ubacićemo sledeću proceduru:

.
//--------Procedura dodavanja novog sloga u bazu-----------
procedure TForm1.DodajClick(Sender: TObject);
begin
With Table1 do
begin
Insert;
Prvi.Visible:=False;
Zadnji.Visible:=False;
Prethodni.Visible:=False;
Sledeci.Visible:=False;
Brisi.Visible:=False;
Odustani.Visible:=True;
Upisi.Visible:=True;
DBEdit1.SetFocus; DBEdit1.SelectAll;
end;
end;
.

Pozivom ovre proceduru pozivamo Insert metodu na našoj tabeli. Takođe će postati nevidljiva dugmad Prvi, Sledeci, Prethodni, Zadnji i Brisi , dok će postati vidljiva dugmad Odustani i Upisi . Takođe će se pozicionirati kursor na prvo polje unosa tj. redni broj učenika.

9. Klikom na taster Upisi ubacićemo sledeću proceduru:

.
//--------Procedura upisivanja novog sloga u bazu-----------
Procedure TForm1.UpisiClick(Sender: TObject);
begin
If Kontrola_ispravnosti Then
Begin
Table1.Post;
Prvi.Visible:=True;
Zadnji.Visible:=True;
Prethodni.Visible:=True;
Sledeci.Visible:=True;
Brisi.Visible:=True;
Odustani.Visible:=False;
Upisi.Visible:=False;
end;
end;
.

Na početku ove proceduru poziva se funkciji Kontrola_ispravnosti koja vraća True ako su polja dobro unesena inače vraća False a kod ove procedure je sledeći:

.
//--------Kontrola ispravnosti polja koja su unesena-----------
Function TForm1.Kontrola_ispravnosti():boolean;
Var uspeh, s: string;
i,gr: integer;
begin
s:=DBEdit1.Text;
val(s,i,gr);
If (gr <>0) Then begin
ShowMessage('Podatak za redni_broj_ucenika nije dobar');
DBEdit1.SetFocus; DBEdit1.SelectAll;
Result:=False;
exit;
end;
s:=DBEdit2.Text;
If s='' Then begin
ShowMessage('Prezime i ime ucenika prazno!');
DBEdit2.SetFocus; DBEdit2.SelectAll;
Result:=False;
exit;
end;
s:=DBEdit3.Text;
val(s,i,gr);
If (gr <>0) Then begin
ShowMessage('Podatak za uspeh nije dobar');
DBEdit3.SetFocus; DBEdit3.SelectAll;
Result:=False;
exit;
end;
If (i <1) or (i>5) Then begin
ShowMessage('Podatak za uspeh nije u granicama 1-5');
DBEdit3.SetFocus; DBEdit3.SelectAll;
Result:=False;
exit;
end;
s:=DBEdit4.Text;
If s='' Then begin
ShowMessage('Adresa ucenika prazna!');
DBEdit4.SetFocus; DBEdit4.SelectAll;
Result:=False;
exit;
end;
s:=DBCombobox1.Text;
If s='' Then begin
ShowMessage('Mesto ucenika prazno!');
DBComboBox1.SetFocus; DBComboBox1.SelectAll;
Result:=False;
exit;
end;
end;
.

Ako su polja dobro unešena naredbom Table1.Post taj slog biće upisan u bazu a takođe sva dugmad postaće vidljiva izuzev dugmadi Upisi i Odustani .

10. U slučaju ako smo ušli u unos novog sloga i želimo da odustanemo tada pozivamo proceduru koja se dobije klikom na dugme Odustani a njen je kod sledeći:

.
//--------Procedura odustajanja od novog sloga----------
procedure TForm1.OdustaniClick(Sender: TObject);
begin
Prvi.Visible:=True;
Zadnji.Visible:=True;
Prethodni.Visible:=True;
Sledeci.Visible:=True;
Brisi.Visible:=True;
Odustani.Visible:=False;
Upisi.Visible:=False;
Table1.First;
end;
.

U ovom slučaju sva dugmad postanu vidljiva izuzev dugmadi Upisi i Odustani.

11. Za učitavanje slike klikom na sliku poziva se procedura DBImage1Click čiji je kod sledeći:

.
//--------Procedura ucitavanja slike-------------------
procedure TForm1.DBImage1Click(Sender: TObject);
begin
If OPenPictureDialog1.Execute
then
begin
Table1.Edit;
DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FIlename);
Table1.Post;
end;
end;
.

12. Da bi napisali uspeh učenika opisno na njegovom događuju OnChange ubacili smo proceduru Odredi_uspeh čiji je kod sledeći:

.
//--------Procedura doredjivanja uspeha------------------
procedure TForm1.Odredi_uspeh(Sender: TObject);
Var uspeh: string;
begin
If DBEdit3.Text='1' Then uspeh:='Nedovoljan';
If DBEdit3.Text='2' Then uspeh:='Dovoljan ';
If DBEdit3.Text='3' Then uspeh:='Dobar ';
If DBEdit3.Text='4' Then uspeh:='Vrlodobar ';
If DBEdit3.Text='5' Then uspeh:='Odlican ';
Label9.Caption:=uspeh;
end;
.

13. Na događaj forme OnDestroy ubacili smo proceduru Kraj_programa čiji je kod sledeći:

.
//--------Zavrsetak programa------------------------------
procedure TForm1.Kraj_programa(Sender: TObject);
begin
Table1.Close;
end;
.

U ovoj proceduri smo zatvorili tabelu. Inače ako to ne bi uradili jedna grupa podataka tj. onih zadnjih unesenih ne bi bila trajno zapamćena u bazi.

Pozivom programa dobićemo sledeći ekran:

 Kompletan kod programa možete preuzeti ovde.



http://vojo.milanovic.org
© Copyright, 2006, Milanovic Vojo
All Rights Reserved.