Entwickler-Ecke

Datenbanken - Daten in DB einfügen ohne DB Navigator


fabi65 - So 17.07.05 13:28
Titel: Daten in DB einfügen ohne DB Navigator
hi,

da ich per schleife etwas in eine DB (paradox 7) einfügen will kann ich den DB Navigator nicht benutzen. Wie kann ich jetzt etwas per Befehl in die datenbank einfügen?


Robert.Wachtel - So 17.07.05 14:09
Titel: Re: Daten in DB einfügen ohne DB Navigator
TDataSet.Append bzw. .Insert


aDm1n - So 09.04.06 15:31

Ich habe praktisch die gleiche Frage und kann damit jetzt leider noch nicht allzuviel anfangen (delphi-ultra-noob). Wäre es möglich das anhand eines Beispiels nochmal etwas genauer zu erklären? Ich habe eine Datenbank namens "Geburtstage.db" (auch paradox7) und habe jetzt ein neues form gemacht in dem ich zwei dbedit-felder (Name, Geburtstag = Spalten in der Datenbank) platziert habe. Wie stelle ich es am besten an, wenn ich was in die edit-felder einlesen lassen will und dann über einen ok-button in die datenbank schreiben will?


mkinzler - So 09.04.06 15:46

Dann benötigst eigentlich 2 Buttons mit dem ersten versetzt du die Table in den Insert/ bzw Edit Modus mit


Delphi-Quelltext
1:
2:
3:
Table.Edit; //Aktuellen Datensatz bearbeiten bzw  
Table.Insert; //Neuen Datensatz an der aktuellen Position der Tabelle einfügen bzw
Table.Append; // einen neuen Datensatz ans Ende der Tabelle einfügen.


Die mit der TTable-Komponente mittles TDataSource verknüften DBEdits stehen nun auf den aktuellen DS ( bei neuem sind diese natürlich leer).

Im 2. Button führst du

Delphi-Quelltext
1:
Table.Post;                    

aus, nun werden die Änderungen geschrieben.

BTW BDE ist veraltet und oboslet.


aDm1n - So 09.04.06 16:36

Danke erstmal für die schnelle Antwort.
Mein Problem ist leider noch nicht beseitigt. Mein Programm ist so aufgebaut, dass es in einem Hauptfenster startet und man dort einen Button drücken muss um einen neuen Eintrag zu schreiben. Wenn ich dich richtig verstanden habe, dann muss ich um einen neuen Datenbankeintrag zu schreiben die Datenbank zuerst in den append-modus setzen (?). Dies geschiet jetzt beim Klicken des Buttons um zum "neuer eintrag"-form zu kommen. Jetzt hab ich zwei Probleme und zwar, dass ich aus irgendeinem Grund nichts in die dbedit-felder schreiben kann (!), und außerdem dass wenn ich den bestätigen-knopf drücke (Table1.post), die Meldung erscheint: "Table1: Dataset not in edit or insert mode."
Ich habe auch schon probiert das Table1.post durch ...insert und ...edit zu ersetzen was jedoch leider nichts geholfen hat. Kannst du mir weiterhelfen?
Danke im Vorraus


mkinzler - So 09.04.06 16:51

Sind die DBEdits mit Table1 verknüpft?

Poste mal ein bischen Code.


aDm1n - So 09.04.06 17:22

Die edit-felder sind eigentlkich richtig verknüpft.
In meinem Hauptfenster hat der Knopf für einen neuen Eintrag folgenden Code: (sry hab keine Ahnung wie man das hier als code reinschreibt)


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure Tfrm_main.btn_neuClick(Sender: TObject);
begin
frm_neu.showmodal;
frm_neu.Table1.open;
frm_neu.Table1.append;
end;


Und im Fenster in dem man den neuen Eintrag schreibt, hat der Bestätigen-Knopf folgende Prozedur:

Delphi-Quelltext
1:
2:
3:
4:
procedure Tfrm_neu.Button1Click(Sender: TObject);
begin
Table1.post;
Table1.close;


Ich hab zusätzlich mal mein Projekt angehängt (vllt. hilfts was...).
Danke im Vorraus

Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt


mkinzler - So 09.04.06 17:37

Die DBedits sind nicht mit der DataSource verknüpft.

Allg. Bemerk:
-Ich würde die TTable-Komponente in ein Datenmodul auslagern, so benötigst du sie nur einmal.
-Datumseingaben würde ich über einen TDBDatetimePicker realisiern.


aDm1n - So 09.04.06 17:39

Das ist mir gleich nach dem post aufgefallen und ich habs behoben. Geht bei mir leider immer noch net. -_-


mkinzler - So 09.04.06 17:41

Also bei mir funktioniert es. Ich würde aber das Table1.Close entfernen und wie oben beschrieben die Table-Komponente verschieben.


aDm1n - So 09.04.06 19:00

Also ich bin hier am Verzweifeln. Ich hab den datasource-wert der edit-felder auf datasource1 gesetzt, aber es hat nichts geholfen. Wenn ich dich richtig verstanden ´habe, dann sind deine Tipps zum einfachen funktionieren nicht notwendig (?)


mkinzler - So 09.04.06 19:04

Ja, sind sie nicht, aber ich sehe du hast ein weiterer Button auf deinem Hauptformular zum editieren der daten. Auf diesem Formular hättest du ja eine weitere TTable-Komponente und deshalb würde ich diese in ein Datenmodul auslagern. Ein DatePicker ermöglicht es ein datumswert direkt aus einem kalenderblatt auszuwählen, was sicherstellt, das die Eingabe korrekt ist.

Was geht nicht? Fehlermeldung?


aDm1n - So 09.04.06 19:14

Fehlermeldung iss genau wie vorher wenn ich auf den bestätigen-button klicke: "table1: dataset not in edit or insert mode" -_-


aDm1n - So 09.04.06 19:32

Hmm... Ich glaube ich habe meinen Fehler gefunden: Ich hab vergessen den activ-wert auf "true" zu setzen. -_- Tut mir Leid, dass ich deine Zeit so beansprucht habe. *doppelschäm*
Danke für den Aufwand...


mkinzler - So 09.04.06 19:33

Versuch mal :

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
procedure Tfrm_main.btn_neuClick(Sender: TObject);
begin
  frm_neu.Table1.open;
  frm_neu.Table1.append;
  frm_neu.showmodal;
end;