Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: pimpfling am 27.10.08 - 17:13:48

Titel: Hauptdokument mit Antwortdokumenten kopieren und autom. ändern
Beitrag von: pimpfling am 27.10.08 - 17:13:48
Hallo,

vorne weg, die Suchfunktion habe ich schon benutzt und die Szenarien die dort beschrieben waren, haben mich nicht weiter gebracht. Evtl. habe ich aber auch wieder nicht richtig gesucht ;)

Mein Fall sieht wie folgt aus:

User befindet sich in einem Hauptdokument (welches x Antwortdokumente haben kann)
Per Knopfdruck soll jetzt dieses Hauptdokument (samt der Antworten) kopiert werden.
Der Unterschied zu den Ursprünglichen Dokumenten (Haupt und Antwort) soll jetzt noch ein gesetztes Flag sein.
Die Ursprungsdokumente sollen also quasi als "Template" für die per Knopfdruck erstellten Dokumente fungieren.

Hat jemand etwas Beispielcode zur Hand an dem ich mich orientieren kann?
Oder einen Link aus dem Forum :)

viele Grüße
Stefan
Titel: Re: Hauptdokument mit Antwortdokumenten kopieren und autom. ändern
Beitrag von: koehlerbv am 27.10.08 - 17:21:48
Dafür brauchst Du doch nur
- das Hauptdokument kopieren (NotesDocument.CopyToDatabase)
- eine Collection der Responses zu bilden, durchzulaufen und auch diese zu kopieren
- im Hauptdokument Dein Flag zu setzen
- die Responses aus der obigen Collection mit StampAll zu behandeln.

Aufwändiger wird es natürlich, wenn die Responses wiederum Responses haben dürfen. Dann ist rekursive Programmierung angesagt, aber das Prinzip bleibt, Stefan.

HTH,
Bernhard
Titel: Re: Hauptdokument mit Antwortdokumenten kopieren und autom. ändern
Beitrag von: pimpfling am 27.10.08 - 18:00:03
Hallo Bernhard,

danke für die schnelle Antwort.
Ich hangele mich jetzt mal durch die einzelnen Steps :)
Step1 hat wunderbar geklappt.
Step2 erstellt mir zwar Antwortdokumente, diese hängen aber am Ursprungsdokument dran. wie kriege ich denn nun die Antwortdokumente an das neu erstellte?
Step3 und 4 sollte ich hinkriegen, will aber erstmal Step2 verstehen :)

Gruß Stefan
Titel: Re: Hauptdokument mit Antwortdokumenten kopieren und autom. ändern
Beitrag von: koehlerbv am 27.10.08 - 18:08:35
Step 2: Ah ja ... Da hätte ich auch daran denken müssen!
Mache noch auf das kopierte ResponseDocument ein NotesDocument.MakeResponse mit Bezug auf Dein gerade kopiertes Hauptdokument.

Bernhard
Titel: Re: Hauptdokument mit Antwortdokumenten kopieren und autom. ändern
Beitrag von: pimpfling am 28.10.08 - 09:27:33
Ich glaube das Problem ist der fehlende Bezug auf meine soeben erstellten Dokumente...
Wie komme ich an die ran?


Dim session As New NotesSession
Dim db As NotesDatabase
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim dc As NotesDocumentCollection
Dim resdoc, doc As NotesDocument
   
Set db = session.CurrentDatabase   
Set uidoc = workspace.CurrentDocument
   
Set doc = uidoc.Document
Call doc.CopyToDatabase(db)
   
Set dc = doc.Responses
   
If dc.Count > 0 Then
   For i = 1 To dc.Count      
      Set resdoc = dc.GetNthDocument(i)
      Call resdoc.CopyToDatabase(db)
      Call resdoc.MakeResponse( doc )
   Next  'For i = 1 To collection.Count
End If  'If collection.Count = 0 Then
   
Titel: Re: Hauptdokument mit Antwortdokumenten kopieren und autom. ändern
Beitrag von: koehlerbv am 28.10.08 - 09:34:46
Statt Call doc.CopyToDtabase

Set docNewMain = doc.CopyToDatabase

Dann kannst Du später
Set docNewResponse = resdoc.CopyToDatabase
Call docNewResponse.MakeResponse (docNewMain)
verwenden.

Bernhard
Titel: Re: Hauptdokument mit Antwortdokumenten kopieren und autom. ändern
Beitrag von: DAU-in am 28.10.08 - 09:35:54
wie es in der Hilfe steht:

Set newNotesDocument = notesDocument.CopyToDatabase( notesDatabase )


und lass das mit getnth-document!!!!!!!!
Titel: Re: Hauptdokument mit Antwortdokumenten kopieren und autom. ändern
Beitrag von: Driri am 28.10.08 - 09:51:41
Noch eine kleine Anmerkung :

resdoc ist nicht sauber deklariert. So ist resdoc erstmal vom Typ Variant.
Titel: Re: Hauptdokument mit Antwortdokumenten kopieren und autom. ändern
Beitrag von: pimpfling am 28.10.08 - 10:03:40
Hallo, den Hinweis in der Hilfe hatte ich zwischenzeitlich auch gefunden :)

Habs jetzt so gemacht und bekomme beim "MakeResponse" ein Type Mismatch:
Das kopieren des Hauprdoks und des ersten Antwortdoks klappt noch...


Dim session As New NotesSession
Dim db As NotesDatabase
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim dc As NotesDocumentCollection
Dim resdoc, newresdoc, newdoc, doc As NotesDocument
   
Set db = session.CurrentDatabase   
Set uidoc = workspace.CurrentDocument
   
Set doc = uidoc.Document
   
Set newdoc = doc.CopyToDatabase( db )
   
Set dc = doc.Responses
   
If dc.Count > 0 Then
   For i = 1 To dc.Count      
      Set resdoc = dc.GetNthDocument(i)
      Set newresdoc = resdoc.CopyToDatabase( db )
      Call newresdoc.MakeResponse( newdoc )
   Next  'For i = 1 To collection.Count
End If  'If collection.Count = 0 Then
Titel: Re: Hauptdokument mit Antwortdokumenten kopieren und autom. ändern
Beitrag von: pimpfling am 28.10.08 - 10:09:17
Hier noch die Fehlermeldung:

Type mismatch in method RunStkCoerceRef: Unknown found, Unknown expected
Titel: Re: Hauptdokument mit Antwortdokumenten kopieren und autom. ändern
Beitrag von: Driri am 28.10.08 - 10:11:26
Was sagt denn der Debugger ?

Ist newdoc denn überhaupt korrekt gefüllt ?
Titel: Re: Hauptdokument mit Antwortdokumenten kopieren und autom. ändern
Beitrag von: koehlerbv am 28.10.08 - 10:14:11
resdoc, newresdoc, newdoc sind nach wie vor als Variants deklariert - das sollte dringend abgestellt werden.

Bernhard
Titel: Re: Hauptdokument mit Antwortdokumenten kopieren und autom. ändern
Beitrag von: pimpfling am 28.10.08 - 10:36:08
resdoc, newresdoc, newdoc sind nach wie vor als Variants deklariert - das sollte dringend abgestellt werden.

Bernhard

hm, ok - das DIM und das SET reichten wohl nicht aus...
Was muss ich denn machen um aus den resdoc, newresdoc, newdoc richtige Notesdoks zu machen?
...und warum ist doc kein Variant? Muss ich die anderen drei anders deklarieren?
Titel: Re: Hauptdokument mit Antwortdokumenten kopieren und autom. ändern
Beitrag von: DAU-in am 28.10.08 - 10:38:25
dim doc as ...
dim resdoc as ....  etc.
Titel: Re: Hauptdokument mit Antwortdokumenten kopieren und autom. ändern
Beitrag von: pimpfling am 28.10.08 - 10:38:37
Was sagt denn der Debugger ?

Ist newdoc denn überhaupt korrekt gefüllt ?

