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

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 #20 am: 11.03.05 - 19:24:32 »
Hi,

die Sache ist nicht ganz so trivial.

Ich denke mal der Vorschlag von Bernhard ist gar nicht schlecht. Was andere fällt mir auf die Schnelle auch nicht ein. Und so bekommst du es auch auf relative einfache Weise in den Griff, wenn einer in einem "Arbeitsgang" ein Markierung in der Liste entfernt und bei einem anderen Gruppeneintrag die Markierung setzt. Du musst dir nur vorher die Liste "merken".

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 #21 am: 22.03.05 - 13:04:55 »
so, ich versuche nun das Ganze Schritt für Schritt zu machen.
Habe zwei Listfelder.
Liste1  = @Right(@DbColumn("":"NoCache"; ""; "Gruppe"; 1);"_")
Liste2 brechnet; Inhalt Liste1 und Auswahlformel auch @Right(@DbColumn("":"NoCache"; ""; "Gruppe"; 1);"_")

Habe zwei Buttons.
Import= fügt den aktuellen Namen in die Gruppen ein, die ich in Liste1 markiert habe
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.Liste1)
      Set docGroup = view.GetDocumentByKey("#ABC_" & doc.Liste1(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 
   Msgbox("Die Gruppenliste wurde aktualisert")
   
End Sub

Remove
Habe einafch das Imporieren Script genommen und statt das Einfügen, löschen reingeschrieben.

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.Liste2)
      Set docGroup = view.GetDocumentByKey("#ABC" & doc.Liste2(idx), True)
      
      subj = docGroup.GetItemValue( "Members" )
      Set item = docGroup.GetFirstItem( "Members" )
      If (subj(0) = doc.Name_Gruppe(0)) Then         
         Call item.Remove
         Call docGroup.Save(True, False)
      Else
         Msgbox("Name vorhanden")
      End If         
   Next 
   Msgbox("Die Gruppenliste wurde aktualisert")
   
End Sub

Remove löscht die Liste2 bzw den aktuellen Namen aus den Gruppen, die markiert sind.
Aber die Häckchen sind in der Liste immer noch da.
Die muss ich dann manuell rausnehmen und das Dokument Speichern.

Will ich dann wieder einen Namen in die Gruppe einfügen, bekomme ich die Meldung
"Objekt Variable not set"
Habt ihr Tipps?

Danke + Gruß
Selin
Windows XP
Notes 6.5

klaussal

  • Gast
Re: Name in die Gruppe hinzufügen
« Antwort #22 am: 22.03.05 - 13:18:04 »
Zitat
"Objekt Variable not set"

An welcher Stelle ? Was sagt der Debugger ?

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Name in die Gruppe hinzufügen
« Antwort #23 am: 22.03.05 - 13:29:04 »
hier:

     ...
     For idx = 0 To Ubound(doc.Liste1)
      Set docGroup = view.GetDocumentByKey("#ABC_" & doc.Liste1(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 
   Msgbox("Die Gruppenliste wurde aktualisert")
   
End Sub



Danke
« Letzte Änderung: 22.03.05 - 13:32:02 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 #24 am: 22.03.05 - 13:32:10 »
Das ist doch auch ganz logisch - Du schmeisst ja in Deinem Remove-Code auch das Item aus dem Dokument 'raus. Beim Hinzufügen versuchst Du, das Item zu instantiieren, was gar nicht mehr da ist (und prüftst das nicht mal ab).

Da ich hier mittlerweile überhaupt nicht mehr durchsehe: In welches Dokument willst Du die Gruppenmitglieder hinzufügen - In doc oder in docGroup ?

Bernhard

Offline Selin

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

hast Recht.

Zitat
Da ich hier mittlerweile überhaupt nicht mehr durchsehe: In welches Dokument willst Du die Gruppenmitglieder hinzufügen - In doc oder in docGroup ?

Die Gruppenmitglieder sollen in docGroup.Members rein


Gruß
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 #26 am: 22.03.05 - 14:01:34 »
Ändere mal das Hinzufügen wie folgt:

For idx = 0 To Ubound(doc.Liste1)
      Set docGroup = view.GetDocumentByKey("#ABC_" & doc.Liste1(idx), True)
     
      subj = docGroup.GetItemValue( "Members" )
      Set item = docGroup.GetFirstItem( "Members" )
      If docGroup.Members (0) = "" then
            docGroup.Members = doc.Name_Gruppe
      Else

            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
      End If
   Next

Da Du in Entfernen nicht einfach das Item rausklatschen kannst, machst Du statt item.Remove ein docGroup.Members = ""

Das wäre eine Möglichkeit, aus dem Gewurschtel noch was Lauffähiges hinzubiegen.

Bernhard

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Name in die Gruppe hinzufügen
« Antwort #27 am: 22.03.05 - 14:29:23 »
Hallo Bernhard,

das hat nicht funktioniert. Der schreibt den Namen nicht in die Gruppe rein.

Zitat
For idx = 0 To Ubound(doc.Liste1)
      Set docGroup = view.GetDocumentByKey("#ABC_" & doc.Liste1(idx), True)
     
      subj = docGroup.GetItemValue( "Members" )
      Set item = docGroup.GetFirstItem( "Members" )
      If docGroup.Members (0) = "" then
            docGroup.Members = doc.Name_Gruppe
      Else
            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
      End If
   Next



Wenn ich das hier anwende fürs Hinzufügen:

For idx = 0 To Ubound(doc.Liste1)
      Set docGroup = view.GetDocumentByKey("#ABC_" & doc.Liste1(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 

und das hier fürs Löschen:

For idx = 0 To Ubound(doc.Liste2)
      Set docGroup = view.GetDocumentByKey("#ABC_" & doc.Liste2(idx), True)
      
      subj = docGroup.GetItemValue( "Members" )
      Set item = docGroup.GetFirstItem( "Members" )
      If (subj(0) = doc.Name_Gruppe(0)) Then         
         docGroup.Members = ""         Call docGroup.Save(True, False)
      Else
         Msgbox("Name vorhanden")
      End If         
   Next 

klappt es erst einmal.
Wie kann ich denn die Häckchen nach dem Löschen auch wegnehmen aus der Liste1?

Danke+Viele Grüße
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 #28 am: 22.03.05 - 14:39:37 »
Der schreibt das schon rein, nur speichern tut er nicht. Das muss für den ersten If-Zweig auch noch mit rein.

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Name in die Gruppe hinzufügen
« Antwort #29 am: 22.03.05 - 14:45:45 »
Stimmt!
Vielen Danke noch mal Bernhard.

Habe jetzt mal beide Scripte jeweils in einen Agenten kopiert und versuche beim Speichern zuerst den Löschen Agent und dann das Hinzufügen Agent zu starten.
Hier wird der Name nicht in die Gruppe geschrieben.
Was mache ich falsch?
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 #30 am: 23.03.05 - 01:00:05 »
Selin, woher sollen wir wissen, was nun wieder falsch läuft ? Dein Code ist sowieso schon fragil und fehleranfällig (ich hatte da bereits geschrieben), nun hast Du das "in jeweils einen Agenten kopiert und versuchst beim Speichern zuerst den Löschen und dann das Hinzufügen Agent zu starten". Wozu Du das machst, können wir nicht wissen, weder wissen wir, wie diese Agents denn nun aussehen.

Irgendwie bastelst und friemelst Du nur. Wer bezahlt Dir das nur ?

Wenn das noch was werden soll: Schmeiss das Zeugs weg, was Du bisher hast. Das hat sowieso viel zu viele Risiken und Nebenwirkungen und wird niemals stabil laufen. Dann schreibst Du mal mal für uns ganz genau auf, was Du wie von DB1 in Dokumente in DB2 übernehmen (und ggf. wieder löschen) möchtest. Diese Denkphase ist für jeden Programmierer ein Muss - nur ein klar ausformuliertes Problem kann gelöst werden.

Wenn Du diese Aufgabenbeschreibung sauber machst und die Diskussion allein über die Aufgabenstellung akzeptierst und mitgehst, BEVOR gecoded wird, ergibt sich eine Chance, Dir hier nicht nur bei Deinem "aktuellen" Problem (das geht jetzt ja schon Monate ...) zu helfen, sondern Dich vielleicht auch prinzipiell weiterzubringen.

Unter oben genannten Umständen wäre ich bereit, Dir weiter zu helfen. Ich bin mir sicher, andere folgen da. Aber nur so - alles andere scheint mir verschwendete Zeit.

Bernhard

PS: Wenn Du den beschriebenen Weg gehen willst - nicht wundern, wenn von mir eine Woche vielleicht nix kommt, ich bin bis zum 30.03.2005 im Urlaub.

Offline Selin

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 532
  • Geschlecht: Weiblich
Re: Name in die Gruppe hinzufügen
« Antwort #31 am: 23.03.05 - 09:52:55 »
Zitat
Irgendwie bastelst und friemelst Du nur. Wer bezahlt Dir das nur ?

Meine Haupttätigkeit ist nicht das Entwickeln. Und dafür werde ich auch nicht bezahlt.
Ich mache das quasi "nebenher"
Ich weiß nicht, wie oft ich das noch sagen soll.
Klar kann es sein, dass einige Sachen für einen erfahrenen Notes Entwickler "blöd" vorkommen.
Aber für mich als Anfänger ist das nun mal so. Und ich habe auch nicht soviel Zeit mich 8 Stunden am Tag mit dem Lernen zu beschäftigen.
Habe eine Schulung besucht, wie schon mal erwähnt, und die war einfach schlecht.
Versuche das, so gut es geht, eben Schritt für Schritt mir beizubringen.

Ich bin Dir für Deine Hilfen auch wirklich sehr dankbar und weiß es auch sehr zu schätzen aber ohne näheres zu wissen, wie denn mein Arbeitsaltag abläuft und was ich denn genau mache, solltest Du nicht solche Schriften publizieren.

Danke + Viele Grüße
Selin



« Letzte Änderung: 23.03.05 - 11:40:45 von Selin »
Windows XP
Notes 6.5

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Re: Name in die Gruppe hinzufügen
« Antwort #32 am: 23.03.05 - 11:50:59 »
Das Thema ist  - vorerst  - geschlossen und wird an anderer Stelle weiterdiskutiert.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz