![]() |
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 |
Re: Neuling will Accesdatenbank anlegen
Hast du schon einmal mit Datenbank gearbeitet?
Ich würde dir empfehlen dir das mal anzuschauen ![]() |
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. |
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??? |
Re: Neuling will Accesdatenbank anlegen
|
Re: Neuling will Accesdatenbank anlegen
@omata: tut mir leid aba ich weiß nicht wie mir dieser link helfen soll.
|
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 |
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:
ich weiß ja nicht ob das jmd hilft mir zu helfen aber gut, bitte.
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. |
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 ;-) |
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 20:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz