[gelöst]Externes Formular, unerwünschte Sicherheitsabfrage

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

beat4u
**
Beiträge: 23
Registriert: Mi, 29.02.2012 13:08

[gelöst]Externes Formular, unerwünschte Sicherheitsabfrage

Beitrag von beat4u »

Hallo Forum

Ich konnte leider in diversen Foren zu diesem Thema nichts finden.

Ich habe mehrere externe Formulare entwickelt für die interne HSQL-DB, die funktionieren prächtig.

Aber sobald ich im geöffneten Formular nur einen Datensatzwechsel vornehme - also ohne irgendwelche Änderungen an den Inhalten oder am Layout, indem ich nur auf den Datensatznavigator zum nächsten Satz klicke - und danach das Formular schliessen will, kommt die Sicherheitsabfrage "Das Dokument "Dokuname.odt" wurde geändert. Sollen die Änderungen abgespeichert werden?".
Es geht also offensichtlich nicht um eine Änderung der Daten, sondern um eine Änderung am Formular selbst, obwohl nichts daran geändert worden ist.

Es ist kein Makro in diesem Dokument. Das passiert auch bei ganz einfachen Formularen ohne Subformular.

Ist dieses Problem bekannt?
Wie kann ich diese unerwünschte Sicherheitsabfrage verhindern oder ausschalten?

Gruss und Dank
Beat


oo3.3, Windows XP
Ich verwende ganz bewusst oo3.3, da der Formularstart beim Öffnen eines Formulars mit vielen Checkbox-Feldern um ein Vielfaches schneller abläuft als bei den neuen Versionen, sowohl LO wie AO.
Zuletzt geändert von beat4u am So, 19.08.2012 15:00, insgesamt 1-mal geändert.
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Externes Formular, unerwünschte Sicherheitsabfrage

Beitrag von F3K Total »

Hi,
warum das so ist, kann ich nicht sagen, ich halte es für einen Fehler.
Du kannst Dir zwischenzeitlich mit einem kleinen Makro helfen:

Code: Alles auswählen

Sub set_not_modified

odoc = thiscomponent
oform = odoc.drawpage.forms.getbyname("DeinFormular")
if oform.ismodified = false then
odoc.Modified = false
endif

End Sub
Das hängst Du im Formularentwurfsmodus an das Formular-Ereignis "nach dem Datensatzwechsel"
So wird das Dokument, wenn es nicht modifiziert wurde, als "nicht modifiziert" gekennzeichnet und die Sicherheitsabfrage bleibt aus.

Gruß R
beat4u
**
Beiträge: 23
Registriert: Mi, 29.02.2012 13:08

Re: Externes Formular, unerwünschte Sicherheitsabfrage

Beitrag von beat4u »

Danke F3K, gute Idee, ich werd's ausprobieren und meine Frage dann als gelöst kennzeichnen.

Gruss Beat
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: [gelöst]Externes Formular, unerwünschte Sicherheitsabfra

Beitrag von juetho »

Zusätzlicher Hinweis nicht genau genug, Lösung unbrauchbar (siehe übernächsten Beitrag von DPunch): (nachträgliche Anmerkung, Jürgen)

Diese Lösung enthält eine logische Ungenauigkeit. Wenn bei einem Datensatz tatsächlich eine Änderung vorgenommen wurde und beim nächsten Datensatz nur weitergeblättert wird, erhält das Dokument dennoch den Status "nicht modifiziert". Die Abfrage ist deshalb zu ergänzen:

Code: Alles auswählen

if not oform.ismodified then
  odoc.Modified = odoc.Modified or false
endif
Damit werden andere Änderungen im Dokument weiterhin erkannt. Jürgen
Zuletzt geändert von juetho am Mi, 24.10.2012 09:11, insgesamt 1-mal geändert.
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
beat4u
**
Beiträge: 23
Registriert: Mi, 29.02.2012 13:08

Re: [gelöst]Externes Formular, unerwünschte Sicherheitsabfra

Beitrag von beat4u »

Hallo Jürgen

Bei mir läuft die Lösung von F3K bestens. Wenn ich am Dokument selber etwas ändere, dann läuft sowieso kein Makro und ich speichere die Änderung manuell ab. Diesen Fall muss ich also nicht abfragen.

Frage an dich: läuft deine Version bei dir einwandfrei?

Gruss
Beat
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: [gelöst]Externes Formular, unerwünschte Sicherheitsabfra

Beitrag von DPunch »

Servus
juetho hat geschrieben:Die Abfrage ist deshalb zu ergänzen(...)

Code: Alles auswählen

if not oform.ismodified then
  odoc.Modified = odoc.Modified or false
endif
Welchen tieferen Sinn hat diese Zuweisung?
"oDoc.isModified or false" wird immer gleich "oDoc.isModified" sein, wodurch die Zuweisung immer lautet "oDoc.Modified = oDoc.isModified", was nichts anderes ist als "5 = 5".
Mir erschließt sich nicht, was Du damit bezweckst.
juetho
******
Beiträge: 617
Registriert: Di, 20.04.2010 15:46
Wohnort: Berlin

Re: [gelöst]Externes Formular, unerwünschte Sicherheitsabfra

Beitrag von juetho »

DPunch hat geschrieben:Mir erschließt sich nicht, was Du damit bezweckst.
juetho hat geschrieben:Wenn bei einem Datensatz tatsächlich eine Änderung vorgenommen wurde und beim nächsten Datensatz nur weitergeblättert wird, erhält das Dokument dennoch den Status "nicht modifiziert".
Aber ich gebe zu, dass mein Code das Problem auch nicht löst. Ich werde ihn als unbrauchbar kennzeichnen. Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: [gelöst]Externes Formular, unerwünschte Sicherheitsabfra

Beitrag von DPunch »

Servus
juetho hat geschrieben:Wenn bei einem Datensatz tatsächlich eine Änderung vorgenommen wurde und beim nächsten Datensatz nur weitergeblättert wird, erhält das Dokument dennoch den Status "nicht modifiziert".
Das hatte ich schon gelesen, nur wird bei der Zuweisung "oDoc.Modified = oDoc.isModified or false" nie eine Änderung eintreten können, Modified wird vor und nach der Zuweisung immer den gleichen Wert aufweisen.
Daher hatte ich mich gefragt, ob dahinter etwas anderes steckt, was nicht direkt ersichtlich ist.
Antworten