Fehlermeldung nach oForm.Last
Verfasst: So, 14.06.2020 14:03
Hallo
beim Öffnen eines Formulares übernehme ich teilweise Daten aus dem letzten eingegebenen Datensatz. Zu diesem Zweck gebe ich den Befehl oForm.last ein. Mit MsgBox sehe ich die geforderte Spalte "mlfdnr". In der Zeile < intlfdnr = oForm.getint(stName)> wird der Fehler "Cursor zeigt vor die erste bzw. hinter die letzte Zeile..." angezeigt. Schließen ich das Formular, dann ist in der DatenTabelle eine neue Zeile bei der die neue fmlfdnr, fbeok, fdbok, fJahr (im Formular als HiddenFelder, die auf die entsprechenden Tabellenfelder (ohne f..) hinweisen) korrekt eingestellt sind. Es fehlen aber alle Daten, die ich in das Formular eingegeben habe.
Gibt es dafür eine Erklärung?
Sub Datenübernahme (oEvent as object)
REM wird mit Öffnen des Formulars "Eingabe" gestartet
DIM stName as Long
DIM intlfdnr as Integer
DIM stJahr as String
DIM stJahr1 as String
DIM intJahr as Integer
DIM unoDate AS NEW com.sun.star.util.Date
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Eingabe")
oForm.last 'geht zur letzten Zeile
REM lfdNr auslesen
stName = oForm.findColumn("mlfdnr")
intlfdnr = oForm.getInt(stName)
REM altes Datum auslesen, Jahr ermitteln
stName = oForm.findColumn("Datum")
unoDate = oForm.getDate(stName)
REM neue Zeile einfügen
oForm.MoveToInsertRow()
REM beok, dbok vorbesetzen
oFeld = oForm.getByName("fbeok")
oFeld.BoundField.UpdateInt(0)
oFeld = oForm.getByName("fdbok")
oFeld.BoundField.UpdateInt(0)
REM ausgelesenes Jahr abspeichern
oFeld = oForm.getByName("fJahr")
oFeld.BoundField.UpdateInt(unoDate.Year)
REM lfdNr ermitteln und eingeben
oFeld = oForm.getByName("fmlfdnr")
If unoDate.Year <> Year(DATE) Then
intlfdnr=0
End if
oFeld.BoundField.UpdateInt(intlfdnr+1)
oForm.insertRow()
End Sub
mfG
Frewer
beim Öffnen eines Formulares übernehme ich teilweise Daten aus dem letzten eingegebenen Datensatz. Zu diesem Zweck gebe ich den Befehl oForm.last ein. Mit MsgBox sehe ich die geforderte Spalte "mlfdnr". In der Zeile < intlfdnr = oForm.getint(stName)> wird der Fehler "Cursor zeigt vor die erste bzw. hinter die letzte Zeile..." angezeigt. Schließen ich das Formular, dann ist in der DatenTabelle eine neue Zeile bei der die neue fmlfdnr, fbeok, fdbok, fJahr (im Formular als HiddenFelder, die auf die entsprechenden Tabellenfelder (ohne f..) hinweisen) korrekt eingestellt sind. Es fehlen aber alle Daten, die ich in das Formular eingegeben habe.
Gibt es dafür eine Erklärung?
Sub Datenübernahme (oEvent as object)
REM wird mit Öffnen des Formulars "Eingabe" gestartet
DIM stName as Long
DIM intlfdnr as Integer
DIM stJahr as String
DIM stJahr1 as String
DIM intJahr as Integer
DIM unoDate AS NEW com.sun.star.util.Date
oDoc = thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Eingabe")
oForm.last 'geht zur letzten Zeile
REM lfdNr auslesen
stName = oForm.findColumn("mlfdnr")
intlfdnr = oForm.getInt(stName)
REM altes Datum auslesen, Jahr ermitteln
stName = oForm.findColumn("Datum")
unoDate = oForm.getDate(stName)
REM neue Zeile einfügen
oForm.MoveToInsertRow()
REM beok, dbok vorbesetzen
oFeld = oForm.getByName("fbeok")
oFeld.BoundField.UpdateInt(0)
oFeld = oForm.getByName("fdbok")
oFeld.BoundField.UpdateInt(0)
REM ausgelesenes Jahr abspeichern
oFeld = oForm.getByName("fJahr")
oFeld.BoundField.UpdateInt(unoDate.Year)
REM lfdNr ermitteln und eingeben
oFeld = oForm.getByName("fmlfdnr")
If unoDate.Year <> Year(DATE) Then
intlfdnr=0
End if
oFeld.BoundField.UpdateInt(intlfdnr+1)
oForm.insertRow()
End Sub
mfG
Frewer