von Frewer » Do, 19.03.2020 16:24
Hallo,
folgendes Problem stellt sich mir:
Aus meiner Datenbank (DB) ermittle ich mit Hilfe einer Abfrage bestimmte Datenzeilen (zB ID Nr 35, 49,70..).
In diesen Zeilen der DB möchte ich nun Daten in entsprechende Spalten eingeben.
Mein Vorgehen:
Formular auf Basis der Datenbank mit einem Unterformular auf Basis der Abfrage. Das Macro wird durch einen Knopf des Formulars (nicht des Unterformulars) ausgelöst.
SUB Test
oDoc=thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Abrechnung_BH") 'hinterlegt ist DB "Abrechnung"
oSubForm1 = oForm.getByName("FormularEH") 'hinterlegt ist "Abfrage_BHE"
Nun will ich feststellen wieviele Zeilen zu Ändern sind (Abfrage_BHE). Aus Versuchen habe ich festgestellt, dass die Abfrage immer mit row=1 beginnt. Deshalb gehe ich zur letzten Zeile und lese den Wert aus (inAz in meinem Fall = 9).
oSubForm1.Last
inAz = oSubForm1.getrow()
REM zurück zur 1ten Zeile
oSubForm1.First
REM suche die Spalten für die zu ändernden DB-Zellen
intFeld = oForm.findColumn("BHDatum")
intFeld1 = oForm.findColumn("beok")
REM ermittle aktuelles Datum
unoDate.Year = Year(Date)
unoDate.Month = Month(Date)
unoDate.Day = Day(Date)
REM schreibe aktuelles Datum und beok=1 in die betreffenden Zeilen der Abfrage
FOR ix=1 TO inAz
inID=oSubForm1.getInt(stName) 'bestimme den INDEX der Abfrage nach inID
oForm.absolute(inID) 'gehe in DB zu dieser Zeile (oForm hat die DB hinterlegt)
REm heutiges Datum und bok=1 setzen
oForm.UpdateDate(intFeld,unoDate) 'heutiges Datum --- Meldung "ungültiger Cursorstatus"!!!!!
oForm.UpdateInt(intFeld1,1) 'beok=1
oForm.UpdateRow() 'Zeile erneuern
oSubForm1.Next 'geh zur nächsten Zeile der Abfrage
NEXT ix
msgbox "Fertig"
END SUB
Nun der Fehler: Nachdem ich die row der Datenbank gesetzt habe, kommt die Meldung "ungültiger Cursorstatus".
Dies kann ich mir nicht erklären, weil ich ja in der Zeile davor den Cursor gesetzt habe.
Gibt es dazu einen Rat?
Gruß
Frewer
Hallo,
folgendes Problem stellt sich mir:
Aus meiner Datenbank (DB) ermittle ich mit Hilfe einer Abfrage bestimmte Datenzeilen (zB ID Nr 35, 49,70..).
In diesen Zeilen der DB möchte ich nun Daten in entsprechende Spalten eingeben.
Mein Vorgehen:
Formular auf Basis der Datenbank mit einem Unterformular auf Basis der Abfrage. Das Macro wird durch einen Knopf des Formulars (nicht des Unterformulars) ausgelöst.
SUB Test
oDoc=thisComponent
oDrawpage = oDoc.drawpage
oForm = oDrawpage.forms.getByName("Abrechnung_BH") 'hinterlegt ist DB "Abrechnung"
oSubForm1 = oForm.getByName("FormularEH") 'hinterlegt ist "Abfrage_BHE"
Nun will ich feststellen wieviele Zeilen zu Ändern sind (Abfrage_BHE). Aus Versuchen habe ich festgestellt, dass die Abfrage immer mit row=1 beginnt. Deshalb gehe ich zur letzten Zeile und lese den Wert aus (inAz in meinem Fall = 9).
oSubForm1.Last
inAz = oSubForm1.getrow()
REM zurück zur 1ten Zeile
oSubForm1.First
REM suche die Spalten für die zu ändernden DB-Zellen
intFeld = oForm.findColumn("BHDatum")
intFeld1 = oForm.findColumn("beok")
REM ermittle aktuelles Datum
unoDate.Year = Year(Date)
unoDate.Month = Month(Date)
unoDate.Day = Day(Date)
REM schreibe aktuelles Datum und beok=1 in die betreffenden Zeilen der Abfrage
FOR ix=1 TO inAz
inID=oSubForm1.getInt(stName) 'bestimme den INDEX der Abfrage nach inID
oForm.absolute(inID) 'gehe in DB zu dieser Zeile (oForm hat die DB hinterlegt)
REm heutiges Datum und bok=1 setzen
oForm.UpdateDate(intFeld,unoDate) 'heutiges Datum --- Meldung "ungültiger Cursorstatus"!!!!!
oForm.UpdateInt(intFeld1,1) 'beok=1
oForm.UpdateRow() 'Zeile erneuern
oSubForm1.Next 'geh zur nächsten Zeile der Abfrage
NEXT ix
msgbox "Fertig"
END SUB
Nun der Fehler: Nachdem ich die row der Datenbank gesetzt habe, kommt die Meldung "ungültiger Cursorstatus".
Dies kann ich mir nicht erklären, weil ich ja in der Zeile davor den Cursor gesetzt habe.
Gibt es dazu einen Rat?
Gruß
Frewer