Domino 9 und frühere Versionen > Entwicklung
Name aus gewählter Gruppe löschen
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