Eingabe im Tabellenkontrollfeld rückgängig/null setzten

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

Moderator: Moderatoren

Luke78
**
Beiträge: 29
Registriert: Do, 27.09.2012 19:43

Eingabe im Tabellenkontrollfeld rückgängig/null setzten

Beitrag von Luke78 »

Hallo zusammen!

Ich habe aktuell Probleme dabei, eingegebene Daten in einem Tabellenkontrollfeld nach deren Überprüfung wieder zurück zu setzten.

Das Skript wird durch das Event "Vor dem Aktualisieren" einer ListBox-Spalte aufgerufen (vereinfachte Version ohne Überprüfung, aber klappt auch nicht):

Code: Alles auswählen

sub checkRow( oEvent as Object)
	dim oForm		as Object
	dim oSelect	as Object

	if MsgBox( "Eintragen?", 36) = 7 then
		oSelect		= oEvent.Source 'ListBox
		oForm		= oSelect.Parent.Parent 'Form 

		oForm.updateNull( 5) 'Column 5 beinhaltet den Wert, der durch die Listbox gesetzt wird.
		oForm.updateRow()
	end if
end sub

Das wäre ja imho der richtige weg. War so auch in anderen Threads zu lesen, nur leider ging es da nie um Tabellenkontrollfelder.

Das Verhalten ist da sehr merkwürdig, mal klappt es mal nicht. Setze ich ein oForm.reload() hinter das updateRow stürzt Base immer ab.

Auf die ListBox, bzw. deren Methoden hab ich anscheinden an der Stelle keinen Zugriff. Versuche ich mit oSelect.selectItemPos( 0, true) den ersten Wert also leer auszuwählen, erhalte ich die Fehlermeldung "Eigenschaft oder Methode nicht gefunden", obwohl der Beobachter oSelect als ListBox ausweist.
LO 3.6.5.2 auf Windows 7 64bit
"Ein Programm ist immer nur so gut wie sein Benutzer" - "Software has no brain, use your own"
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Eingabe im Tabellenkontrollfeld rückgängig/null setzten

Beitrag von F3K Total »

Hi,
deine Frage ist zu unpräzise:
Luke78 hat geschrieben:Ich habe aktuell Probleme dabei, eingegebene Daten in einem Tabellenkontrollfeld nach deren Überprüfung wieder zurück zu setzten.
Sollen alle Spalten der zugrunde liegenden Tabelle zurückgesetzt werden, oder nur bestimmte?
Wenn alle, dann geht dies, an das Ereignis "Status geändert" der Listenfeldspalte gebunden.

Code: Alles auswählen

sub checkRow( oEvent as Object)
    dim ocontroller as Object
    dim oForm      as Object
    dim oSelect   as Object
    ocontroller = thisComponent.currentcontroller
    oSelect = oEvent.source.model
    ogrid = oSelect.Parent
    ogridcontrol = ocontroller.getcontrol(ogrid)
    oForm = ogrid.Parent
        if MsgBox( "Eintragen?", 36) = 7 then
            oform.reload
            oform.last
        else
            ogridcontrol.commit = true
            if oform.isnew then oform.insertrow else oform.updaterow
        end if
End sub
Gruß R
Luke78
**
Beiträge: 29
Registriert: Do, 27.09.2012 19:43

Re: Eingabe im Tabellenkontrollfeld rückgängig/null setzten

Beitrag von Luke78 »

Hi,

Es soll nur ein Wert zurückgesetzt werden, halt der für den die ListBox verantwortlich ist.

Im Prinzip werden für einen Dienstplan Datum, Anfangs- und Endzeit eingegeben und dann nach Auswahl eines Mitarbeiters überprüft ob dieser schon belegt ist zu dem Zeitpunkt.

Hab es jetzt auch ans Laufen bekommen, es klappt auch mit "Nach dem Aktualisiern". Das scheint stabiler zu funktionieren, auch wenn mir dadurch die Möglichkeit genommen ist einen Wert auf den vorher eingestellten zurückzu setzten. Aber null setzten funktioniert.
LO 3.6.5.2 auf Windows 7 64bit
"Ein Programm ist immer nur so gut wie sein Benutzer" - "Software has no brain, use your own"
Antworten