Autor Thema: Name in die Gruppe hinzufügen  (Gelesen 7096 mal)

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Name in die Gruppe hinzufügen
« am: 08.03.05 - 10:54:21 »
Hallo Zusammen,

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.

Wie kann ich das am besten machen?
Bitte um Hilfe.

Danke + Gruß
Selin
Windows XP
Notes 6.5

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 in die Gruppe hinzufügen
« Antwort #1 am: 08.03.05 - 13:00:21 »
Hi,

ohne mir tiefergehende Gedanken gemacht zu haben, könnte das ganz grob gesehen so aussehen:

Du brauchst eine nach Gruppennamen sortierte Ansicht im globalen Adressbuch. Die ist aber glaube ich schon vorhanden.

Mit GetDocumentbyKey("GruppennameausderListe incl ABC_",True) aus der NotesView-Klasse holst du dir das Zugriff auf das entsprechende Gruppendokument. Dann kannst du den Namen in das Members-Feld anhängen.

Ganz nebenbei gefragt: hat derjenige der das machen soll auch Autorenrechte auf das Adressbuch?


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 in die Gruppe hinzufügen
« Antwort #2 am: 08.03.05 - 14:22:08 »

Mit GetDocumentbyKey("GruppennameausderListe incl ABC_",True) aus der NotesView-Klasse holst du dir das Zugriff auf das entsprechende Gruppendokument. Dann kannst du den Namen in das Members-Feld anhängen.


GetDocumentbyKey("GruppennameausderListe incl ABC_",True) => meinst du hier den Feldnamen aus der View Gruppe?

Und wie hänge ich den Namen des Members an?


Die User haben Autorenrechte.

Windows XP
Notes 6.5

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 in die Gruppe hinzufügen
« Antwort #3 am: 08.03.05 - 14:32:03 »
Hi,

bei GetDocumentByKey kommt der Feldname, der die Gruppenliste enthält rein. Zusätzlich musst du aber noch, da du das in der Liste abgeschnitten hast, "ABC_" davorsetzen.

Das kann so aussehen:

Set docGroup = view.GetDocumentByKey("ABC_" & doc.ListenFeld(0), True)

Das Anhängen der Namen an das Members-Feld kann so aussehen:


Dim item As NotesItem

Set item = docGroup.GetFirstItem( "Members" )
Call item.AppendToTextList( "Hugo Test" )



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 in die Gruppe hinzufügen
« Antwort #4 am: 08.03.05 - 14:56:26 »
Danke Dir

>>Set docGroup = view.GetDocumentByKey("ABC_" & doc.ListenFeld(0), True)

Hier hat er noch ein  Problem
Habe alles angepasst aber kann aufgrund von Fehlern nicht abspeichern
Windows XP
Notes 6.5

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 in die Gruppe hinzufügen
« Antwort #5 am: 08.03.05 - 15:21:45 »
Hi,

was für Fehler? ein paar mehr Infos musst du schon geben.


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 in die Gruppe hinzufügen
« Antwort #6 am: 08.03.05 - 15:30:05 »
Zeile Set docGroup:  Not a mamber: MAILING

Sub Click(Source As Button)
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim docGroup As NotesDocumentCollection
   Dim item As NotesItem
   
   Set db = session.CurrentDatabase
   Set view = db.GetView("(Gruppe)")
   
   Set docGroup = view.GetDocumentByKey("ABC_" & docGroup.Mailing(0), True)
   
   Set item = docGroup.GetFirstItem( "Members" )
   Call item.AppendToTextList( "Hugo Test" )
   
End Sub
Windows XP
Notes 6.5

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Name in die Gruppe hinzufügen
« Antwort #7 am: 08.03.05 - 16:26:03 »
sorry
mein Fehler
Hatte documentCollection statt Document
Windows XP
Notes 6.5

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Name in die Gruppe hinzufügen
« Antwort #8 am: 08.03.05 - 16:37:52 »
hmm
geht aber immer noch nicht
Der Debugger sagt "Object variable not send" an der Stelle :
  Set docGroup = view.GetDocumentByKey("ABC_" & docGroup.Mailing(0), True)
« Letzte Änderung: 08.03.05 - 16:55:06 von Selin »
Windows XP
Notes 6.5

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Name in die Gruppe hinzufügen
« Antwort #9 am: 08.03.05 - 17:07:02 »
Lies Dir doch die Zeile bitte mal aufmerksam durch und denke. Was erwartest Du, was in docGroup.Mailing stehen sollte ...

Bernhard

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Name in die Gruppe hinzufügen
« Antwort #10 am: 08.03.05 - 17:13:10 »
Hallo,

ja, da hab ich doc.Mailing draus gemacht
aber das geht auch nicht

Windows XP
Notes 6.5

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Name in die Gruppe hinzufügen
« Antwort #11 am: 08.03.05 - 17:16:20 »
"Denken" hatte ich gesagt: Was soll denn dort für ein Wert gespeichert sein ?

Bernhard

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Name in die Gruppe hinzufügen
« Antwort #12 am: 08.03.05 - 17:37:54 »
na der Wert aus dem Listfeld bzw. die Werte. (ist ja ein Mehrfachauswahlfeld)
Windows XP
Notes 6.5

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Name in die Gruppe hinzufügen
« Antwort #13 am: 08.03.05 - 17:43:10 »
Und warum sollte das in dem Feld des Dokumentes stehen, das Du gerade erst suchst ?

Es lohnt auch ein Blick in die DesignerHelp, denn GetDocumentByKey erwartet einen String als Kriterium und liefert dann auch nur ein Dokument zurück.

Bernhard

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 in die Gruppe hinzufügen
« Antwort #14 am: 08.03.05 - 18:57:01 »
Hi,

ich versuch dir mal ein bisschen auf die Sprünge zu helfen.

Wie bernhard schon gesagt hat, kannst du nicht ein Feld eines Dokumentes, dass du erst suchen willst, als Parameter für die Suche hernemen.


Ich gehen mal davon aus (ein bisschen Kaffeesatzleserei), dass du den Code in eine Aktion des Adressdokumentes einbauen willst und die entsprechenden Gruppendokumente innerhalb des Domino Verzeichnisses bearbeiten willst.

Dann muss das Ganze so aussehen:

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

   'Zugriff auf das aktuell geöffnete Dokument
   Set uidoc = ws.CurrentDocument
   Set doc = uidoc.Document

   'Suchen des öffentlichen Adressbuches und Zugriff auf die entspr. Ansicht   
   done = False
   books = session.AddressBooks
   Forall b In books
       If (b.IsPublicAddressBook) And (Not done)Then
   Call b.Open( "", "" )
   Set view = b.GetView("(Gruppe)")
   done = True
       End If
   End Forall
   
'Bearbeiten aller markierten Einträge im Listenfeld
   For idx = 0 to UBound(doc.Mailing)
     Set docGroup = view.GetDocumentByKey("ABC_" & doc.Mailing(idx), True)
   
     Set item = docGroup.GetFirstItem( "Members" )
     Call item.AppendToTextList( doc.Mailing(idx))
     Call docGroup.Save(True, False)
   Next   
End Sub

Ich hab den Code nicht getestet und auf Fehlerabfragen hab ich auch verzichtet.

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 in die Gruppe hinzufügen
« Antwort #15 am: 09.03.05 - 13:32:48 »
Vielen Dank
So hat es funktioniert.
Jetzt muss ich noch ne Abfrage einbauen, die prüft, ob es den Namen schon in der Gruppe gibt.....




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
   
   'Zugriff auf das aktuell geöffnete Dokument
   Set uidoc = ws.CurrentDocument
   Set doc = uidoc.Document
   
   Set db = session.CurrentDatabase
   Set view = db.GetView("(Gruppe)")
For idx = 0 To Ubound(doc.Mailing)
      Set docGroup = view.GetDocumentByKey("ABC_" & doc.Mailing(idx), True)
      
      Set item = docGroup.GetFirstItem( "Members" )
      Call item.AppendToTextList( doc.Name_Gruppe)
      Call docGroup.Save(True, False)
   Next   
End Sub
Windows XP
Notes 6.5

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Name in die Gruppe hinzufügen
« Antwort #16 am: 11.03.05 - 14:42:10 »
Hallo,

wie mache ich denn den umgekehrten Weg?
Was, wenn ich in dem Kontaktdokument aus der Liste eine Gruppe wieder rausmarkiere?
Dann muss der Name ja auch aus der Gruppe rausgenommen werden??
Könnt ihr mir ein Tipp geben?

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.Mailing)
      Set docGroup = view.GetDocumentByKey("#ABC_" & doc.Mailing(idx), True)
      
      subj = docGroup.GetItemValue( "Members" )
      Set item = docGroup.GetFirstItem( "Members" )
      If (subj(0) <> doc.Name_Gruppe(0)) Then         
         Call item.AppendToTextList( doc.Name_Gruppe)
         Call docGroup.Save(True, False)
      Else
         Msgbox("Name vorhanden")
      End If         
   Next 
   
   
End Sub
Windows XP
Notes 6.5

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Name in die Gruppe hinzufügen
« Antwort #17 am: 11.03.05 - 15:27:15 »
'Bearbeiten aller markierten Einträge im Listenfeld
   For idx = 0 To Ubound(doc.Mailing)
      Set docGroup = view.GetDocumentByKey("#ABC_" & doc.Mailing(idx), True)
      
      subj = docGroup.GetItemValue( "Members" )
      Set item = docGroup.GetFirstItem( "Members" )
      If (subj(0) <> doc.Name_Gruppe(0)) Then         
         Call item.AppendToTextList( doc.Name_Gruppe)
         Call docGroup.Save(True, False)
      Else
         Msgbox("Name vorhanden")
      End If         
   Next 

Du stellst eine neue Frage, hast aber offensichtlich die Funktionalität Deines bisherigen Codes noch gar nicht getestet.
Du holst Dir die Members aus dem Gruppendokument - und vergleichst dann den ersten Eintrag mit dem ersten Eintrag des Feldes "Name_Gruppe" (by the way: Ein extrem unglücklicher Name für dieses Item). Da dort die Gruppenmitglieder immer angehängt werden, funktioniert das schon bei der zweiten Gruppe nicht mehr.

Dann kommt der Witz an sich: Du speicherst das Gruppen-Dokument, das Du bis jetzt nur ausgelesen hast. Wann speicherst Du das Dokument, in Deine auf fragliche Art und Weise gesammelten Informationen landen ?

Wie soll man hier helfen ?

Bernhard

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Name in die Gruppe hinzufügen
« Antwort #18 am: 11.03.05 - 15:59:11 »
Ich weiß jetzt nicht genau, was Du meinst.
Es funktioniert.
Ich kann mehrere Gruppen in der Liste markieren. Nach dem Klick auf die Schaltfläche wird der Name in die Gruppe, Feld Members reinegschrieben
Windows XP
Notes 6.5

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Name in die Gruppe hinzufügen
« Antwort #19 am: 11.03.05 - 16:05:34 »
Sorry, Du hast Recht. Aber bei der vorhandene Beschreibung und der mangelnden Kommentierung des Codes incl. irreführender Objektnamen kommt man sehr schnell durcheinander.

Warum liest Du bei jeder Änderung von doc.Mailing nicht die Liste komplett neu ein und verwirfst dabei die alte ? Einen eleganten Listenvergleich und ggf. erforderliche Removes traue ich Dir einfach nicht zu. Sorry. Das oben vorgeschlagene wäre doch viel einfacher und löst auch Dein ungeklärtes Problem, doppelte Einträge zu vermeiden.

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz