Hallo Robert, vielen Dank.
Wäre nett, wenn Du die Bezeichnung des Feldes Sacknummer neu (Unterformular Eingabe) geändert hättest, nachdem Du es nicht mehr einem Unterformular, sondern dem Hauptformular zugeordnet hast und da die Datengrundlage geändert.
So habe ich eine ganze Weile versucht, das in meinem Dokument nachzustellen, bis ich den Unterschied festgestellt habe…
Ich habe dank
http://de.openoffice.info/viewtopic.php ... 88#p228688 das automatische Aktualisieren gelöst:
Code: Alles auswählen
Sub Aktualisieren
oForm1=thisComponent.Drawpage.Forms.getByName("Filter")
' ob es die If-Abfrage wirklich braucht, weiß ich nicht
If oForm1.isNew Then
0
ElseIf oForm1.isModified Then
oForm1.updateRow
End if
oForm1.reload()
Fokus()
End Sub
Das Makro ist verknüpft mit dem Ereignis "Nach der Datensatzaktion" des Unterformulars Eingabe.
Wenn ich das Feld Sacknummer des Unterformulars Eingabe drin lasse, dann kann ich dort sogar noch eine abweichende Sacknummer eingeben. Will ich aber gar nicht, die Sacknummer soll ja hochgezählt werden und wenn die Mitarbeiter nix von Hand eintragen können, kann es auch keine doppelten Sacknummern mehr geben.
Beim Öffnen des Formulars ist der Fokus dank automatischem Steuerelement-Fokus im Feld Kraut, so dass diese Daten angepasst werden können.
Nach dem Eintragen des ersten Datensatzes wird der Fokus auf das Gewichtsfeld mit einem Makro gesetzt, so dass man schön hintereinander weg die Sackgewichte eintragen kann. Möchte man einen Kommentar hinzufügen, geht es mit Umschalt+Tab ins Kommentarfeld, das in der Aktivierungsreihenfolge vor dem Feld Gewicht ist.
So kann mit Enter der Datensatz abgespeichert werden.
Das Makro ist nötig, weil sich LO nicht wie erwartet verhalten hat: Tab: Nächstes Feld, Enter: Formular Abschicken
Befindet man sich nämlich nicht im letzten Formularfeld, dann setzt Enter den Cursor in das nächste Feld, anstatt das Formular abzuschicken.
Beim Fokus-Setzen habe ich mich
an diesem Code orientiert:
Code: Alles auswählen
Sub Fokus()
oForm=thisComponent.Drawpage.Forms.getByName("Filter").getByName("Eingabe")
oFeld=oForm.getByName("fmtGewicht")
oDocView = thisComponent.getCurrentController()
oDocView.getControl(oFeld).setFocus
end sub
Vielen Dank für die super Unterstützung!