Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Madmission am 23.05.06 - 12:26:39

Titel: Categorien Zentral Verwalten
Beitrag von: Madmission am 23.05.06 - 12:26:39
Hallo zusammen  ;D

Ich eine frage an euch, gibt es irgendwo ein notes standart Db oder ähnliches, wo man die Kategorien Zentral verwalten kann.?????

Was ich möchte ist alle Kategorien zentral in einer view verwalten so das wenn kategorie oder die sub kategorie geändert wir es auch im Notes Dokument geändert wird. Nun so weit habe ich es geschaft.

Nun wenn ich aber z.b. "categorie\sub\sub" auf "categorie New\sub\sub" abänder das dann alle anderen unteren kategorien auch geändert werden.
Eins solltet ihr wiesen es sind alles einzelne Dokument und keine responses.

Ist es möglich das ich nur den string bis zur änderung in einer view suche und das erstze???

Ich weiss es tönt komisch, aber wenn ihr mehr infos braucht meldet euch.

Ich danke euch jetzt schon im voraus.

Gruss Madmission

Titel: Re: Categorien Zentral Verwalten
Beitrag von: m3 am 23.05.06 - 12:33:22
Das kommt nun drauf an, WIE die Kategorien in deinen Dokumenten gespeichert sind.

Die eine Stimme in meinem Kopf meint, dass Du die Kategorien händisch vorgegeben hast (im Feld einfach eingetragen). Dann musst Du
a) die Vorgaben ändern
b) Mit einem Agent alle Felder durchwassern und über Stringersetzung alle alten Werte auf die neuen ändern.

Die andere Stimme meint, dass Du eine Datenbank hast, in der die Kategorien verwaltet werden. Ein Eintrag sieht dort so aus:
categorie\sub\sub|4242
Daher wird in den Dokumenten nur der ID-Code der Kategorie angezeigt. Hier reicht es, wenn Du die Beschriftung des Kategoriecodes änderst, wenn man das Dokument öffnet, wird der Text gleich angezeigt.
Titel: Re: Categorien Zentral Verwalten
Beitrag von: Madmission am 23.05.06 - 12:46:12
Hallo m3

Danke für deine 2 super stimmen, die 1 idee gefällt mir aber besser nur die frage wie mann sowas macht.
Hast du auch noch en paar stimmen

Gruss Madmission
Titel: Re: Categorien Zentral Verwalten
Beitrag von: Lossa am 23.05.06 - 12:47:34
hi,

@m3
Im Prinzip ist das mit dem Alias so richtig, jedoch wird dieser Alias auch in Ansichten ausgegeben, weil das ist ja der Feldinhalt. Dein Vorschlag b wäre i.O. wenn du nur die Dokumentinhalte so geändert haben willst.
Es wird nichts anderes möglich sein, als mit einem kleinen Agenten alle Dokumente mit der alten Kategorie, mit der neuen Kategorie zu füllen.
Titel: Re: Categorien Zentral Verwalten
Beitrag von: Madmission am 23.05.06 - 12:57:40
Hallo zusamenn

das ist der code den ich schon geschrieben haben damit wenn die categorie ändert auch es in den entsprechenden Dokumenten geändert wird.

Das einzige problem wo ich habe ist wie ich den anderen Subcategories den eintrag ändere.

beim ersten loop gehe ich auf die dokumente und ändere die categorie da ich bei allen dokumente ein allias hinterlegt habe

Und beim 2 loop gehe auf die categorien nur leider niemd er mir die categorien wo der gleiche inhalt haben, das heisst "categorie" mit "categorie".  und wenn ich irgendwelche sub noch hinten habe wie z.b "categorie\sub" dan ändert er es nicht mehr.

hier der Code

Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim resultCollection As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim resultDoc As NotesDocument
   Dim prof_field As String
   Dim prof_field1 As String
   
   Set db = session.CurrentDatabase
   Set doc = Source.Document
   prof_field = doc.prof_categorie(0)
   prof_field1 = doc.prof_categorie_comp(0)
   
   If prof_field <> prof_field1 Then
      Set view = db.GetView( "($lup_categorie)" )
      Set resultCollection = view.GetAllDocumentsByKey (doc.prof_alias(0), True)
      If resultCollection.Count > 0 Then
         Set resultDoc = resultCollection.GetFirstDocument
         Do While Not resultDoc Is Nothing
            resultDoc.Categories = prof_field
            Call resultDoc.Save(False, False)
            Set resultDoc = resultCollection.GetNextDocument(resultDoc)
         Loop
      End If
   End If
   
   If prof_field <> prof_field1 Then
      Set view = db.GetView( "($lup_alias)" )
      Set resultCollection = view.GetAllDocumentsByKey (doc.prof_categorie(0), True)
      If resultCollection.Count > 0 Then
         Set resultDoc = resultCollection.GetFirstDocument
         Do While Not resultDoc Is Nothing
            resultDoc.Categories = prof_field
            Call resultDoc.Save(False, False)
            Set resultDoc = resultCollection.GetNextDocument(resultDoc)
         Loop
      End If
   End If
Titel: Re: Categorien Zentral Verwalten
Beitrag von: m3 am 23.05.06 - 13:05:38
Madmission, ich kann Dir nicht folgen. Etwas bessere Rechtschreibung sowie Gross/Kleinschreibung richtig angewandt würden Deinen Text etwas besser lesbar machen.

