Autor Thema: Hauptdokument mit Antwortdokumenten kopieren und autom. ändern  (Gelesen 9170 mal)

Offline pimpfling

  • Senior Mitglied
  • ****
  • Beiträge: 367
  • Geschlecht: Männlich
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
Gruß Stefan

----------------------------------
EDV-Systeme verarbeiten, womit sie gefüttert werden. Kommt Mist rein, kommt Mist raus.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
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

Offline pimpfling

  • Senior Mitglied
  • ****
  • Beiträge: 367
  • Geschlecht: Männlich
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
Gruß Stefan

----------------------------------
EDV-Systeme verarbeiten, womit sie gefüttert werden. Kommt Mist rein, kommt Mist raus.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
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

Offline pimpfling

  • Senior Mitglied
  • ****
  • Beiträge: 367
  • Geschlecht: Männlich
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
   
Gruß Stefan

----------------------------------
EDV-Systeme verarbeiten, womit sie gefüttert werden. Kommt Mist rein, kommt Mist raus.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Statt Call doc.CopyToDtabase

Set docNewMain = doc.CopyToDatabase

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

Bernhard

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
wie es in der Hilfe steht:

Set newNotesDocument = notesDocument.CopyToDatabase( notesDatabase )


und lass das mit getnth-document!!!!!!!!
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Driri

  • Gast
Noch eine kleine Anmerkung :

resdoc ist nicht sauber deklariert. So ist resdoc erstmal vom Typ Variant.

Offline pimpfling

  • Senior Mitglied
  • ****
  • Beiträge: 367
  • Geschlecht: Männlich
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
Gruß Stefan

----------------------------------
EDV-Systeme verarbeiten, womit sie gefüttert werden. Kommt Mist rein, kommt Mist raus.

Offline pimpfling

  • Senior Mitglied
  • ****
  • Beiträge: 367
  • Geschlecht: Männlich
Hier noch die Fehlermeldung:

Type mismatch in method RunStkCoerceRef: Unknown found, Unknown expected
Gruß Stefan

----------------------------------
EDV-Systeme verarbeiten, womit sie gefüttert werden. Kommt Mist rein, kommt Mist raus.

Driri

  • Gast
Was sagt denn der Debugger ?

Ist newdoc denn überhaupt korrekt gefüllt ?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
resdoc, newresdoc, newdoc sind nach wie vor als Variants deklariert - das sollte dringend abgestellt werden.

Bernhard

Offline pimpfling

  • Senior Mitglied
  • ****
  • Beiträge: 367
  • Geschlecht: Männlich
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?
Gruß Stefan

----------------------------------
EDV-Systeme verarbeiten, womit sie gefüttert werden. Kommt Mist rein, kommt Mist raus.

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
dim doc as ...
dim resdoc as ....  etc.
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline pimpfling

  • Senior Mitglied
  • ****
  • Beiträge: 367
  • Geschlecht: Männlich
Was sagt denn der Debugger ?

Ist newdoc denn überhaupt korrekt gefüllt ?

Ja, ist es...
Gruß Stefan

----------------------------------
EDV-Systeme verarbeiten, womit sie gefüttert werden. Kommt Mist rein, kommt Mist raus.

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline pimpfling

  • Senior Mitglied
  • ****
  • Beiträge: 367
  • Geschlecht: Männlich
dim doc as ...
dim resdoc as ....  etc.

ok, ok, alles in einer Reihe geht nicht, habs kapiert :)
Gruß Stefan

----------------------------------
EDV-Systeme verarbeiten, womit sie gefüttert werden. Kommt Mist rein, kommt Mist raus.

Offline MadMetzger

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.052
  • Geschlecht: Männlich
  • f.k.a. Alexis Pyromanis
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.

Offline DAU-in

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.129
  • Geschlecht: Weiblich
  • - unterwegs -
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
mühsam ernährt sich das Eichhörnchen

aktuelle Tätigkeit: Feldschubse

Offline pimpfling

  • Senior Mitglied
  • ****
  • Beiträge: 367
  • Geschlecht: Männlich
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
Gruß Stefan

----------------------------------
EDV-Systeme verarbeiten, womit sie gefüttert werden. Kommt Mist rein, kommt Mist raus.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz