Professional Documents
Culture Documents
Die A Tot Z Van Databasisprogrammeringfinaal
Die A Tot Z Van Databasisprogrammeringfinaal
ʼn Databasis word gebruik om data in te stoor. ʼn Databasislêer se uitbreiding is accdb en kan uit verskillende
tabelle bestaan. ʼn Tabel bestaan uit verskillende rekords. ʼn Rekord bestaan uit verskillende velde. Voorbeelde
van velde is naam, van ens.
ʼn Primêre sleutel is ʼn unieke veld wat ʼn rekord identifiseer. Dit is bv. ʼn toelatingskode, rekeningnommer of ID-
nommer. Die primêre sleutel moet altyd ingevul word. Daar mag GEEN rekords wees met dieselfde primêre
sleutel nie.
Koppeling van ʼn databasis in Access aan Delphi
Die volgende stappe koppel ʼn databasis in Access aan Delphi. ʼn Datamodule is ʼn aparte eenheid (unit) waar
die komponente om die databasis in Access aan
Delphi te koppel, gestoor is. Die voordeel
hiervan is dat jy die datamodule-eenheid by
enige program kan voeg.
Maak ʼn nuwe Datamodule: File | New | Other
Files | Data Module. Stoor die datamodule as
dmOnderwerp_u en herbenoem die
datamodule na dmOnderwerp.
Plaas drie komponente in die datamodule:
ADOConnection1, ADOTable1 en DataSource1.
Volg nou die instruksies
om die komponente op te
stel.
ADOConnection1:
Hierdie konneksie voorsien ʼn koppeling tussen die databasis en die Delphi-projek.
Herbenoem as conOnderwerp (Name). Gaan na Connectionstring-eienskap. Kliek op
die drie kolletjies by Build. Kies Microsoft Jet 4.0 OLE DB Provider vir ʼn databasis wat in .mdb-formaat gestoor
is. Vir .accdb uitbereiding Kies Microsoft Office 12.0 Access Database Engine. Kliek op die Next-knoppie, kies
die databasis waarmee jy gaan werk. Kies by Advanced Read/Write. Kliek OK, OK. Stel die Login prompt na
false.
ADOTable1: Hierdie komponent verteenwoordig ʼn tabel van die gekoppelde databasis. Jy kan dit net aan een
tabel in die databasis koppel. Jy kies ook die tabel.
Herbenoem as tblOnderwerp. Stel die Connection-eienskap na die ADOConnection1 (conOnderwerp). Kies
dan by TableName die tabel in Access waarmee jy gaan werk. Stel die Active-eienskap na true.
DataSource1: Hierdie komponent voorsien ʼn skakel tussen die ADOtabel en die databasis-tabel.
Herbenoem as drsOnderwerp. Kies die Dataset-eienskap en verander na die ADOTable1 (tblOnderwerp).
Skep ʼn gewone Delphi-program en stoor die program. Voeg die datamodule-eenheid by die unit-lêers in.
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, dmOnderwerp_u, ExtCtrls, DBCtrls, Grids, DBGrids, StdCtrls, Mask;
DBGRid: Hierdie komponent word gebruik om die data in die databasis-tabel te besigtig. Herbenoem as
dbgOnderwerp. Stel die Datasource-eienskap na dmOnderwerp.drsOnderwerp. Die data behoort nou in die
DBGrid te vertoon. Indien nie, maak net seker die ADOTable1 se Active-eienskap is op True gestel.
1
DBEdits: Jy kan hierdie komponent aan ʼn veld in ʼn databasis koppel. Die veld van die rekord waar die
databasismerker is (swart driehoekie), sal vertoon. Plaas die komponent op die Delphi-vorm. Stel die
DataSource-eienskap na dmOnderwerp.drsOnderwerp. Kies die databasisveld by DataField. Gebruik det as
afkorting vir DBEdits, m.a.w. detTotalNumber.
DBNavigator: Hierdie komponent werk direk met die databasis. Jy hoef nie enige kode te skryf nie. Hierdie
kan jy in jou PAT-taak gebruik, maar is nie vir eksamendoeleindes nie. Koppel die DBNavigator aan die
databasis deur die Datasource-eienskap na dmOnderwerp.drsOnderwerp te stel.
Jy kan ook by VisibleButtons kies watter knoppies jy wil vertoon. Kyk op bladsy 208 in Delphi IT isgr8! @
Grade 11 vir die verduideliking van elke knoppie. Die eerste vier staan ook bekend as die navigasie knopppies
(nr 1 – heel eerste rekord, nr 2 – een terug, nr 3 – volgende rekord, nr 4 – laaste rekord).
Foute met databasiskoppeling
Okei, kom ons kyk…….
Juffrou my databasis wil nie in
die DBGrid vertoon nie.
Maak seker die Datamodule-eenheid (dmOnderwerp_u) is by die uses gedeelte in die Delphi-toepassing
gevoeg.
Maak seker jy het die Active-eienskap van die ADOTable1 na true verander.
Gaan deur al die konneksies en maak seker jy het alles reg gedoen.
Maak seker jy het nie per ongeluk ʼn ander eienskap van ʼn komponent verander nie.
Delphi-kodering met Databasisse
Die skryf van kode in Delphi om met die databasis te werk, is logies. Dink net mooi wat jy moet doen. Dit is
baie belangrik om te weet waar die databasismerker is (swart driehoekie).
2
Die Datamodule se naam moet voor die tabel geplaas word. Gebruik die With-stelling. Indien jy dit nie gebruik
nie, moet jy voor elke tblOnderwerp, die dataModule se naam plaas bv. dmOnderwerp.tblOnderwerp.open. Dit
is die Datamodule se naam nie die unit-lêer bv dmOnderwerp_u nie. Die tabel is die Naam (Name) in die
ADOTable1-komponent. Jy sal vinnig sien of jy die regte name gebruik het, die opsies wat jy kan kies kom op
ʼn aftrek-kieslys.
With dmOnderwerp do
begin
tblOnderwerp.open;
end;
Die volgende Delphi-kode kan gebruik word.
Delphi-kode Betekenis
While not tblData.eof do Terwyl dit nog nie die einde van die databasislêer is nie……
Handige wenk: Maak ʼn rugsteun van jou databasis-tabel voor jy begin kode skryf. Indien jy per ongeluk al die
data uitvee, het jy ʼn kopie. Dit is ook goeie gebruik om kommentaar in te sit, byvoorbeeld watter end is vir
watter kode. Sien die volgende voorbeeld.
Dit is dikwels nodig om rekord vir rekord deur die databasis-tabel te gaan. Indien jy nie ʼn next invoeg nie, gaan
jy ʼn oneindige lus kry, omdat die databasismerker aan die begin van die tabel is en dan nie aanbeweeg nie.
Die einde van die lêer (not eof) word dus nooit bereik nie. Plaas dadelik ʼn begin en end as jy die While-stelling
invoeg.
3
Gaan rekord vir rekord deur die databasis
With dmOnderwerp do
Ek hoop hulle onthou
begin van next. Shame, as
hulle vergeet dan
tblOnderwerp.open;
sukkel hulle want hulle
..tblOnderwerp.first; weet nie wat aangaan
nie!
While not tblOnderwerp.eof do
begin
if tblData['Username'] = '123' then showmessage('Korrek');
tblOnderwerp.next;
..end;// end While
4
Voeg ʼn rekord by waarvan die primêre sleutel outomaties gegeneer word
procedure TfrmDatabasis.btnVoegbyClick(Sender: TObject);
var
iGroot:integer;
begin
with dmGraad11IT do
begin
tblGraad11IT.Open;
tblGraad11IT.First;
iGroot := 0;
while not tblGraad11IT.eof do
begin
if strtoint(tblGraad11IT['Regnr']) >iGroot then
iGroot := strtoint(tblGraad11IT['Regnr']);
tblGraad11IT.Next;
end;
iGroot := iGroot + 1;
tblGraad11IT.Insert;
tblGraad11IT['Regnr'] := inttostr(iGroot);
tblGraad11IT[ʼnaam'] := inputbox('Wat is die naam?','','');
tblGraad11IT['Van'] := inputbox('Wat is die van?','','');
tblGraad11IT.Post;
end;
end;
5
Verander ʼn spesifieke rekord
procedure TfrmDatabasis.btnVeranderClick(Sender: TObject);
begin
with dmGraad11IT do
begin
tblGraad11IT.Open;
tblGraad11IT.First;
while not tblGraad11IT.eof do
begin
if (tblGraad11IT['Usenaam'] = '2168073’
then
begin
tblGraad11IT.edit;
tblGraad11IT['Sleutel']:='K';
tblGraad11IT.post;
end;
tblGraad11IT.Next;
end;
end; // end with
end;
6
Bepaal die gemiddeld
procedure TfrmMusic.btnAverageClick(Sender: TObject);
var
iTotaal:integer;
rGemiddeld:real;
begin
with dmMusic do
begin
tblMusic.Open;
tblMusic.First;
iTotaal := 0;
while not tblMusic.Eof do
begin
iTotaal := iTotaal + tblMusic[ʼnumberSold'];
tblMusic.Next;
end; // end while
rGemiddeld := iTotaal/tblMusic.RecordCount;
edtAverage.Text := floattostrf(rGemiddeld,fffixed,7,2);
end;// end with
end;