Einfache Datenbanken mit MyBase
Zur Laufzeit
Tabelle zur Laufzeit erzeugen
Wenn man nicht, wie es bei unserem Beispiel nun der Fall wäre, eine leere Tabellendatei mit ausliefern will, sondern diese erst erzeugt werden soll, wenn das Programm ausgeführt wird, ist folgender Code zu verwenden:
procedure TForm1.FormCreate(Sender: TObject); begin ClientDataSet1.FileName := ExtractFilePath(ParamStr(0))+'test.xml'; if FileExists(ClientDataSet1.FileName) then ClientDataSet1.LoadFromFile(ClientDataSet1.FileName) else ClientDataSet1.CreateDataSet; end;
Der Code wurde hier im OnCreate-Ereignis des Hauptfensters eingebaut, so dass er bei jedem Programmstart ausgeführt wird. Deshalb muss auch geprüft werden, ob die Datei bereits existiert. Denn sie soll ja nur neu angelegt werden, wenn es sie noch nicht gibt.
Tabellenstruktur zur Laufzeit definieren
Selbstverständlich kann man auch das, was wir ganz am Anfang von Hand in den Feld-Editor eingegeben haben, zur Laufzeit vornehmen. Wenn also ein ClientDataSet mit komplett leerem Feld-Editor verwendet wird, kann man diesen so füllen:
procedure TForm1.FormCreate(Sender: TObject); begin ClientDataSet1.FileName := ExtractFilePath(ParamStr(0))+'test.xml'; if FileExists(ClientDataSet1.FileName) then ClientDataSet1.Open else begin with ClientDataSet1.FieldDefs do begin Clear; Add('ID', ftAutoInc, 0, true); Add('Name', ftString, 40); end; ClientDataSet1.CreateDataSet; end; end;
Der Code ist ähnlich dem im obigen Abschnitt, nur dass noch die Feld-Definitionen eingefügt werden. Dies geschieht genauso, wie es auch bei TTable der Fall wäre.
Auf Daten zur Laufzeit zugreifen
Innerhalb eines ClientDataSet lässt sich (wie bei TTable) mit First, Prior, Next und Last navigieren und mit Locate suchen. Auf einzelne Werte kann man über FieldByName oder über die Value-Eigenschaft der Feldobjekte zugreifen. Da dies keine Besonderheiten von MyBase sind, sei an dieser Stelle auf das Tutorial Datenbanken für Fortgeschrittene verwiesen, in dem diese Sachverhalte erklärt werden.