Ja, ist es...
Titel: Re: Hauptdokument mit Antwortdokumenten kopieren und autom. ändern
Beitrag von: Axel am 28.10.08 - 10:39:39
Was muss ich denn machen um aus den resdoc, newresdoc, newdoc richtige Notesdoks zu machen?


Dim resdoc As NotesDocument
Dim newresdoc As NotesDocument
Dim newdoc As NotesDocument


Axel
Titel: Re: Hauptdokument mit Antwortdokumenten kopieren und autom. ändern
Beitrag von: pimpfling am 28.10.08 - 10:40:51
dim doc as ...
dim resdoc as ....  etc.

ok, ok, alles in einer Reihe geht nicht, habs kapiert :)
Titel: Re: Hauptdokument mit Antwortdokumenten kopieren und autom. ändern
Beitrag von: MadMetzger am 28.10.08 - 10:40:57
Du solltest dir angwöhnen grundsätzlich mit Option Declare arbeiten. Du kannst ein Notedocument auch in ein Variant packen, aber das ist schlechter Programmierstil und führt dazu, dass einige Fehler erst zur Laufzeit erkannt werden. Das verhinderst du durch setzen von Option Declare. Irgendwo gibt es im Designer auch eine Option, die das automatisch tut.
Titel: Re: Hauptdokument mit Antwortdokumenten kopieren und autom. ändern
Beitrag von: DAU-in am 28.10.08 - 10:50:38
Irgendwo gibt es im Designer auch eine Option, die das automatisch tut.

In einem Scriptfenster rechte Maustaste, dann auf Programmers Pane gehen, 2. Tab Options: automatically add "Option declare"

Grüsse

DAu-in
Titel: Re: Hauptdokument mit Antwortdokumenten kopieren und autom. ändern
Beitrag von: pimpfling am 28.10.08 - 10:59:44
Irgendwo gibt es im Designer auch eine Option, die das automatisch tut.

In einem Scriptfenster rechte Maustaste, dann auf Programmers Pane gehen, 2. Tab Options: automatically add "Option declare"

Grüsse

DAu-in


Habe ich jetzt so bei mir eingestellt :)

Eine Fehlermeldung bekomme ich jetzt nicht mehr, allerdings hängen die neuen AntwortDoks immer nocht nicht am neuen Hauptdok dran...


Dim session As New NotesSession
Dim db As NotesDatabase
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim dc As NotesDocumentCollection
Dim resdoc  As NotesDocument
Dim newresdoc  As NotesDocument
Dim newdoc  As NotesDocument
Dim doc As NotesDocument
   
Set db = session.CurrentDatabase   
Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document
Set newdoc = doc.CopyToDatabase( db )
Set dc = doc.Responses

If dc.Count > 0 Then
                Set resdoc = dc.GetfirstDocument
   Set newresdoc = resdoc.CopyToDatabase( db )
   Call newresdoc.MakeResponse( newdoc )
End If

Habs jetzt vereinfacht und erstmal nur ein Antwortdokument in der Mangel...

Gruß Stefan
Titel: Re: Hauptdokument mit Antwortdokumenten kopieren und autom. ändern
Beitrag von: koehlerbv am 28.10.08 - 11:04:56
Nach dem MakeResponse solltest Du natürlich das Dokument auch noch speichern  ;)

Bernhard
Titel: Re: Hauptdokument mit Antwortdokumenten kopieren und autom. ändern
Beitrag von: pimpfling am 28.10.08 - 11:08:22
Nach dem MakeResponse solltest Du natürlich das Dokument auch noch speichern  ;)

Bernhard

Abgefahren, das wars, danke.... :)
Titel: Re: Hauptdokument mit Antwortdokumenten kopieren und autom. ändern
Beitrag von: koehlerbv am 28.10.08 - 11:12:47
Manchmal ist es ganz praktisch, die DesignerHelp zu studieren:
Zitat
Usage
You must call Save after this method if you want to save the change you have made.
;D

Bernhard