[gelöst] Formular mit Vorbelegung

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

gigabert
*****
Beiträge: 203
Registriert: Di, 11.08.2009 16:06

[gelöst] Formular mit Vorbelegung

Beitrag von gigabert »

Hallo,

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.

Hier kommt mal der relevante Basic-Code:

Code: Alles auswählen

...
		oDoc = ThisComponent
		oForm = oDoc.drawpage.forms.getByName("MainForm")
		oForm.ApplyFilter = false     'Filter aufheben
		oForm.reload()
		oForm.moveToInsertRow()     'neuer Datensatz im Formular
		
		REM *** Felder vorbelegen ***
		oForm.getByName("txtNachname").text = sNachname
		oForm.getByName("txtVorname").text = sVorname
		oForm.getByName("txtMatrikelnr").text = sMatrikelnr
		FocusSetzen("txtCO")     'Fokus ins nächste Feld setzen
...
Gruss
Bert
Zuletzt geändert von gigabert am Do, 17.09.2009 17:57, insgesamt 1-mal geändert.
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3
gigabert
*****
Beiträge: 203
Registriert: Di, 11.08.2009 16:06

Re: Formular mit Vorbelegung

Beitrag von gigabert »

Hallo,

die Fehlermeldung lautet:
Fehler beim Schreiben von Daten in die Datenbank

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
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Formular mit Vorbelegung

Beitrag von eBayer »

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
gigabert
*****
Beiträge: 203
Registriert: Di, 11.08.2009 16:06

Re: Formular mit Vorbelegung

Beitrag von gigabert »

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
Antworten