Domino 9 und frühere Versionen > Entwicklung

Name aus gewählter Gruppe löschen

(1/3) > >>

Selin:
Hallo Ihr Lieben,

ich habe das Problem hier schon mal gepostet gehabt:
http://www.atnotes.de/index.php?topic=21692.0


--- Zitat ---ich habe eine Datenbank, die auf der Adressbuchschablone basiert.
Habe ein zusätzliches Feld Gruppe eingefügt.
Das Feld ist ein Listfeld mit der Formel
@Right(@DbColumn("":"NoCache"; ""; "Gruppe"; 1);"_")
Die Gruppennamen fangen alle mit ABC_ an.Deshalb @Right...

Mir werden in der Liste nun alle Gruppen angezeigt.
Was ich versuche ist folgendes:
Wenn ich eine oder mehrere Einträge in dem Listfeld markiere(Mehrfachauswahl möglich), soll dieser Kontakt, z.B. nach Klick auf einen Knopf, in die markieren Gruppen hinzugefügt werden.
--- Ende Zitat ---

Und wenn ich die Markierung vor der Gruppe wieder rausnehme, soll der Name aus der Gruppe wieder gelöscht werden.

Mit folgendem Script hat das Löschen des aktuellen Kontakts aus der gewählten Gruppe auch funktioniert aber irgendwie geht das nicht mehr.
Und ich weiß nicht, warum?
Mit diesem Script löscht er alle Namen aus der Gruppe und nicht den aktuellen.

Habt ihr vielleicht eine Idee, was an dem Script falsch ist?





Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim docGroup As NotesDocument
   Dim item As NotesItem
   Dim books As Variant
   Dim done As Integer
   Dim idx As Integer
   Dim subj As Variant
   
   'Zugriff auf das aktuell geöffnete Dokument
   Set uidoc = ws.CurrentDocument
   Set doc = uidoc.Document
   
   Set db = session.CurrentDatabase
   Set view = db.GetView("(Gruppe)")
   
'Bearbeiten aller markierten Einträge im Listenfeld
   For idx = 0 To Ubound(doc.Gruppe)
      Set docGroup = view.GetDocumentByKey("#ABC_" & doc.Gruppe(idx), True)
      
      subj = docGroup.GetItemValue( "Members" )
      Set item = docGroup.GetFirstItem( "Members" )
'Name_Gruppe ist ein berechnetes Feld in der Maske Firstname + " " + LastName
      If (subj(0) = doc.Name_Gruppe(0)) Then         
         docGroup.Members = ""         
         Call docGroup.Save(True, False)
      Else
         Msgbox("Name vorhanden")
      End If         
   Next 
   
   
   Msgbox("Die Gruppenliste wurde aktualisert")
End Sub

Vielen Dank + Viele Grüsse
Selin

Glombi:
Das
  docGroup.Members = ""         
löscht alle Namen aus dem Feld Members.

Ich blicke den Code ehrlich gesagt nicht so ganz: Wo steht denn der Name der Gruppe, die entfernt werden soll? Ist das "#ABC_" & doc.Gruppe(idx) ?

Andreas

Selin:
ja sorry, ist vielleicht nicht sehr sauber gelöst aber ich bemühe mich...


--- Zitat ---Ich blicke den Code ehrlich gesagt nicht so ganz: Wo steht denn der Name der Gruppe, die entfernt werden soll? Ist das "#ABC_" & doc.Gruppe(idx) ?

--- Ende Zitat ---

genau, das ist die Gruppe.
Und aus der Gruppe, die markiert ist, soll der Name rausgelöscht werden.

Viele Grüße
Selin

Glombi:
Hier mal ein erster Ansatz:

Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim doc As NotesDocument
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim docGroup As NotesDocument
   Dim item As NotesItem
   Dim books As Variant
   Dim done As Integer
   Dim idx As Integer
   Dim subj As Variant
   
   Dim group_name As String
   Dim ret_eval As Variant
   
   'Zugriff auf das aktuell geöffnete Dokument
   Set uidoc = ws.CurrentDocument
   Set doc = uidoc.Document
   
   Set db = session.CurrentDatabase
   Set view = db.GetView("(Gruppe)")
   
'Bearbeiten aller markierten Einträge im Listenfeld
   For idx = 0 To Ubound(doc.Gruppe)
      group_name = "#ABC_" & doc.Gruppe(idx)
      Set docGroup = view.GetDocumentByKey(group_name , True)
      
      subj = docGroup.GetItemValue( "Members" )
      Set item = docGroup.GetFirstItem( "Members" )
'Name_Gruppe ist ein berechnetes Feld in der Maske Firstname + " " + LastName
      If (subj(0) = doc.Name_Gruppe(0)) Then         
         ret_eval = Evaluate( |FIELD Members := @Trim(@Replace(Members;"| + group_name  + |";""));@True|,docGroup)
         Call docGroup.Save(True, False)
      Else
         Msgbox("Name vorhanden")
      End If         
   Next 
   
   
   Msgbox("Die Gruppenliste wurde aktualisert")
End Sub


Andreas

Glombi:
Und dann würde ich die Schleife noch ändern, denn die zu löschende Gruppe muss ja nicht immer an erster Stelle stehen, oder?


For idx = 0 To Ubound(doc.Gruppe)
      group_name = "#ABC_" & doc.Gruppe(idx)
      Set docGroup = view.GetDocumentByKey(group_name , True)
      
      subj = docGroup.GetItemValue( "Members" )
      Set item = docGroup.GetFirstItem( "Members" )
      If item.Contains( doc.Name_Gruppe(0) ) Then
         ret_eval = Evaluate( |FIELD Members := @Trim(@Replace(Members;"| + group_name  + |";""));@True|,docGroup)
         Call docGroup.Save(True, False)
      Else
         Msgbox("Name NICHT vorhanden")
      End If         
   Next 

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln