Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet 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
-
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.
-
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
-
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.
-
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
-
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.
-
Hallo m3
Sorry für meine Rechtschreibung.
Ich meinte das mit der "Subcategories", das hast du richtig verstanden.
-
Na dann schau Dir Mid() bzw. @ReplaceSubstring an.
Du könntest natürlich auch den String @EXPLODEn und dann mit @Replace arbeiten.
-
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.
-
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...
-
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
-
Eben, deswegen ja mein Vorschlag mit @Explode, ....
-
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.
-
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
-
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