Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Neuling will Accesdatenbank anlegen (https://www.delphipraxis.net/116695-neuling-will-accesdatenbank-anlegen.html)

Dark Angel 4. Jul 2008 12:59


Neuling will Accesdatenbank anlegen
 
Hallo alle zusammen,

ich versuche set zwei Tageneine Access-Datenbank anzulgen und komm nur sehr mühdsam voran.

Mittlerweile bin ich mir gar nicht so sicher ob das so geht wie ich es will. Ich habe in meinem Programm einige Daten (Namen, Ort, Datum und Werte die vom Programm berechnet werden), diese will ich mit Klick auf einen Button ('Daten speichern') in eine Accessdatei speichern um sie später ansehen zu können.
Was ich jetzt bei meiner suche nach Hilfen gesehen hab ist, dass ich dann die Datenbank auch im Programm anzeigen lassen kann, das wäre evtl. auch noch schön wenn das bei mir ginge, dann könnte ich daraus daten weiterverwenden in meinem Programm.

Ich habs bereits geschafft die Datei *.accdb anzulegen, und jetzt würd ich gern die Spalten beschriften und über den BUtton daten in die accessdatei eingeben. Bei jedem klick in eine neue Zeile, wenn das geht.

Ich hoffe ihr könnt mir weiterhelfen

Danke

Mit freundlichen Grüßen
Markus

Lill Jens 4. Jul 2008 13:24

Re: Neuling will Accesdatenbank anlegen
 
Hast du schon einmal mit Datenbank gearbeitet?

Ich würde dir empfehlen dir das mal anzuschauen Klick mich

Dark Angel 4. Jul 2008 13:52

Re: Neuling will Accesdatenbank anlegen
 
Nein, ich hab noch nie mit Datenbanken in Verbindung mit Delphi gearbeitet, aber in Delphi kenn ich mich einigermaßen aus und ich dachte das kann ja nicht so schwer sein ein paar Daten ind die Tabelle der Accessdatenbank zu schreiben.

Dieses Tutorial kenn ich schon, hab ich mir auch durchgelesen aber wirklich schlauern bin ich jetzt nicht und irgendwie ist dass auch nicht das was ich machen will.

Dark Angel 4. Jul 2008 17:12

Re: Neuling will Accesdatenbank anlegen
 
Um es nochmal deutlicher zu sagen, ich kann eine Datenbank erstellen, aber ich will dass die sich mit der accessdatei aktuallisiert. Also wenn ich das delphi programm lade soll das DBgrid die daten schon haben.

und zweitens will ich per buttonklick eine weitere zeile in die datenbank/dbgrid eintragen.


Wie geht das???

omata 4. Jul 2008 17:29

Re: Neuling will Accesdatenbank anlegen
 
klick

Dark Angel 4. Jul 2008 18:04

Re: Neuling will Accesdatenbank anlegen
 
@omata: tut mir leid aba ich weiß nicht wie mir dieser link helfen soll.

marabu 4. Jul 2008 18:18

Re: Neuling will Accesdatenbank anlegen
 
Hallo Markus,

welche Delphi-Version verwendest du?
Wie hast du denn deine Datenbank erzeugt? In welchem Format?
Mit welchen Komponenten greifst du auf die Daten zu?
Kennst du den Unterschied zwischen Datenbank und Tabelle?
Weißt du was unter Normalisierung zu verstehen ist?
Hast du eine Vorstellung von Primary, Foreign und Candidate Keys?
Gibt es schon etwas Code, den du zeigen kannst?

Freundliche Grüße

Dark Angel 5. Jul 2008 02:10

Re: Neuling will Accesdatenbank anlegen
 
@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.

rotfc 5. Jul 2008 02:46

Re: Neuling will Accesdatenbank anlegen
 
Das Anlegen von Datenbanken (*.mdb) mit Access ist außerordentlich einfach.

Nachdem man die *.mdb-Datei "erstellt" hat, fängt der Datenbankspaß erst an!

Access speichert die Daten in Tabellen (mindestens einer).

Die Tabelle(n) muß man in Access "entwerfen", d.h. man muß die Spaltenüberschriften und den Spalteninhaltstyp der Daten (Text, Zahl, Datum usw.) festlegen.

Erst nachdem die Tabelle(n) entworfen und gespeichert wurde, kann man die Tabelle(n) mit Daten zupflastern...

Das sollte bereits bekannt gewesen sein ;-)

Dark Angel 5. Jul 2008 08:39

Re: Neuling will Accesdatenbank anlegen
 
ja das hört sich mal plausibel an und wie geht das "Entwerfen" einer Datenbank?


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:15 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz