Einzelnen Beitrag anzeigen

Dark Angel
(Gast)

n/a Beiträge
 
#8

Re: Neuling will Accesdatenbank anlegen

  Alt 5. Jul 2008, 02:10
@marabu
Ich verwende Delphi 2007.
Tja wie hab ich meine Datenbank erstellt...so wies im Tutorial stand ...in Delphi mit dataSource, Query, Connection, usw.
Das heißt glaub ich ADO.
Zugreifen?? Noch nicht klappt ja ned.
Also den Unterschied kenn ich wohl nicht so gut, ich wollte eigentlich nur eine DAtenbank erstellen, weil ich gern eine "Tabelle" in Access haben will anstatt in Excel.
Die Begriffe kenn ich alles nicht.
Code von mir kann ich zeigen, logo.


Delphi-Quellcode:
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.
ich weiß ja nicht ob das jmd hilft mir zu helfen aber gut, bitte.
  Mit Zitat antworten Zitat