Gehen wir mit Uwes Vorschlag noch etwas weiter und ignorieren den von haentschman:
Die Scripte werden als Dateien gespeichert und zur Laufzeit geladen. Hat den Vorteil, man muss bei Scriptänderungen nicht auch das Programm ändern. Man lädt einfach nur die Scripte und gut ist:
Delphi-Quellcode:
function TDMLSQLite.CreateTblHtml :String; // "ContentMasterData". ContentMasterData.
var SQLString: TStringList;
begin
SQLString := TStringList.Create;
SQLString.LoadFromFile('TblHtml.sql');
Result := SQLString.Text;
SQLString.Free;
Wenn man's noch weiter vereinfacht, dann übergibt man den Namen des Scriptes als Parameter und muss nicht mehr für jede Tabelle ... eine eigene Funktion erstellen.
SQL-Code:
-- Erstellscript für die Tabelle tbl_html
-- Scriptedate: tbl_html.sql
CREATE TABLE tbl_Html(
idHtml
INTEGER PRIMARY KEY AUTOINCREMENT
NOT NULL,
MenueCSS
INTEGER NOT NULL CHECK(MenueCSS>=0),
PageCSS
INTEGER NOT NULL CHECK(PageCSS>=0),
MenueID
INTEGER NOT NULL CHECK(MenueID>=0),
HTMLPage LONGTEXT
NOT NULL,
URL VARCHAR(45)
NOT NULL,
tbl_Javascript_idJavascript
INTEGER NOT NULL,
tbl_CSS_idCSS
INTEGER NOT NULL CHECK(tbl_CSS_idCSS>=0),
tblgalerie_Gallery_ID
INTEGER NOT NULL CHECK(tblgalerie_Gallery_ID>=0),
CONSTRAINT fk_tbl_Html_tbl_Javascript1
FOREIGN KEY(tbl_Javascript_idJavascript)
REFERENCES tbl_Javascript(idJavascript),
CONSTRAINT fk_tbl_Html_tbl_CSS1
FOREIGN KEY(tbl_CSS_idCSS)
REFERENCES tbl_CSS(idCSS)
CONSTRAINT fk_tbl_Html_tblgalerie1
FOREIGN KEY(tblgalerie_Gallery_ID)
REFERENCES tblgalerie(Gallery_ID)
);
Delphi-Quellcode:
function TDMLSQLite.CreateTbl(AScriptName : String) :String;
var SQLString: TStringList;
begin
if FileExists(AScriptName) then begin
SQLString := TStringList.Create;
SQLString.LoadFromFile(AScriptName);
Result := SQLString.Text;
SQLString.Free;
end else begin
MessageDlg(Format('Script nicht gefunden: %s',[AScriptName]),mtError,[mbOK],0);
end;
end;
Vorteil:
Funktionierende Scripte kann man nicht mehr versehentlich "verunstalten".
Scriptänderungen haben keine direkte Auswirkung auf das Kompilat des Programmes.