Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Datensätze speichern in einer Datenbank (https://www.delphipraxis.net/160194-datensaetze-speichern-einer-datenbank.html)

Kleine 2. Mai 2011 08:08

Datensätze speichern in einer Datenbank
 
Hallo :)
Ich benutze delphi2009 und habe ein kleines Adressbuch programmiert.
Jetzt sollen die eingertagenden Werte aber in einer Datenbanke gespeichert werden. Ich habe keine Ahnung wie das funktionieren soll und bin totaler Anfänger in Delphi.
Wäre nett wenn ihr mir ein paar tipps geben könntet :)

LG Kleine (:

DeddyH 2. Mai 2011 08:12

AW: Datensätze speichern in einer Datenbank
 
Schau einmal hier: http://www.delphi-treff.de/tutorials/datenbanken/

Kleine 2. Mai 2011 08:15

AW: Datensätze speichern in einer Datenbank
 
ja da hatte ich auch schon geschaut.
So peinlich das jetzt aber auch ist, ich komm bei der 2.Seite schon nicht weiter
Zitat:

Das Grundgerüst der Datei erstellen wir mit der Datenbankoberfläche. Diese lässt sich von Delphi aus über das Tools-Menü öffnen.

Aus Datenbanksicht wird eine solche strukturierte Datei "Tabelle" genannt. Sie besteht aus mehreren Spalten, die jeweils einen anderen Wert enthalten (z.B. Name, Vorname usw.) und mehreren Zeilen (=Datensätzen), für jede Adresse eine.

Wie komm ich dahin bzw wie kann ich das öffnen? :|

DeddyH 2. Mai 2011 08:18

AW: Datensätze speichern in einer Datenbank
 
Na gut, IIRC ist die Datenbankoberfläche Teil der BDE, welche wohl standardmäßig aus gutem Grund nicht mehr automatisch mit installiert wird, da sie hoffnungslos veraltet ist. Welche Datenbank sollt Ihr denn verwenden und wie ist Euer Kenntnisstand bzgl. Datenbanken allgemein?

Kleine 2. Mai 2011 09:20

AW: Datensätze speichern in einer Datenbank
 
Also ich sollte jetzt Advantage Data Architect benutzen.
Versuch da jetzt mal ein bischen rumzutüdeln.
Mir qualmt der Kopf :D

DeddyH 2. Mai 2011 09:23

AW: Datensätze speichern in einer Datenbank
 
Zu Advantage kann ich leider nicht viel sagen, ich habe vorletztes Jahr eine Entwicklerlizenz bekommen, diese aber noch nicht wirklich intensiv ausprobiert. Aber zu ADS-spezifischen Dingen kann Dir sicherlich der User joachimd weiterhelfen.

joachimd 2. Mai 2011 09:42

AW: Datensätze speichern in einer Datenbank
 
Zitat:

Zitat von Kleine (Beitrag 1098233)
Also ich sollte jetzt Advantage Data Architect benutzen.

Des Englischen mächtig? Getting Started for Delphi Developers

Kleine 2. Mai 2011 10:35

AW: Datensätze speichern in einer Datenbank
 
Liste der Anhänge anzeigen (Anzahl: 1)
ich hab folgendes Problem, irgentwie schreibt er die datensätze nicht in das Grid, und ich hab keine ahnung voran das liegen könnte :|

DeddyH 2. Mai 2011 10:38

AW: Datensätze speichern in einer Datenbank
 
Stehen die Werte denn in der Datenbank? Falls ja, aktualisier einmal das Dataset (Query oder Table).

Kleine 2. Mai 2011 10:44

AW: Datensätze speichern in einer Datenbank
 
ich hab ja werte in die datenbank eingetragen und das mit dem akualisierem bringt nichts ..

DeddyH 2. Mai 2011 10:46

AW: Datensätze speichern in einer Datenbank
 
Siehst Du die Werte denn auch, wenn Du mit einem Datenbankbetrachter (ich vermute, bei Deiner AD Architect ist einer dabei) in die DB schaust? Evtl. sind da Transaktionen noch nicht abgeschlossen oder etwas in der Art.

Kleine 2. Mai 2011 10:48

AW: Datensätze speichern in einer Datenbank
 
doch ich sehe die werte im datenbankbetrachter, deswegen versteh ich es nich.
ich muss anscheinden etwas bei der verbindung mit delphi übersehen haben, aber ich finde es nicht, deswegen dachte ich vielleicht findet ein aussenstehender den fehler :|

DeddyH 2. Mai 2011 10:51

AW: Datensätze speichern in einer Datenbank
 
Moment, siehst Du nur keine Aktualisierungen oder überhaupt keine Daten?

Kleine 2. Mai 2011 10:55

AW: Datensätze speichern in einer Datenbank
 
im programm von ads seh ich die werte, die ich dort eingetragen hábe. Aber im Programm das mit der Datenbank verbunden sein soll, wird in dem grid nichts angezeigt.

DeddyH 2. Mai 2011 10:57

AW: Datensätze speichern in einer Datenbank
 
Ach so. Du brauchst ein TDataset (z.B. eine Table oder Query), eine TDataSource und Dein Grid. In der Datasource stellst Du im OI als Dataset Dein Dataset ein und beim Grid unter Datasource Deine Datasource. Anschließend alles auf active setzen, und die Daten sollten im Grid dargestellt werden.

Kleine 2. Mai 2011 11:29

AW: Datensätze speichern in einer Datenbank
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hab den fehler gefunden :)

