Domino 9 und frühere Versionen > Entwicklung

Index einer View

<< < (3/7) > >>

TMC:
Ich empfehle Dir dringend, ein Buch zu lesen.

Die Bible ist gut:
http://www.atnotes.de/index.php?board=26;action=display;threadid=16569

Eigentlich blöd: Du steigst frisch in die Notes-Programmierung ein, und musst Dich gleich mal mit embedded View rumschlagen (ist nicht gerade ein Motivator).

Die View existiert in der Datenbank. Du kannst via Backend-Methoden von überall auf die View-Inhalte zugreifen. Was aktuell im Frontend selektiert ist, kennen natürlich die Backend-Methoden nicht (woher auch). Und diese View ist eben auch u.a. in einer Maske embedded. Von der Maske aus gibt es in R5 keine Möglichkeit abzufragen, was via Frontend markiert ist.
Aber im Backend hast Du immer vollen Zugriff.

Leider gibt es die EntryCount property der NotesView - Klasse erst seit R6. Die gibt Dir als Integer die Anzahl der Dokumente der View wider.

In R5 kannst Du aber z.B. die Dokumente der View in eine DocCollection geben. Dann lässt Du Dir einen collection.count zurückgeben.
Wenn Du ein Codebeispiel brauchst, dann sag Bescheid  ;)

7Stein:
Ja bitte, das wäre echt nett, wenn du mir das mit einem Beispiel erklären könntest.

Naja, die Motivation wird schon noch kommen, wenn sich der Durchblick einstellt oder?????

Gruß 7Stein

TMC:
Die Motivation kommt dann von ganz alleine.  ;)

Hier ein Beispiel-Code. Den kopierst Du in einen Button Deiner Maske:

--- Zitat ---Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim vec As NotesViewEntryCollection
   Dim intCount As Integer
   Dim doc As NotesDocument
   Set db = session.currentdatabase
   Set view = db.GetView( "DEIN VIEWNAME" ) 'Hier Deine View eintragen
   Set vec = view.AllEntries
   
   intCount = vec.count 'Jetzt haben wir die Anzahl Doks der View in der Variable intCount
   
   Msgbox "Die View '" & view.name & "' enthält " & intCount & " Dokumente."
   
   
   Select Case intCount
   Case 1:
      '---> Die View hat nur einen Eintrag.
      Set doc = view.GetFirstDocument  
      '-- so und nun mach was mit dem Dokument :-)
     
   Case 0:
      '---> Die View ist leer.
      Msgbox "Die View ist leer ! Wir brechen ab."
      Exit Sub
   Case Else:
      '---> Die View hat mehr als 1 Eintrag !
      'Du rufst also Deine Auswahlbox auf zur Auswahl eines Dokumentes
   End Select
   
End Sub
--- Ende Zitat ---

7Stein:
So, das funktioniert soweit ja schonaml, das alle Dokumente in der View gezählt werden.
Aber die Dokumente, die da gezählt werden, gehören ja nicht alle zu einem Datensatz der Maske.

In der Maske wird eine Bestellung angezeigt und in der embedded view alle Positionen zu der Bestellung. Die Positionen zu der Bestellung werden aber erst später, also nach der Abfrage, welches Dokument bearbeitet werden soll, zusammengebastelt.
So verstehe ich das zumindestens.
Ich habe also ca 18000 Dokumente gezählt, und angezeigt werden nur 6. Wie kriege ich von den sechsen heraus, ob da vielleicht nur eins vorhanden ist??????????


--- Code: ---sPos = Inputbox( "Welche Position bearbeiten?", "Position bearbeiten", "1" )   
   If spos <> "" Then
      Call view2.Refresh()
      Set detail = view2.GetDocumentByKey( thisDoc.UniversalID + "-" + sPos )
      
      If detail Is Nothing Then
         Messagebox( "Position nicht vorhanden." )
         Exit Sub
      End If   
      
      OK = ws.Dialogbox( "LieferPosEdit", True, True, False, False, False, False, "Bestellposition bearbeiten", detail )

--- Ende Code ---
und so wie unten beschrieben werden die Lieferpositionn ermittelt.
ParentUNID + "-" + @Text(Pos)

TMC:
Schau Dir in der Designerhilfe die GetAllDocumentsByKey - Methode der NotesView-Klasse an.
Damit kannst Du alle Doks in eine NotesDocumentCollection setzen, die Deinen Kriterien entsprechen.
NotesDocumentCollection.Count gibt Dir dann die Anzahl wieder.

In Deinem Beispielcode machst Du schon sowas ähnliches:


--- Code: ---Set detail = view2.GetDocumentByKey( thisDoc.UniversalID + "-" + sPos )
--- Ende Code ---

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln