Wie kann ich den "Status geändert" auslesen? [GELÖST]

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

Moderator: Moderatoren

geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Wie kann ich den "Status geändert" auslesen? [GELÖST]

Beitrag von geimist »

Hallo zusammen,

mit der Hilfe des Forums konnte ich ein kleines Filter-Makro schreiben, womit ich ein einem Base-Formular gezielte Datensätze aufrufen kann (funktioniert prächtig;-). Habe ich allerdings den Datensatz geändert und rufe jetzt das Mako auf, werden die geänderten Daten noch nicht gespeichert.
Also habe ich gesucht und so die Methode updateRow() gefunden.
Auch das funktioniert, allerdings nicht wenn ich aus einem leeren Datensatz das Makro mit der Speichermethode aufrufe - da kommt dann eine Fehlermeldung, da ja updateRow wohl nicht aus einem leeren Datensatz aufgerufen werden kann.

Jetzt wollte ich das Ganze mit einer if Verzweigung regeln, dass nur dann updateRow() aufgerufen wird, wenn ich Daten verändert habe (rowUpdated ist doch für diese Überprüfung richtig - oder?)

Und so sieht dass jetzt aus:

Code: Alles auswählen

    sub Filter_setzen

           Dim oFeld as variant
           Dim oDoc as variant
           Dim oForm as variant
           
           oDoc = ThisComponent
           oForm = oDoc.DrawPage.Forms.getByIndex(0)
           oFeld = oForm.getByName("WertTextBox") 'das Feld des Formulars wird ausgelesen 
           sSuchwort = oFeld.text
           oForm.filter = "`Nr` = "+ cInt(sSuchwort) 'Filter setzen
           oForm.ApplyFilter=true 'setzen des Filters für das neue Formulardokument

           if oForm.rowUpdated=true then 'Überprüfung ob Datensatz modifiziert wurde - wenn ja, dann:
           oForm.upDateRow 'geänderten Datensatz speichern
           end if

           oForm.reload()
    end sub
Leider passiert jetzt gar nichts - nicht einmal eine Fehlermeldung. Ich glaube, dass noch nicht korrekt ausgelesen wird, ob der Datensatz geändert wurde.
Zuletzt geändert von geimist am So, 17.05.2009 16:20, insgesamt 8-mal geändert.
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Wie kann ich den "Status geändert" auslesen?

Beitrag von geimist »

Habe gerade noch mal eine kleine Beispieldatenbank nur mit den notwendigsten Inhalten erstellt.

Ich habe es nicht hinbekommen, dass korrekt ausgegeben wird ob der Datensatz geändert wurde - Veränderungen erkennt das Makro einfach nicht. Ich vermute, dass der Bezug zum jeweiligen Datensatz noch nicht hergestellt ist:

ThisComponent.DrawPage.Forms.getByIndex(0).rowUpdated = true

ThisComponent erreicht evtl. nicht den eigentlichen Datensatz, kann das so sein???

Ich habe hier mal eine Testdatenbank angehangen. Maßgebend ist natürlich das Formular. Es enthält ein Textfeld in welches man die Datensatznummer eingibt zu der man springen möchte (Makro löst aus mit "Text modifiziert"). Als nächstes sind 2 Optionsfelder durch die man bei Änderung den Status geändert erreicht. Und dann ist noch ein Button für die Abfrage mit rowUpdated, ob erkannt wird, dass der Datensatz geändert wurde (gibt halt derzeit immer aus, dass der DS nicht geändert wurde).

Vielen Dank schon mal.
Dateianhänge
Testdatenbank_für_OOo3.1.odb
DB für OOo ab 3.1
(13 KiB) 37-mal heruntergeladen
Testdatenbank.odb
DB für OOo kleiner als 3.1
(12.46 KiB) 44-mal heruntergeladen
Zuletzt geändert von geimist am So, 17.05.2009 15:10, insgesamt 1-mal geändert.
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Wie kann ich den "Status geändert" auslesen?

Beitrag von geimist »

Beim stöbern habe ich erfahren, dass man mit dem Interface "com.sun.star.sdbc.XResultSet" auf die Methode rowUpdated zugreifen kann.
Aber wie muss ich denn das formulieren? (Bin leider immernoch ein absoluter BASIC-Anfänger)

Vielen Dank
Zuletzt geändert von geimist am So, 17.05.2009 14:54, insgesamt 1-mal geändert.
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Wie kann ich den "Status geändert" auslesen?

Beitrag von geimist »

Hallo Lstar,

Vielen Dank für deine Antwort. Leider wurde ich darüber nicht benachrichtigt - deswegen meine späte Reaktion. Zu deinem Hinweis:

Da sagt mir Basic nur:"Eigenschaft oder Methode nicht gefunden" :?

Hat nicht noch jemand einen Tipp? - Danke
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Wie kann ich den "Status geändert" auslesen? UNGELÖST

Beitrag von eBayer »

Hallo mal wieder......
wenn Du wissen willst, ob sich im Formular was geändert hat, bevor die Daten gespeichert wurden, dann ist das folgende Statement einzusetzen: if ThisComponent.DrawPage.Forms.getByIndex(0).isModified = true then...........
Willst Du hingegen wissen, ob in diesem Formular getätigte Änderungen erfolgreich gespeichert wurden (Save-Button gedrückt), dann ist folgendes Statement anzuwenden: if ThisComponent.DrawPage.Forms.getByIndex(0).rowUpdated = true then......

Hoffe, das löst Dein Problem. Ich bekomme damit jedenfalls die richtigen Antworten :D
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
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Wie kann ich den "Status geändert" auslesen?

Beitrag von geimist »

Mensch eBayer,

du machst mich immer wieder glücklich :D :D :D .

Das geht wunderbar - genauso wie ich es wollte. Vielen Dank.
(ich hatte mich die letzten Tage auch noch mal mit deiner Lösung bzgl. des Verstecken des Hauptfensters beschäftigt - da hast du ja auch eine feine Arbeit geleistet - Vielen Dank nochmal)
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
Antworten