ich möchte in einem Formular einen neuen Datensatz eintragen und 3 Felder mit Eingaben aus einem Dialog vorbelegen. Das mit dem neuen Datensatz im Formular habe ich mittels einem anderen Thread gelöst bekommen. Ich schaffe es auch, die Felder aus dem Dialog auszulesen und in das Formular zu schreiben. Danach setze ich den Fokus in das nächste Feld und möchte weitere Eingaben machen und das Formular (den neuen Datensatz) dann speichern. Aber es gibt eine Fehlermeldung, dass die vorbelegten Felder keinen Inhalt hätten (wahrscheinlich von der Datenbank, weil die Felder dort mit NOT NULL angelegt sind). Dort ist aber auf jeden Fall ein eingetragener Text zu sehen. Ich vermute mal, dass ich den Eingabefeldern des Formulares den Wert falsch zuweise. Wenn ich in die vorbelegten Textfelder gehe und Text eingebe, dann gibt es keine Fehlermeldung und der Text kann auch in die Datenbank eingetragen werden. Ich dachte auch, ich hätte irgendwo mal gelesen, dass es zwei verschiedene Möglichkeiten gibt, einmal nur Text zuzuweisen und einmal einen Wert, der dann auch dem ResultSet zugewiesen wird. Aber ich finde das nirgendwo mehr. Vielleicht kann mir ja wer weiterhelfen.
Für das Feld 'matrikelnr' ist eine Eingabe erforderlich.
Geben Sie dort einen Wert ein!
Wie gesagt, in dem Feld im Formular steht ein Wert drin. Ich denke auch, dass die Fehlermeldung von der Datenbank her kommt, weil dort NOT NULL für diese Spalte angegeben ist.
Mit Object.value hatte ich auch schon getestet, gab aber einen Basic-Laufzeitfehler: Eigenschaft oder Methode nicht gefunden.
Ich hatte wohl auch gelesen, dass value für Zahlenwerte sein soll, und text für String-Werte.
Gruss
Bert
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3
Hallo Bert,
ich hatte Dir vor 2 Tagen ein Codeschnipsel geschickt, welches genau Dein Problem behebt.
Das war nicht NUR für den neuen Datensatz passend!
Es ist immer wieder der gleiche Vorgang:
1. MoveToInsertRow
2. Felder füllen ( kann auch als erstes gemacht werden)
3. für jedes Feld commit() - das ist das was bei Dir fehlt, aber es ist besonders wichtig.
ohne den commit() nimmt das Formular den neuen Feldinhalt nicht zur Kenntnis und schreibt es dann auch nicht in die Tabelle.
Dadurch bleiben die Felder in der Tabelle leer und die Datenbank meckert den "fehlenden" Inhalt an.
4. zum Schluß insertRow() - nun wird der Datensatz physisch gespeichert, denn mit MoveToInsertRow hast Du Dich ja nur zum nächsten freien Platz bewegt.
Und hier nochmal das Stück Code den ich Dir schon einmal geschickt habe:
oForm.moveToInsertRow() ' mache einen neuen Datensatz auf
oFormt.getByName("ProduktID").value = myProduktID ' Formularfeld füllen
oForm.getByName("ProduktID").commit() ' das ist quasi die Simulation der Eingabetaste
oForm.insertRow() ' speichere den neuen Datensatz
Gruß eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
eBayer hat geschrieben:Hallo Bert,
ich hatte Dir vor 2 Tagen ein Codeschnipsel geschickt, welches genau Dein Problem behebt.
Das war nicht NUR für den neuen Datensatz passend!
Gruß eBayer
Hallo eBayer,
das hatte ich wohl irgendwie überlesen. Sorry! Aber so klappt es prima. Vielen Dank, dass du mich nochmal darauf hingewiesen hast...
Gruss
Bert
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3