AtNotes Übersicht Willkommen Gast. Bitte einloggen oder registrieren.
18.02.20 - 09:59:27
Übersicht Hilfe Regeln Glossar Suche Einloggen Registrieren
News: Jetzt mit HCL Notes / Domino 11 und einem Extraboard für Nomad!
Schnellsuche:
+  Das Notes Forum
|-+  Domino 8 und frühere Versionen
| |-+  ND6: Entwicklung (Moderatoren: Axel, eknori, Hoshee, ata, koehlerbv)
| | |-+  Im Frontend prüfen, ob ein Dokument bereits gespeichert wurde
« vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Im Frontend prüfen, ob ein Dokument bereits gespeichert wurde  (Gelesen 6299 mal)
HH
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 326



« am: 14.05.14 - 14:41:42 »

Hallo,

bevor ich in einer emedded View innerhalb einer Maske neue Dokumente erstelle, möchte ich prüfen, ob das (Haupt-) Dokument bereits gespeichert wurde

Wie kann ich mit LS sinnvoll prüfen, ob ein im Frontend mit compose erstelltes Dokument bereits gespeichert wurde?

uidoc.isnewdoc ist immer false
doc.isnewnote ist immer true (solange das Dokument noch nicht geschlossen wurde)

doc.universalid und doc.created haben immer einen Wert.

Geht das nur durch setzen eines Feldes im Postsave oder Fehlerbehandlung für doc.getdocumentByUNID( uidoc.document.universalID )?

Gruß
Hubert
Gespeichert
Driri
Gast
« Antworten #1 am: 14.05.14 - 15:02:56 »

Wie genau erstellst Du denn das Dokument ? Mit IsNewDoc habe ich schon öfters gearbeitet und kann mich nicht erinnern, da Probleme gehabt zu haben.
Gespeichert
HH
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 326



« Antworten #2 am: 14.05.14 - 15:28:35 »

Sorry, da habe ich wohl falsch getestet.

uidoc.isNewDoc arbeitet wie gewünscht.

Asche auf mein Haupt!

Gruß
Hubert
Gespeichert
Peter Klett
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 2639



« Antworten #3 am: 14.05.14 - 15:40:22 »

Wichtig ist, dass das Dokument wirklich mit Compose erstellt wird. Bei einem

Dim doc As New NotesDocument (db)
doc.Form = "test"
Set uidoc = workspace.EditDocument (True, doc)

ist uidoc.IsNewDoc = False, denn schließlich ist es ja uralt ...
Gespeichert
HH
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 326



« Antworten #4 am: 14.05.14 - 15:59:37 »

Die Feststellung habe ich gerade auch gemacht. Das Dokument wurde tatsächlich wie von Peter beschrieben erstellt.

Ich helfe mir nun mit der folgenden Funktion:

Code:

Function hasDocBeingSaved( uidoc As NotesUIDocument ) As Variant
On Error Goto fehler
Dim tempDoc As NotesDocument
Set tempDoc = uidoc.Document.ParentDatabase.GetDocumentByUNID( uidoc.Document.UniversalID )
If Not tempDoc Is Nothing Then
hasDocBeingSaved = True
End If
weiter:
Exit Function

fehler:
If Err = 4091 Then
'Dokument wurde noch nicht gespeichert
'fehlerhaft universalID
hasDocBeingSaved = False
Else
Msgbox Error & Chr(13) & "Zeile: " & Erl & Chr(13) & "nr.: " & Err, 16, "Fehler"
End If
Resume weiter
End Function


Danke für die Hinweise!

Gruß
Hubert
Gespeichert
Tode
Moderatoren
Gold Platin u.s.w. member:)
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 6326


Geht nicht, gibt's (fast) nicht... *g*


« Antworten #5 am: 15.05.14 - 08:26:57 »

Also wir haben seit geraumer Zeit eine Funktion im Einsatz, die zumindest unter 8 und 9 zuverlässig funktioniert:

Code:
Function Our_IsNewDoc( doc As NotesDocument ) As Boolean
On Error Goto ErrorRoutine
'===================================================================================================================================
Our_IsNewDoc = (doc.Lastmodified = 0)
'===================================================================================================================================
EndOfRoutine:
Exit Function
ErrorRoutine:
If ErrorHandler (GetThreadInfo (LSI_THREAD_PROC), GetThreadInfo (LSI_THREAD_CALLPROC)) = ERRORHANDLER_TOP_OF_STACK Then
Resume EndOfRoutine
End If
End Function

Nicht vom Error- Handler irritieren lassen, das ist unser default- Error- Handler, den müsstest Du natürlich ersetzen.

Habe leider grade keinen 6er Client da, um zu prüfen, ob das dort auch so ist.

In der Formelsprache haben wir ein Computed- For- Display- Feld mit der Formel:
Code:
@Text( @Modified - @Created < 5 )
Dabei ist die 5 ein Wert, der ein wenig Paranoia, ein wenig Erfahrung wiederspiegelt, denn manchmal liegen @Modified und @Created tatsächlich einige wenige Sekunden auseinander...

Ach ja: Das Feld ist Text, weil ich mir dann die Nummern- Umwandlung bei der Abfrage spare, und weil man sonst im Backend unschöne Ergebnisse bekommt, wenn man z.B. Feld <> 1 abfragt und das Feld nicht vorhanden ist (Zahl erwartet...)
« Letzte Änderung: 15.05.14 - 08:29:25 von Tode » Gespeichert

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen...

Mit jedem Tag meines Lebens erhöht sich zwangsweise die Zahl derer...
... denen ich am AdminCamp ein Bier schulde... Wenn ich hier jemanden angehe: Das ist nie persönlich, sondern immer gegen die "Sparwut" der Firmen gedacht, die ungeschultes Personal in die Administration unternehmenskritischer Systeme werfen... Sprecht mich einfach am AdminCamp an, ich zahle gerne zur "Wiedergutmachung" das ein oder andere Bierchen an der Bar
HH
Senior Mitglied
****
Offline Offline

Geschlecht: Männlich
Beiträge: 326



« Antworten #6 am: 16.05.14 - 11:36:44 »

Hallo Torsten,

das funktioniert auch mit 6.5. Danke.

Gruß
Hubert
Gespeichert
Seiten: [1] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS
Impressum Atnotes.de - Powered by Syslords Solutions - Datenschutz | Partner: