Autor Thema: Name aus gewählter Gruppe löschen  (Gelesen 1843 mal)

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Name aus gewählter Gruppe löschen
« am: 23.06.05 - 10:05:26 »
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.

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
Windows XP
Notes 6.5

Glombi

  • Gast
Re: Name aus gewählter Gruppe löschen
« Antwort #1 am: 23.06.05 - 12:47:19 »
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

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Name aus gewählter Gruppe löschen
« Antwort #2 am: 23.06.05 - 14:16:52 »
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) ?

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

Viele Grüße
Selin
Windows XP
Notes 6.5

Glombi

  • Gast
Re: Name aus gewählter Gruppe löschen
« Antwort #3 am: 23.06.05 - 14:25:51 »
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

  • Gast
Re: Name aus gewählter Gruppe löschen
« Antwort #4 am: 23.06.05 - 14:27:47 »
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 

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Name aus gewählter Gruppe löschen
« Antwort #5 am: 23.06.05 - 15:01:16 »
Hi Andreas,

danke für deine Mühen.

An dieser Stelle weist der Debugger einen Fehler auf:

subj = docGroup.GetItemValue( "Members" )

Object Variable not set.
Windows XP
Notes 6.5

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Name aus gewählter Gruppe löschen
« Antwort #6 am: 23.06.05 - 15:05:42 »
ok, jetzt klappt es ohne Fehlermeldung


aber ein Problem bsteht noch.

obwohl der aktuelle Name in der Gruppe vorhanden ist, kommt die Meldung "Name NICHT vorhanden und der Name wird nicht aus der Gruppe gelöscht
Windows XP
Notes 6.5

klaussal

  • Gast
Re: Name aus gewählter Gruppe löschen
« Antwort #7 am: 23.06.05 - 15:09:59 »
Dann lass doch mal den Debugger mitlaufen.
Warum findet er den Namen nicht ?

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Name aus gewählter Gruppe löschen
« Antwort #8 am: 23.06.05 - 15:33:41 »
Hi,

ich glaube hier liegt der Hase im Pfeffer:
In der Evaluate-Anweisung wird auf den falschen Namen geprüft.

Probier's mal so:

If item.Contains( doc.Name_Gruppe(0) ) Then
         ret_eval = Evaluate( |FIELD Members := @Trim(@Replace(Members;"| + doc.Name_Gruppe(0) + |";""));@True|,docGroup)
         Call docGroup.Save(True, False)
      Else
...


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Name aus gewählter Gruppe löschen
« Antwort #9 am: 23.06.05 - 15:51:11 »
genau das war's Axel.

Vielen Dank an Alle.

Lieben Gruß
Selin
Windows XP
Notes 6.5

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Name aus gewählter Gruppe löschen
« Antwort #10 am: 23.06.05 - 15:57:42 »
ach ja, eins noch

im moment ist das Handlin für den Benutzer etwas aufwendig.
Er muss als erstes die Markierungen setzen/entfernen, dann auf den Knopf "Remove" klicken und anschließend die neuen Markierungen über "Import" wieder aktualisieren,
Ich habe versucht beide Prozeduren in einen Agenten zupacken und alles über einen Knopf zu realisieren, aber das funktioniert nicht.

Der Agent importiert zwar aber das löschen macht er nicht

Der Aufruf ist folgendermaßen:

@Command( [ToolsRunMacro] ; "Loeschen") ;
@Command([ToolsRunMacro];"import");
@Command([FileSave])

Habt ihr hier eine Idee?

danke
Windows XP
Notes 6.5

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz