Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: hmarco am 06.08.02 - 14:46:53

Titel: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: hmarco am 06.08.02 - 14:46:53
Hallo,

ich habe ein paar Antwortobjekte,  in denen im Feld
SA entweder "Ja" oder "Nein" steht,

jetzt möchte ich, dass wenn ein Antwortdokument
ein "Ja" enthält, dass dies im Hauptdokument in einer
Ansicht ein "Ja" angezeigt wird.

Ansonsten ein "Nein".

Mfg Marco
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: Axel am 06.08.02 - 15:15:07
Hi,

füge im Hauptdokument ein entsprechendes Feld ein und setze den Vorgagewert auf "Nein".

Im QuerySave-Event des Antwortdokumentes füllst du dann dieses Feld in Abhängigkeit des Feldes SA.

Das könnte so aussehen:

Sub Querysave(Source As Notesuidocument, Continue As Variant)

Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim parentdoc As Notesdocument

Set db = session.CurrentDatabase
Set doc = Source.Document

If doc.SA(0) = "Ja" Then
 Set parentdoc = db.GetDocumentByUNID(doc.ParentDocumentUNID )
 parentdoc.Feldname = "Ja"
 Call parentdoc.Save(True, True)
End If

Ich hoffe das hilft dir weiter.

Axel
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: hmarco am 07.08.02 - 09:11:44
Hallo,

wie ich deinen Quellcode verstehe:

Ich erstelle ein Antwortobjekt mit "Ja" und danach ein
Antwortobjekt mit "Nein".

Dann würde er doch auch "Nein" ins Hauptdokument schreiben. Jedoch ich möchte es ja so haben,
dass im Hauptdokument ein "Ja" steht, wenn mindestenes ein Antwortobjekt ein "Ja" enthält.

Aber der Ansatz ist ja schon mal nicht schlecht.

Mfg Marco
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: Axel am 07.08.02 - 09:26:55
Zitat


Ich erstelle ein Antwortobjekt mit "Ja" und danach ein
Antwortobjekt mit "Nein".  

Dann würde er doch auch "Nein" ins Hauptdokument schreiben.



Hi,

dem ist nicht so, denn er bearbeitet das Feld im Hauptdokument nur, wenn im Antwortdokument im Feld SA ein Ja steht -> If - Abfrage.

Das sollte eingentlich so funktionieren. Hast du's mal probiert?

Axel
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: hmarco am 07.08.02 - 09:46:02
Hallo,

geht leider nicht er setzt den Wert nicht um.

Kann es am Vorgabewert liegen?

Habe folgendes eingegeben:

@If(@IsNewDoc;"Nein";SA)

Mfg Marco
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: Axel am 07.08.02 - 10:02:23
Hi,

glaube ich eigentlich nicht. Aber versuch's mal ohne bzw. nur mit "Nein".

Bekommst du eine Fehlermeldung, setzt er den Feldwert im Antwortdokument nicht oder hat er Probleme mit dem Script (was sieht man im Debugger) ?

Axel
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: rar am 07.08.02 - 10:02:50
Hi Marco!
Probier mal das im Querysave der Antwortmaske:

Dim session As New NotesSession
Dim db As NotesDatabase
Dim parentUNID As String
Dim ParentDocument As NotesDocument
Dim sa As NotesItem
Dim saValue As String
Dim responses As NotesDocumentCollection
Dim doc As NotesDocument      
Set db = session.CurrentDatabase
Set doc = Source.Document
parentUNID = doc.ParentDocumentUNID
Set ParentDocument = db.GetDocumentByUNID(parentUNID)
Set responses = ParentDocument.Responses
Set doc = responses.GetFirstDocument
Do While Not doc Is Nothing
 Set sa = doc.GetFirstItem("SA")
 saValue = sa.Values(0)              
 If saValue = "ja" Then
   ParentDocument.FeldName = "Ja"
   Call ParentDocument.Save(True,True)
   Exit Sub      
 End If
 Set doc = responses.GetNextDocument(doc)
Loop
ParentDocument.FeldName = "Nein"                  
Call ParentDocument.Save(True,True)

-rar
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: Axel am 07.08.02 - 10:19:04
@rar

Ähhh?!

Warum alle Antwortdokumente durchlaufen, wenn man nur eins bearbeitet?   ??? ???


Axel
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: rar am 07.08.02 - 10:31:07
Angenommen:
Ich habe 2 Antworten. Beide "Nein"
Dann setze ich den Wert einer Antwort auf "Ja". Dann würde es reichen, wenn ich nur in dem einen Antwortdokument nachschaue.
Jetzt wird noch das zweite auf  "Ja" gesetzt. Dann passts auch noch.
Wenn aber dann das erste AntwortDoc wieder auf "Nein" gesetzt wird, muß ich ja (bevor ich den Wert im HauptDoc wieder auf "Nein" setze) nachschauen, ob in irgendeiner anderen Antwort "Ja" steht.
Glaub ich. War das irgendwie verständlich? ???
-rar
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: Axel am 07.08.02 - 10:37:24
@rar

Yoo!

Von der Seite betrachtet hast du recht. Diese Seite der Medaille hab ich bisher ausser Acht gelassen.


Axel
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: rar am 07.08.02 - 10:42:39
;D
*mirselberaufdieschulterklopfend*
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: Axel am 07.08.02 - 10:49:41
@rar

Aber nicht so fest, denn du kennst ja das Sprichwort
"Eigenlob....."   ;D ;D

Trotzdem, darfst du ein bisschen klopfen. Hast das gut gemacht.   ;D ;D

Axel
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: hmarco am 07.08.02 - 13:24:20
Hallo,

beide Skripts gehen nicht.

Es wird der Wert in SA wird nicht
gesetzt.

Mfg Marco
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: Axel am 07.08.02 - 13:34:29
Hi,

wie setzt du denn den Wert von SA? Soweit ich das bisher verstanden haben macht das der User per Eingabe.


Axel
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: rar am 07.08.02 - 13:35:17
Heißt das Feld im Hauptdoc auch SA?
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: hmarco am 07.08.02 - 13:39:05
Hallo,

das Feld heißt im Hauptdokument wie auch im Antwortdokument "SA".

Das Feld "SA" im Antwortobjekt ist nach einem anderem Feld berechnet.

Mfg Marco
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: hmarco am 09.08.02 - 10:15:10
hallo,

habt ihr noch eine Idee?

Wäre euch sehr dankbar.

Mfg Marco
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: Axel am 09.08.02 - 10:24:52
Hi,

kann es sein, dass durch die Berechnung nach einem anderen Feld ein falscher Wert in SA steht, und dadurch die Aktualisierung des HauptDoks nicht zustande kommt?

Was sagt denn der Debugger? Welchen Feldinhalt hat SA bei der IF-Abfrage ?

Axel
 
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: hmarco am 09.08.02 - 10:42:07
Hallo,

merkwürdig in QuerySave hat Notes
das Skript nicht gespeichert.  ???

Ich habe jetzt das Skript von "rar" eingefügt und bekomme jetzt den Fehler:

"invalid universal id"

Was bedeutet das?

Mfg Marco
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: Axel am 09.08.02 - 10:51:20
Hi,

das bedeutet, dass er das Dokument mit dieser ID nicht finden kann.

Überprüfe das Script nochmal.


Axel
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: hmarco am 09.08.02 - 11:04:30
Hallo,

bei dieser Anweisung bleibt er hängen:

Set ParentDocument = db.GetDocumentByUNID(parentUNID)


Mfg Marco
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: rar am 09.08.02 - 11:18:02
Hi!
Vergleich mal die parentUNID aus dem Debugger mit der UNID des Hauptdokumentes...
Kann es vielleicht sein, daß das ParentDoc der Antwort schon gelöscht ist?
-rar
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: hmarco am 09.08.02 - 11:46:58
Hallo,

kann es evt. angehen, dass ein Skript was ich mal eingefügt habe um Dokumente vor dem bearbeiten zu
schützen die UID verändert.


Ich habe in der Datenbank auch noch das Problem,
dass immer wenn ich die Maske "Lizenz" öffne, dass
ein Dokument mit den Werten die ich dort eingetragen
habe erscheint und auch nicht mehr weg geht.


Er zeigt mir dann immer an Vorgabemaske nicht gefunden.

Mfg Marco
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: Axel am 09.08.02 - 12:09:04
Zitat
kann es evt. angehen, dass ein Skript was ich mal eingefügt habe um Dokumente vor dem bearbeiten zu
schützen die UID verändert.


Hi,

die ID eines Dokumentes wird nicht verändert. Sie wird einmal vergeben (beim Anlegen) und bleibt, die Lebendauer der Dokumentes über, unverändert.

Hast du evt. Dokumente über die Zwischenablage ausgeschnitten oder kopiet und dann wieder eingefügt?

Zitat
Ich habe in der Datenbank auch noch das Problem,
dass immer wenn ich die Maske "Lizenz" öffne, dass
ein Dokument mit den Werten die ich dort eingetragen
habe erscheint und auch nicht mehr weg geht.

Er zeigt mir dann immer an Vorgabemaske nicht gefunden.



Was meinst du, mit nicht mehr weg geht. Ich werde das Gefühl nicht los in der Datenbank stimmen noch einige andere Dinge nicht.

Axel
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: rar am 09.08.02 - 12:39:30
Grüße!

Zitat
die ID eines Dokumentes wird nicht verändert. Sie wird einmal vergeben (beim Anlegen) und bleibt, die Lebendauer der Dokumentes über, unverändert.

Ist nicht ganz richtig. Über die Property UniversalID im NotesDocument kann man die UNID ändern.

Marco:
Dein Problem mit der Vorgabemaske kann auftreten, wenn man ein Doc ohne dem Feld 'Form' oder mit einer Maske, die es in der Db nicht gibt, aufmachen will.
Den Fehler könntest du beheben, wenn du in den Eigenschaften der Maske die Option Vorgabe-Datenbankmaske anhack ist.

Was sagt denn der UNID Vergleich?

-rar
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: Axel am 09.08.02 - 12:52:35
Zitat
Ist nicht ganz richtig. Über die Property UniversalID im NotesDocument kann man die UNID ändern.


@rar

Ist mir entgangen, danke für den Hinweis.

Axel
Titel: Re: Werte von Antwortdokumenten in Hauptdokument
Beitrag von: hmarco am 12.08.02 - 09:20:07
Hallo,

ich weiß auch, dass da was nicht stimmt.

Ich habe aber schon mal ein bisschen experimentiert und herausgefunden, dass diese "Vorgabemaske nicht gefunden"-Dokumente erstellt werden, wenn ich ein neues Dokument erstellen will, es nicht speichere wenn ich das Fenster schließe. Danach habe ich diese Dokumente. Dies passiert auch bei anderen Datenbanken, die das gleiche Skript enthalten.

Ich schreib euch mal was für Skripte überhaupt in meinen Masken sind:

Sub Postopen(Source As Notesuidocument)
     Dim sess As New NotesSession
     Dim doc As NotesDocument
     Dim thatUser As String
     Set doc = source.document
     If Source.EditMode Then
           If doc.HasItem("LockEdit") Then
                 Source.EditMode = False
                 thatUser = doc.LockEdit(0)
                 Msgbox thatUser & " bearbeitet derzeit dieses Dokument. Solange dieser Benutzer es bearbeitet, können sie nichts ändern."
           Else
                 Call doc.ReplaceItemValue("LockEdit", sess.CommonUserName)
                 Call doc.ReplaceItemValue("LockEditTime", Now)
                 Call doc.Save(True, True)
           End If
     End If
End Sub

Sub Querymodechange(Source As Notesuidocument, Continue As Variant)
     Dim sess As New NotesSession
     Dim doc As NotesDocument
     Dim thatUser As String
     Set doc = source.document
     If Source.EditMode Then
           Continue = True
     Else
           If doc.HasItem("LockEdit") Then
                 thatUser = doc.LockEdit(0)
                 Msgbox thatUser & " bearbeitet derzeit dieses Dokument. Solange dieser Benutzer es bearbeitet, können sie nichts ändern."
                 Continue = False
           Else
                 Continue = True
                 Call doc.ReplaceItemValue("LockEdit", sess.CommonUserName)
                 Call doc.ReplaceItemValue("LockEditTime", Now)
                 Call doc.Save(True, True)
           End If
     End If
End Sub

Sub Querysave(Source As Notesuidocument, Continue As Variant)
     
     Dim session As New NotesSession
     Dim db As NotesDatabase
     Dim parentUNID As String
     Dim ParentDocument As NotesDocument
     Dim sa As NotesItem
     Dim saValue As String
     Dim responses As NotesDocumentCollection
     Dim doc As NotesDocument  
     Set db = session.CurrentDatabase
     Set doc = Source.Document
     parentUNID = doc.ParentDocumentUNID
     Set ParentDocument = db.GetDocumentByUNID(parentUNID)
     Set responses = ParentDocument.Responses
     Set doc = responses.GetFirstDocument
     Do While Not doc Is Nothing
           Set sa = doc.GetFirstItem("SA")
           saValue = sa.Values(0)      
           If saValue = "ja" Then
                 ParentDocument.FeldName = "Ja"
                 Call ParentDocument.Save(True,True)
                 Exit Sub  
           End If
           Set doc = responses.GetNextDocument(doc)
     Loop
     ParentDocument.FeldName = "Nein"    
     Call ParentDocument.Save(True,True)
     
End Sub

Sub Queryclose(Source As Notesuidocument, Continue As Variant)
     Dim sess As New NotesSession
     Dim doc As NotesDocument
     Set doc = source.document
     If doc.LockEdit(0) = sess.CommonUserName Then
           Call doc.RemoveItem("LockEdit")
           Call doc.RemoveItem("LockEditTime")
           Call doc.Save(True, True)
     End If
End Sub


Mfg Marco