in ein Datenbankfeld schreiben

DiBa112

Grünschnabel
Hallo alle zusammen!
Da dies mein erster Artikel ist, möchte ich mich kurz vorstellen: Ich heiße Dirk, bin 23 Jahre jung und beschäftiige mich beruflich und privat viel mit Computern und Elektronik. Die (Delphi-) Programmierung ist allerdings noch Neuland für mich.
Zu meinem Anliegen:
Ich schreibe ein kleines Programm für unsere Feuerwehr. Dazu habe ich in Access eine Datenbank erstellt und mit den Infos aus:
http://www.tutorials.de/forum/sonst...lphi-zugriff-auf-access-datenbank-3-23-a.html
die Datenbank abgefragt.
Funktioniert wunderbar! Doch zwei Proble habe ich noch nicht lösen können und die Suche im Netz hat mich nicht weitergebracht:

1.) Ich kann ein Datenbankfeld (der jew. aktiven Zeile) mit
... := form1.ADOTable1.FieldValues['Spaltenname']; auslesen. Aber ich kann auf diese Weise nichts hineinschreiben. Wie kann ich einen Wert aus einem EDIT-Feld in eine Zelle meiner Datenbank übernehmen?

2.) Die Datenbank habe ich gewählt, damit ich mit zwei PCs gleichzeitig auf die Werte zugreifen kann. Das funktioniert auch. Nur wenn ich Datensätze hinzufüge oder verändere, bekommt der andere PC davon erst etwas mit, wenn ich dasProgramm neu starte.
Gibt es eine Möglichkeit die Tabelle "im laufenden Betrieb" zu aktualisieren?

Vielen Dank schon mal.
Dirk
 
Versuch's mal in der Hilfe mot dem Stichwort TDataSet.Post. Da könnte evtl. das stehen, was du suchst bzw. verlinkt sein. Ich selbst arbeite mit Queries und nicht direkt mit den Komponenten, kann also von daher keine weiteren Informationen liefern.
 
Ich glaube ich habe ich alle möglichen Funktionen ausprobiert. Im Endeffekt habe ich mir so beholfen:
Code:
form1.ADOConnection1.Connected := false;
form1.ADOConnection1.Connected := true;
form1.ADOTable1.Active := true;
Damit trenne ich die Verbindung und lade alles aus neu aus der DB. Funktioniert auch wunderbar.

Aber mein anderes Problem, das Speichern in die Datenbank, ist noch nicht gelößt. Ich kann jetzt mit
Code:
form1.DBGrid1.Fields[0].NewValue := 'Test';
ein Wort oder den Inhalt eines Edit- Feldes in die Tabelle schreiben. Solange ich nicht auf "aktualisieren" (o.g. 3 zeilen) klicke, bleibt auch alles so wie es sein soll. Die Tabelle zeigt mir das, was ich rein geschrieben habe. Aber in der Datenbank wird nichts geändert. Der zweite PC bekommt nichts von der Änderung mit und die Datenbank auch nicht. Ich habe so das Gefühl, das die Änderungen nur lokal Zwischengespeichert werden.
Ich such also nach einem Befehl, der die lokalen Daten in die DB überträgt.
 
Noch etwas:
Erstelle ich eine CheckBox (DBCheckBox), die also direkt mit der DB zu tun hat, dann werden Änderungen direkt in der DB gespeichert, also scheinbar nicht gepuffert. :confused:
 
Da ich nicht genau weiss, mit welchen Komponenten du auf der Datenbank arbeitest, schau dir evtl. mal in der Borlandhilfe den Eintrag zu TDatabase.Commit an. Möglicherweise hat das mit deinem Problem zu tun. Allerdings weiss ich, dass mein Chef hier mit etwas Ähnlichem (Access-Frontend auf Oracle-DB) das gleiche Problem hatte, was an den Access-Einstellungen lag. Die genaue Lösung ist mir jedoch nicht bekannt.
 
Für jemanden, der mal auf das gleiche Problem stößt:

Wenn man in ein Feld hineinschreiben möchte, muss man zuvor das den Datensatz zum Bearbeiten öffnen / freigeben.
Code:
form1.ADOTable1.edit;

Dann kann man in eine beliebige Spalte der aktiven Zeile mit folgendem Befehl schreiben:
Code:
form1.ADOTabel1.Fields[0].asBoolean := true;
(für "asBooolean" kann auch "asInteger" o.ä. stehen)

Dann die Daten speichern, also in die Datenbank übertragen:
Code:
form1.ADOTable1.Post;

Und gespeichert ist der Datensatz.....
 
Zurück