unit Datenbank;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, DBCtrls, Grids, DBGrids, StdCtrls, ADODB,
DB, DBTables;
type
TForm6 =
class(TForm)
DBGrid1: TDBGrid;
Bt_zurueck: TButton;
Btn_Beenden: TButton;
ADOConnection1: TADOConnection;
DataSource1: TDataSource;
ADOQuery1: TADOQuery;
OpenDialog1: TOpenDialog;
Btn_newtable: TButton;
SaveDialog1: TSaveDialog;
Btn_newdatabase: TButton;
ADOQuery1Lufer: TStringField;
ADOTable1: TADOTable;
ADOTable1Adresse_Id: TAutoIncField;
ADOTable1Lufer: TWideStringField;
ADOTable1Ski: TWideStringField;
ADOTable1Wachs: TWideStringField;
ADOTable1Ort: TWideStringField;
ADOTable1TemperatrinC: TStringField;
ADOTable1Datum: TStringField;
ADOTable1Zeit: TStringField;
ADOTable1Lichtschrankenanzahl: TStringField;
ADOTable1Gesamtstreckeinm: TStringField;
ADOTable1Gesamtzeitins: TStringField;
ADOQuery1Ski: TStringField;
ADOQuery1Wachs: TStringField;
ADOQuery1Ort: TStringField;
ADOQuery1TemperaturinC: TStringField;
ADOQuery1Datum: TStringField;
ADOQuery1Zeit: TStringField;
ADOQuery1Lichtschrankenanzahl: TStringField;
ADOQuery1Gesamtstreckeinm: TStringField;
ADOQuery1Gesamtzeitins: TStringField;
procedure Bt_zurueckClick(Sender: TObject);
procedure Btn_BeendenClick(Sender: TObject);
procedure Btn_newtableClick(Sender: TObject);
procedure Btn_newdatabaseClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form6: TForm6;
implementation
uses Start_LS, Lichtschrankenabstand, Messanlage, Graph, ADOX_TLB;
{$R *.dfm}
// Beenden Button
procedure TForm6.Btn_BeendenClick(Sender: TObject);
begin
form5.close;
form2.close;
form4.close;
form3.Close;
close;
end;
procedure TForm6.Btn_newtableClick(Sender: TObject);
const
// Zeilenvorschub..
cCRLF = #13#10;
// DDL-Statement für Access angepaßt...
cCreateMessdaten = '
CREATE TABLE Messdaten(' + cCRLF
+ '
Adresse_Id counter,' + cCRLF
// AutoWert
+ '
Läufer varchar(8),' + cCRLF
// Text Länge 8
+ '
Ski varchar(8),' + cCRLF
+ '
Wachs varchar(8),' + cCRLF
+ '
Ort varchar(8),' + cCRLF
+ '
Temperatur in °C varchar(8),' + cCRLF
+ '
Datum varchar(4),' + cCRLF
+ '
Zeit varchar(4),' + cCRLF
+ '
Lichtschrankenanzahl varchar(3),' + cCRLF
+ '
Gesamtstrecke in m varchar(3),' + cCRLF
+ '
Gesamtzeit in s varchar(3))';
var
sDataSource:
String;
// ConnectionString
begin
// Datenbank auswählen
if OpenDialog1.Execute
then
begin
if ADOConnection1.Connected
then
ADOConnection1.Connected := False;
// Bestehende Datenbankanbindung trennen
// ConnectionString bestimmen
sDataSource := '
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + OpenDialog1.FileName + '
;Jet OLEDB:Engine Type=4';
// neuen ConnectionString in ADOConnection schreiben
ADOConnection1.ConnectionString := sDataSource;
// Datenbankanbindung herstellen
ADOConnection1.Connected := True;
try
// DDL-Statement in Property SQL schreiben
ADOQuery1.SQL.Text := cCreateMessdaten;
// DDL-Statement ausführen...
ADOQuery1.ExecSQL;
// DML-Statement zur Anzeige der Tabellendaten in die Property SQL schreiben
ADOQuery1.SQL.Text := '
SELECT * FROM Messdaten';
// DML-Statement ausführen...
ADOQuery1.Open;
except
// xyz
else
// Fehlermeldung ...
MessageDlg(Format('
FEHLER!%sDie Tabelle Messdaten konnte nicht angelegt werden!', [#13#10]), mtError, [mbCancel], 0);
end;
end;
end;
// Zurück Button
procedure TForm6.Bt_zurueckClick(Sender: TObject);
begin
close
end;
procedure TForm6.FormCreate(Sender: TObject);
begin
ADOConnection1.Open;
end;
procedure TForm6.Btn_newdatabaseClick(Sender: TObject);
var
sDataSource:
String;
// DB ConnectionString
ADOXCatalog: TCatalog;
begin
if SaveDialog1.Execute
then
begin
if not FileExists(SaveDialog1.FileName)
then
begin
ADOXCatalog := TCatalog.Create(
nil);
// den Dateinamen gibt es noch nicht: Neu anlegen
// ConnectionString erzeugen
sDataSource := '
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + SaveDialog1.FileName + '
;Jet OLEDB:Engine Type=5';
try
// mit dieser Methode der Klasse TADOXCatalog wird die neue Datenbank angelegt
ADOXCatalog.Create1(sDataSource);
// Erfolgsmeldung ausgeben...
MessageDlg(Format('
ERFOLG!%sDie neue Datenbank%s%s%swurde angelegt!', [#13#10, #13#10, SaveDialog1.FileName, #13#10]), mtInformation, [mbOK], 0);
except
//
else
// Die Neuanlage hat nicht geklappt: Fehlermeldung ausgeben.
MessageDlg(Format('
FEHLER!%sDie neue Datenbank%s%s%skonnte nicht anglegt werden...', [#13#10, #13#10, SaveDialog1.FileName, #13#10]), mtError, [mbCancel], 0);
end;
end
else
begin
// Fehlermeldung ausgeben, weil eine entsprechende Datenbank bereits existiert.
MessageDlg(Format('
Eine Datenbank mit dem Namen%s%s%sexistiert bereits!', [#13#10, SaveDialog1.FileName, #13#10]), mtInformation, [mbOK], 0);
end;
end;
end;
end.