Was willst Du erreichen? Um über alle Dokumente zu iterieren und ein Feld zu ändern, gibt es einen Code in der Designer-Hilfe unter "UnprocessedSearch method".

Welchen "Subcategories" Eintrag willst Du ändern? Ich habe es so verstanden, dass Du ein Feld mit "categorie\sub1\sub2" hast, wo du "sub1" durch "sub3" ersetzen willst, oder?

@Lossa, stimmt natürlich. Wenn man die Kategorien auch in einer View anzeigen will, muss man (leider) den Volltext speichern.
Titel: Re: Categorien Zentral Verwalten
Beitrag von: Madmission am 23.05.06 - 13:17:42
Hallo m3

Sorry für meine Rechtschreibung.
Ich meinte das mit der "Subcategories", das hast du richtig verstanden.
Titel: Re: Categorien Zentral Verwalten
Beitrag von: m3 am 23.05.06 - 13:28:35
Na dann schau Dir Mid() bzw. @ReplaceSubstring an.
Du könntest natürlich auch den String @EXPLODEn und dann mit @Replace arbeiten.
Titel: Re: Categorien Zentral Verwalten
Beitrag von: Madmission am 23.05.06 - 14:16:53
Habe ich angeschaut, aber ich habe nie was in dieser art gemacht, hast du mir einen ansatz wo ich mich orientieren kann und drauf aufbauen kann.
Titel: Re: Categorien Zentral Verwalten
Beitrag von: Tode am 23.05.06 - 16:57:59
wieder mal ein Fall von "zum Glück sind wir alle so gut ausgebildet"...

Da braucht jemand 39 Zeilen Script- Code um ein Problem zu lösen, das mit 1 Zeile Formel- Sprache erledigt ist...

Schön, wenn man seine Werkzeuge so gut kennt...

FIELD Categories := @ReplaceSubstring( Categories ; "Bla1" ; "Bla3" );

Natürlich berücksichtigt diese formel noch keine "sub-category"- Felder, aber da Du uns nicht sagen kannst, was Du mit "subcategories" meinst (eigene Felder, einfach nur \ im Category- Feld oder sonstwas, ist das auch egal.

Tode

P.S.: Wenn man in Notes entwickelt ist es nie verkehrt sich an Standards zu halten, und das Standard- Feld für Kategorien heisst Categories...
Titel: Re: Categorien Zentral Verwalten
Beitrag von: koehlerbv am 23.05.06 - 17:22:26
wieder mal ein Fall von "zum Glück sind wir alle so gut ausgebildet"...

FIELD Categories := @ReplaceSubstring( Categories ; "Bla1" ; "Bla3" );

Natürlich berücksichtigt diese formel noch keine "sub-category"- Felder, aber da Du uns nicht sagen kannst, was Du mit "subcategories" meinst (eigene Felder, einfach nur \ im Category- Feld oder sonstwas, ist das auch egal.

Torsten, das kann aber schnell ganz schwer in die Hose gehen. madmission schrieb ja von einem Aufbau à la "category\subcategory\subsubcategory". Was ein derartiges @ReplaceSubstring da anrichten kann, ist leicht ausmalbar.

Auch das mit dem Feldnamen würde ich so nicht unbedingt stehen lassen - evtl. will man ja gerade vermeiden, dass die Standard-Bordmittel von Notes hier greifen.

Bernhard
Titel: Re: Categorien Zentral Verwalten
Beitrag von: m3 am 23.05.06 - 17:25:22
Eben, deswegen ja mein Vorschlag mit @Explode, ....
Titel: Re: Categorien Zentral Verwalten
Beitrag von: koehlerbv am 23.05.06 - 17:33:04
Martin, @Replace arbeitet aber genauso blind. Entscheidend ist ja, an welcher Position (in der Hierarchie) der Begriff geändert wurde.

Bernhard

PS: Nach etlichen Preludien benötige ich in einer Applikation 43 Zeilen, um alle von einer Änderungen in der Kategorisierung betroffenen Docs zu eruieren und anzupassen.
Titel: Re: Categorien Zentral Verwalten
Beitrag von: Tode am 24.05.06 - 09:11:09
ich sag nur so viel: So lange die Fragen nicht beantwortet werden (z.B. ein feld oder mehrere Felder) kann man sowieso keine korrekte Antwort geben.

Natürlich war meine Zeile Code sehr vereinfacht, aber die Essenz des Scripts ist eine ähnliche, die Entsprechung zum Script wäre allerdings Replace und nicht ReplaceSubstring...

Tode
...der sich hier ausklinkt
Titel: Re: Categorien Zentral Verwalten
Beitrag von: koehlerbv am 24.05.06 - 20:15:08
Sicherlich fehlen hier nicht nur Rechtschreibkenntnisse des Fragestellers, sondern vor allem die Antworten auf ausstehende Fragen der Hilfswilligen.
Aber: Dieser Vorgang ist weder mit Replace noch mit ReplaceSubstring (egal, ob @functions oder LS) zu bewerkstelligen, da beide Funktionen "blind" für die Position des auszutauschenden Teilstrings (oder Listenelements) sind.

Bis Antworten vom Fragesteller kommen, klinke auch ich mich hier aus.

Bernhard