Nu hab ich aber folgendes Problem:
Er soll eigentlich den Datensatz, den man einträgt, wenn man auf neu geht in das grid speichern bzw zu datenbank hinzufügen.

DeddyH 2. Mai 2011 12:56

AW: Datensätze speichern in einer Datenbank
 
Poste doch einfach den relevanten Quelltext zum Speichern, zumindest ich habe nicht viel Lust, mir jedesmal das ganze Projekt herunterzuladen und darin zu suchen.

Kleine 2. Mai 2011 13:01

AW: Datensätze speichern in einer Datenbank
 
Delphi-Quellcode:
procedure TFormMain.Neu1Click(Sender: TObject);        // Beim Klicken auf Neu ober in der Leiste
var
  FormAdresse : TFormAdresse ;

  kontaktdaten : tKontaktdaten;
begin
  formAdresse := TFormAdresse.Create( Self );          // Es wird wieder das Formular Adresse erstellt

  formAdresse.Adresse := tAdresse.Create ; ;

  if formadresse.ShowModal = mrOK then                 // Wenn OK geklickt wurde, dann ..
  begin
    ShowMessage ( 'Die Werte wurden gespeichert' );    // Wird dieser Text ausgegeben und ..
    Adressen.Add( FormAdresse.Adresse ) ;              // Die eingetragenden Daten werden in der TList Adressen abgespeichert
    tbAdressen.Insert;
    tbAdressenCreate;
    tbAdressen.Post ;
  end
  else                                                 // Ansonsten..
    ShowMessage ( 'Die Aktion wurde abgebrochen' ) ;   // wird diese Meldung ausgegeben


  RefreshList ;           // AdresseListBox wird aktualisiert und somit wird der neue Datensatz eingetragen

  formadresse.Release ;   // Gibt den Speicher im Formular Adresse wieder frei

end;
procedure TFormMain.tbAdressenCreate;
begin

  tbAdressen.FieldByName('ID').AsInteger := adresse.id;
  tbAdressen.FieldByName('Anrede').AsString := adresse.Anrede;
  tbAdressen.FieldByName('Nachname').AsString := adresse.Nachname;
  tbAdressen.FieldByName('Vorname').AsString := adresse.Vorname;
  tbAdressen.FieldByName('Strasse').AsString := adresse.Strasse;
  tbAdressen.FieldByName('PLZ').AsInteger := adresse.PLZ;
  tbAdressen.FieldByName('Ort').AsString := adresse.Ort;
end;

DeddyH 2. Mai 2011 13:04

AW: Datensätze speichern in einer Datenbank
 
Hast Du einmal in tbAdressenCreate (blöder Name übrigens, das klingt eher nach einem Konstruktor) einen Haltepunkt gesetzt und nachgesehen, was an die Felder übergeben wird? An Deiner Stelle würde ich das aber sowieso ganz anders handhaben: eine Methode AddAdresse, innerhalb derer der komplette Code zum Eintragen in die DB steht, inkl. Insert und Post.

Kleine 2. Mai 2011 13:07

AW: Datensätze speichern in einer Datenbank
 
ich hab nachgeschaut, anscheinend ist adresse = nil doch im nebenformular werden die informationen aus den editfeldern in genau diesen variablen gespeichert und das bevor er durch tbAdressen.Insert läuft.
das mit der methode ist eine gute idee.
Danke

DeddyH 2. Mai 2011 13:22

AW: Datensätze speichern in einer Datenbank
 
Naja,
Zitat:

Delphi-Quellcode:
formAdresse.Adresse := tAdresse.Create;

hier erzeugst Du eine neue Instanz Deiner Adresse in einer Property des Unterformulars und greifst anschließend auf das Feld oder die globale Variable Adresse im Hauptformular zu. Das ist ja nicht dasselbe, solange Du es nicht explizit zuweist.

Kleine 2. Mai 2011 13:29

AW: Datensätze speichern in einer Datenbank
 
und wie löse ich nu das problem? :?
ich bin totaler änfanger ..

DeddyH 2. Mai 2011 13:34

AW: Datensätze speichern in einer Datenbank
 
Schau Dir doch noch einmal das Einstiegstutorial vom Delphi-Treff an. Den Teil mit der Datenbankoberfläche kannst Du ja getrost überspringen und gleich bei TTable weitermachen. Das Prinzip ist ja bei so gut wie allen (SQL-)Datenbanken dasselbe.

Kleine 2. Mai 2011 13:39

AW: Datensätze speichern in einer Datenbank
 
okay danke, dann schau ich mir das mal an :)

Kleine 2. Mai 2011 13:55

AW: Datensätze speichern in einer Datenbank
 
okay hab mir das mal angeschaut, aber mir wirklcih weiterhelfen tut es nicht.
Also unter Neu trägt mein ein neuen Datensatz ein und dieser soll, wenn auf Ok geklickt wird in dem grind eingefügt werden.
Doch gibt er mir immer eine fehlermeldung aus, weil (glaub ich) anscheinend in adresse. ... nichts drinsteht, obwohl im nebenformular, der text der editfelder in diese variablen gespeichert wird.
Delphi-Quellcode:
procedure TFormMain.Neu1Click(Sender: TObject);        // Beim Klicken auf Neu ober in der Leiste
var
  FormAdresse : TFormAdresse ;

  kontaktdaten : tKontaktdaten;
begin
  formAdresse := TFormAdresse.Create( Self );          // Es wird wieder das Formular Adresse erstellt

  formAdresse.Adresse := tAdresse.Create ; ;

  if formadresse.ShowModal = mrOK then                 // Wenn OK geklickt wurde, dann ..
  begin
    ShowMessage ( 'Die Werte wurden gespeichert' );    // Wird dieser Text ausgegeben und ..
    //Adressen.Add( FormAdresse.Adresse ) ;              // Die eingetragenden Daten werden in der TList Adressen abgespeichert
    tbAdressen.Insert;
    tbAdressenCreate;
    tbAdressen.Post;
  end
  else                                                 // Ansonsten..
    ShowMessage ( 'Die Aktion wurde abgebrochen' ) ;   // wird diese Meldung ausgegeben


 // RefreshList ;           // AdresseListBox wird aktualisiert und somit wird der neue Datensatz eingetragen

  formadresse.Release ;   // Gibt den Speicher im Formular Adresse wieder frei

end;
procedure TFormMain.tbAdressenCreate;
begin
  tbAdressen.FieldByName('ID').AsInteger := adresse.ID;
  tbAdressen.FieldByName('Anrede').AsString := adresse.Anrede;
  tbAdressen.FieldByName('Nachname').AsString := adresse.Nachname;
  tbAdressen.FieldByName('Vorname').AsString := adresse.Vorname;
  tbAdressen.FieldByName('Strasse').AsString := adresse.Strasse;
  tbAdressen.FieldByName('PLZ').AsInteger := adresse.PLZ;
  tbAdressen.FieldByName('Ort').AsString := adresse.Ort;
end;
ich hoffe jemand kann mir das anhand des quelltextes erklären :|

danke schonmal

DeddyH 2. Mai 2011 14:03

AW: Datensätze speichern in einer Datenbank
 
Hab ich doch schon. Wenn Du Deinen eigenen Quelltext nicht mehr verstehst, wie sollen wir dann helfen? Du könntest aber ganz auf die Klasse TAdresse verzichten und das Speichern gleich im Unterformular erledigen.

Kleine 2. Mai 2011 14:06

AW: Datensätze speichern in einer Datenbank
 
ja ich habe wirklich total den überblick verloren :(
bin vor 2 wochen damit angefangen und in der zeit wurde mir soviel gezeigt und umgeändert, das ich mittlerweile kaum mehr was verstehe .. :|

Bummi 2. Mai 2011 14:11

AW: Datensätze speichern in einer Datenbank
 
Du sprichst FormMain.Adressen in tbAdressenCreate an meinst aber eigentlich formAdresse.Adresse.

Ich würde das ganze sauber neu aufsetzen....

DeddyH 2. Mai 2011 14:17

AW: Datensätze speichern in einer Datenbank
 
Dann erstell Dir zum Üben doch einfach ein neues Projekt. In dem nimmst Du ein Datenmodul ('Datei - Neu - Datenmodul') und packst da alle nicht-visuellen DB-Komponenten drauf (Table, Datasource, Query, etc.). Wenn Du die Unit dieses Datenmoduls in die uses-Klausel Deiner Formular-Units aufnimmst kannst Du die Datasource-Zuweisung für Grids usw. direkt im Objektinspektor vornehmen. So, die Formulare greifen dann alle auf die Datasets auf dem Datenmodul zu und zeigen die Daten an bzw. modifizieren sie. Wenn man dann auch noch datensensitive Controls verwendet (DBEdit z.B.) kann man voll funktionsfähige Programme zusammenklicken, ohne auch nur eine Zeile Quellcode schreiben zu müssen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:38 Uhr.

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