Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: robertpp am 13.05.03 - 16:25:28

Titel: Doc erzeugen und Felder kopieren
Beitrag von: robertpp am 13.05.03 - 16:25:28
Ich hab ein doc und erstelle ein neues doc und dann kopiere ich alle felder vom alten ins neue doc:

Sub Click(Source As Button)
   Dim s As New NotesSession   
   Dim ws As New NotesUIWorkspace   
   Dim allefelder As String   
   Dim uidoc As NotesUIDocument   
   Dim doc As NotesDocument
   Dim docn As NotesDocument   
   Dim db As NotesDatabase
   Set db = s.CurrentDatabase      
   Set uidoc= ws.CurrentDocument
   Set doc=uidoc.Document
   Dim item As NotesItem
   Set docn = New NotesDocument( db )
'   Call doc.CopyAllItems( docn, True )
'   Set item = doc.GetFirstItem ("$UpdatedBy")
'   Call item.Remove
   Call uidoc.close
   Set uidoc = ws.EditDocument( True, docn)
   
End Sub

Das klappt auch alles und ich öffne dann das doc im frontend und der user muss selber speichern. Nur wie kann ich wenn ich unter querysave das stehen habe:

if uidoc.isnewdoc then
Msgbox "ja"
end if

machen , das er mir dann "ja" ausgibt?
Ich hab ja oben mit    

Set docn = New NotesDocument( db )

ein neues doc erstellt oder greift das nur im Forntend?
Was muss ich änder das das passt?
Titel: Re:Doc erzeugen und Felder kopieren
Beitrag von: Rob Green am 13.05.03 - 16:30:18
würde mir jetzt nicht so einen Kopp machen, sondern das problem umschiffen, indem Du einen Speicher Counter einbaust. Wenn das Doc zum ersten mal nach der Generierung im Backend ins Frontend geladen wird, ist das Feld zB =0. wenn es gespeichert wird, ist der Zähler auf 1 per Formel @if(@isdocbeingsaved(Feld+1;Feld)). Und genau dieses Feld wird im QuerySave abgefragt. Wenn 1, dann neu, wenn alt dann nicht neu (welche Zahlen, Zeichen Du auch immer nun nimmst)
Titel: Re:Doc erzeugen und Felder kopieren
Beitrag von: robertpp am 14.05.03 - 07:34:38
das heisst man kann nicht auf isnewdoc zurückgreifen obwohl ich ja das doc noch nie gespeichert habe!! auf was reagiert isnewdoc dann?
Titel: Re:Doc erzeugen und Felder kopieren
Beitrag von: Axel_Janssen am 14.05.03 - 08:25:03
auf was reagiert isnewdoc dann?

ich meine mich zu erinnern & ohne es jetzt getestet zu haben. ::)  

Set uidoc = ws.EditDocument( True, docn)

setzt das isNewDoc-flag auf true.
Hat mich glaub ich auch mal verwirrt.
Auf der anderen Seite: Testest du einigermassen, findet sich die Quelle des Problems schnell raus.
& Rob hat ja eine Alternative genannt.

Die Funktionsweise von LotusScript wird eben von Lotus gemacht. Vielleicht gibt es einen rationalen Grund für dieses Verhalten. Vielleicht nicht.  :)

Vielleicht liegt die Stärke von OpenSource eben gerade darin, dass hier bereits die betas von der user-community intensiv besprochen und kritisiert werden. z.B. sind die apache-Mailinglisten deutlich heftiger als alles was ich von Lotus gesehen habe.
Die Wahrscheinlichkeit, dass solche Logik-Schnitzer ausgebügelt werden, ist höher.
Auf der anderen Seite gibt es über LotusScript bessere Bücher.
Titel: Re:Doc erzeugen und Felder kopieren
Beitrag von: Rob Green am 14.05.03 - 09:13:25
yep, hab mich mal umgelesen auf LDD und da taucht der Käse auch auf (zB http://www-10.lotus.com/ldd/46dom.nsf/55c38d716d632d9b8525689b005ba1c0/4a91f28be22f5aaf85256c3600608556?OpenDocument )

Leider ist in KN Base nix zu finden. Leb halt damit und find nen Weg drumherum.
Titel: Re:Doc erzeugen und Felder kopieren
Beitrag von: robertpp am 14.05.03 - 09:28:58
Danke für die info. Dann muss ich wirklich einen anderen weg nehmen. ;)