Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: ditodotorg am 29.07.13 - 11:25:24

Titel: embedded view mit ausgewählten dokumenten
Beitrag von: ditodotorg am 29.07.13 - 11:25:24
Hallo ihr kleveren Notes-nutzer!

Ein neuer Schrei nach Hilfe....
Möchte gerne, dass auf klick eines Buttons folgendes passiert:
gehe zur view
wähle dort das erste dokument
vergleiche einen feldwert aus dieser view mit einem feldwert aus der geöffneten form
vergleiche einen zweiten feldwert in dieser view mit einem feldwert aus der geöffneten form
wenn beide übereinstimmen, dann lege die dokumente in einen folder

den folder habe ich erstellt und in dem formular als embedded view hinterlegt

habe folgende programmierung des buttons bereits vorgenommen:

Sub Click(Source As Button)
Dim session As NotesSession
Set session = New NotesSession
 Dim db As notesdatabase
Dim view As NotesView
Dim doc As NotesDocument

Set db = session.CurrentDatabase
Set view = db.GetView("Untersuchungskartei")
Set doc = view.GetFirstDocument

While Not (doc Is Nothing)
                If patient_number = profile_bill Then
                          doc.PutInFolder "Untersuchungen"
                End If
      Set doc = view.GetNextDocument(doc)
Wend

End Sub


Das ganze ist natürlich noch nicht zu ende gedacht.... aber ich komm grad auch nicht weiter...... HILFE!

Vielen Dank schonmal....

Grüße
Titel: Re: embedded view mit ausgewählten dokumenten
Beitrag von: DerAndre am 29.07.13 - 11:49:01
Hi.

Hast Du einen Fehler oder fehlt Dir was zu einer Lösung oder....?
Titel: Re: embedded view mit ausgewählten dokumenten
Beitrag von: pram am 29.07.13 - 11:54:42
Hallo Kathi
Zitat
den folder habe ich erstellt und in dem formular als embedded view hinterlegt
und vermutlich kategorisiert mit "singleCategory"-Option (ansonsten nachfolgende Kommetare ignorieren)

Dazu passt natürlich folgender Code nicht:
Zitat
Set view = db.GetView("Untersuchungskartei")
Set doc = view.GetFirstDocument
Weil: Du holst dir die View im Backend (diese weiß nichts von der Einbettung) und holst dir dann das erste Dokument.
Schau dir mal view.getAllDocumentsByKey bzw. den ViewNavigator an. (du musst im Backend nach der selben Kategorie suchen)

an das aktuelle doc kommst du in deinem Button mit "set currDoc = workspace.CurrentDocument.document"
und der Vergleich müsste dann so sein:
Code
                If doc.patient_number = currdoc.profile_bill Then
                          doc.PutInFolder "Untersuchungen"
                End If

Gruß
Roland
Titel: Re: embedded view mit ausgewählten dokumenten
Beitrag von: koehlerbv am 29.07.13 - 13:11:56
Code
                If doc.patient_number = currdoc.profile_bill Then
                          doc.PutInFolder "Untersuchungen"
                End If

Das muss aber auch noch "optimiert" werden, sonst gibt es ein Type Mismatch:
If doc.patient_number (0) = currdoc.profile_bill (0) Then
    doc.PutInFolder "Untersuchungen"
End If

Bernhard

Titel: Re: embedded view mit ausgewählten dokumenten
Beitrag von: ditodotorg am 29.07.13 - 19:55:39
Hm.... vielleicht liegts an der späten Stunde in Kombi mit dem Laienwissen meinerseits.... aber ich brauch noch ne genauere anleitung  :-[ Sry.... könntet ihr mir das bitte ausführlicher darstellen... ichz weiß nämlich nicht genaus wie und was ich deklarieren muss......

hab bis jetzt folgendes:

Sub Click(Source As Button)
   Dim session As NotesSession
   Set session = New NotesSession
   
   Dim workspace As NotesUIWorkspace
   Dim db As notesdatabase
   Dim view As NotesView
   Dim doc As NotesDocument
   Dim currdoc As NotesUIDocument
   
   Set db = session.CurrentDatabase
   Set view = db.GetView("Untersuchungskartei")
   Set doc = view.getAllDocumentsByKey("profile")
   Set currDoc = workspace.CurrentDocument
   
   While Not (doc Is Nothing)
      If doc.profile_doc (0) = currdoc.patient_number (0) Then
         doc.PutInFolder "Untersuchungen"
      End If
   Wend
   
End Sub
Titel: Re: embedded view mit ausgewählten dokumenten
Beitrag von: pram am 30.07.13 - 08:32:19
Mach als erstes mal ein "Option Declare" in deinen Options Block (dies sollte man übrigens so gut wie IMMER machen!)
Dann meckert der Compiler schon mal viele Fehler an.

1. currDoc muss ein notesdocument und kein notesUIdocument sein (=ws.currentdocument.document)
2. Sowas geht natürlich nicht:  Set doc = view.getAllDocumentsByKey("profile") => Schau unter der Hilfe zu NotesDocumentCollection
(außerdem übergibst du "profile" als String, dies entspricht nicht einem Feldwert und ist womöglich nicht das was du willst)

3. Dann gibt es noch den Debugger mit dem du den Code schritt für schritt abarbeiten kannt und z.B. prüfen kannst ob die richtigen Dokumente gefunden werden.

Gruß
Roland
Titel: Re: embedded view mit ausgewählten dokumenten
Beitrag von: ditodotorg am 30.07.13 - 09:55:53
So.... habe mich mal schlau gemacht und die anpassungen übernommen.... allerdings will er immer noch nicht mitspielen... :-(

Er möchte die Feldbezeichnung für die collection in der if-schleife nicht annehmen... aber wieso? das versteh ich nicht so richtig.... kann mir da jemand weiterhelfen?

Sub Click(Source As Button)
   Dim session As NotesSession
   Set session = New NotesSession
   
   Dim db As notesdatabase
   Dim view As NotesView
   Dim dc As NotesDocumentCollection

   Dim workspace As NotesUIWorkspace
   Dim currdoc As NotesUIDocument
   
   Set db = session.CurrentDatabase
   Set view = db.GetView("Untersuchungskartei")
   Set dc = view.getAllDocumentsByKey("profile_doc";False)

   Set currDoc = workspace.CurrentDocument.Document
   
   While Not (doc Is Nothing)
      If dc.profile_doc (0) = currdoc.patient_number (0) Then
         dc.PutInFolder "Untersuchungen"
      End If
   Wend
   
End Sub
Titel: Re: embedded view mit ausgewählten dokumenten
Beitrag von: pram am 30.07.13 - 10:10:06
Zitat
...in der if-schleife nicht annehmen...
http://www.if-schleife.de/ ;)

Du vermischt hier Dokumente und die Collection (welche die Dokumente enthält)
Schau dir bitte nochmal die Hilfe zur NotesDocumentcollection an. Durch eine DC geht man wie Folgt durch:

set doc = dc.getFirstDocument
while not doc is nothing
  ....
  set doc = dc.getNextDocument(doc)
wend

außerdem denke ich dass dies immer noch falsch ist:
  Set dc = view.getAllDocumentsByKey("profile_doc";False)
...macht zumindest keinen Sinn, wenn deine Embedded-View kategorisiert ist und nur diese Kategorie angezeigt wird (ist sie das? Diese Frage ist noch offen!)
Wenn ja musst du höchstwahrscheinlich ein Feld angeben:
  Set dc = view.getAllDocumentsByKey( currDoc.kategorie_feld(0) ;False)

Gruß
Roland
Titel: Re: embedded view mit ausgewählten dokumenten
Beitrag von: ditodotorg am 30.07.13 - 10:41:09
Dank bis hierhn schonmal, vor allem auch für die Geduld mit mir als Anfänger :-)...

Zuersteinmal.... ja categorized ist die view...

nun meint er aber das "object variable not set"... hä? wie denn das jetzt?

meine jetzige button-deklaration:

Sub Click(Source As Button)
   Dim session As NotesSession
   Set session = New NotesSession
   
   Dim db As notesdatabase
   Dim view As NotesView
   Dim dc As NotesDocumentCollection

   Dim workspace As NotesUIWorkspace
   Dim currdoc As NotesUIDocument
   
   Set db = session.CurrentDatabase
   Set view = db.GetView("Untersuchungskartei")
   Set dc = view.getAllDocumentsByKey(currdoc.profile_doc(0),False)

   Set currDoc = workspace.CurrentDocument.Document
   
   While Not (doc Is Nothing)
      If dc.profile_doc (0) = currdoc.patient_number (0) Then
         dc.PutInFolder "Untersuchungen"
      End If
      Set doc = dc.GetNextDocument(doc)
   Wend
   
End Sub
Titel: Re: embedded view mit ausgewählten dokumenten
Beitrag von: ascabg am 30.07.13 - 10:46:02
Hallo,

Wo wird denn das doc gesetzt? (siehe Deine Schleife)

Und was willst Du hiermit erreichen?
Zitat
If dc.profile_doc (0) = currdoc.patient_number (0) Then


Andreas
Titel: Re: embedded view mit ausgewählten dokumenten
Beitrag von: ditodotorg am 30.07.13 - 10:49:49
ups.... das sollte natürlich if doc. ......... heißen
und natürlich auch doc.putinfolder.....
Titel: Re: embedded view mit ausgewählten dokumenten
Beitrag von: ascabg am 30.07.13 - 11:01:56
Das mag ja sein, aber wo setzt Du denn Dein doc?

Sprich wo erfolgt Dein Set doc = ...


Andreas
Titel: Re: embedded view mit ausgewählten dokumenten
Beitrag von: ditodotorg am 30.07.13 - 11:03:49
mh... das hab ich ebenfalls vergessen hier mit hinzuschreiben....
nach set dc.....
kommt set doc = dc.getfirstdocument
Titel: Re: embedded view mit ausgewählten dokumenten
Beitrag von: cebolina am 30.07.13 - 14:19:00
   
Set dc = view.getAllDocumentsByKey(currdoc.profile_doc(0),False)

Set currDoc = workspace.CurrentDocument.Document

Du verwendest in Set dc das currDoc, obwohl es erst später gesetzt wird.

Tausche die Reihenfolge.

Gruß Stefan
Titel: Re: embedded view mit ausgewählten dokumenten
Beitrag von: ditodotorg am 30.07.13 - 14:25:17
hab ich gemacht.... das half allerding leider auch nicht :-(
müssen doc und currdoc eigentlich beide als notesdocument bzw als notesuidocument deklariert werden?
Titel: Re: embedded view mit ausgewählten dokumenten
Beitrag von: ascabg am 30.07.13 - 14:29:58
Also.

Die Hast eine Collection (dc) erstellt.
Willst Du nun auf die einzelnen Dokumente in dieser zugreifen, so musst Du ein NotesDocument haben.

Dim doc As NotesDocument
Set doc = dc.GetFirstDocument

Steht aber auch alles in der Designer-Hilfe, auch mit schoenen Beispielen.


Andreas
Titel: Re: embedded view mit ausgewählten dokumenten
Beitrag von: ditodotorg am 30.07.13 - 14:44:03
ich nehme an, dass er folgendes problem hat....

ich bin in der form x
habe dort den button, der die genannte programmirung enthält
nun bezieht sich die programmierung aber auf eine view, dessen dokumente wieder aus einer ganz anderen form her resultieren
alle dokumente sind aber durch eine patienten-id miteinander verbunden....

ich nehme an, dass die bezeichnungen für die patienten-id's sich irgendwie nicht verstehen....
doch was kann ich da tun?
Titel: Re: embedded view mit ausgewählten dokumenten
Beitrag von: ditodotorg am 01.08.13 - 14:57:54
Hallo liebe Notes-Experten,

Habe die vorherige Programmierung mal komplett umgewandelt....
Erfolg: Es ist keinerlei Fehler aufgetreten, aber funktionieren tut es trotzdem nicht :-(
Kann bitte jemand drüber schauen?

Sub Click(Source As Button)
   Dim session As NotesSession
   Dim db As notesdatabase
   Dim view As NotesView
   Dim doc As NotesDocument
   Dim ws As notesuiworkspace
   Dim uidoc As NotesUIDocument
   Dim cert As Variant
   Dim bill As String
   Dim docdate As Variant
   Dim uimonth As Variant
   
   Set session = New NotesSession
   Set db = session.CurrentDatabase
   Set view = db.GetView("Untersuchungskartei")
   Set doc = view.GetFirstDocument
   cert = doc.GetItemValue("profile_doc")
   docdate = doc.GetItemValue("date_doc")
   
   Set ws = New NotesUIWorkspace
   Set uidoc = ws.CurrentDocument
   bill = uidoc.FieldGetText("patient_number")
   uimonth = uidoc.FieldGetText("month_bill")
   
   While Not (doc Is Nothing)
      If Cstr(cert(0)) = bill Then
         If Month(docdate(0)) = Month(uimonth) Then
            doc.PutInFolder "Untersuchungen"
         Else
            Messagebox("Bitte geben Sie den Abrechnungsmonat an!")
         End If
         Messagebox("ein fehler ist aufgetreten")
      End If
      ws.ViewRefresh
      Set doc = view.GetNextDocument(doc)
   Wend
   
End Sub
Titel: Re: embedded view mit ausgewählten dokumenten
Beitrag von: Thomas Schulte am 01.08.13 - 15:46:07
Ein ganz einfacher Tipp....

Geh mit dem Debugger drüber und schau nach, ob du a. überhaupt Dokumente zum Verarbeiten hast und ob die b. im Folder landen.