Domino 9 und frühere Versionen > ND6: Entwicklung

Suche Tool für Massenänderung im Design

(1/2) > >>

Kridgiant:
Hallo Zusammen

Habe folgendes Problem:
Ich muss in mehreren Datenabanken in allen Ansichten (und das sind viele) im Querypast Event einen Script Code einfügen.

Gibt es ein Tool, mit dem das möglich ist??????

Danke vorab

koehlerbv:
Teamstudio Navigator (Nutzung der mitgelieferten Configurator ScriptLibrary - im FrontEnd kann der Configurator nicht mit Zeilenschaltungen umgehen).

Bernhard

LN4ever:
Um so etwas möglichst zu vermeiden, arbeite ich wie folgt:

In jeder Ansicht einer Applikation füge ich in den Options der Globals der Ansicht ein
Use "LibViews" sowie im QUERYOPEN ein

Sub Queryopen(Source As Notesuiview, Continue As Variant)
   Call vQO(Source, Continue)
End Sub

In dieser Lib gibt es die QUERYOPEN-Section, die alle weiteren Events mit einem EventHandler abfängt. Dort braucht man dann nix mehr nachzupflegen

Sub vQO(Source_uiview,Continue)
   Set DH_uiview=Source_uiview
   '// uiview Events
   On Event Postopen From Source_uiview Call vPO
   On Event Queryopendocument From Source_uiview Call vQOD
   On Event QueryPaste From Source_uiview Call vQueryPaste
   On Event PostPaste From Source_uiview Call vPostPaste
   
End Sub

Die einzelnen Subroutinen müssen exakt mit den übergebenen Parametern jedes Einzelevents aufgebaut werden, also z.B. (als Beispiel sei hier ein QUERYPASTE genommen, bei dem es darum geht, ob man Dokumente aus der Zwischenablage absetzen darf oder nicht)

Sub vQueryPaste(Source As NotesUIView,Continue As Variant)
   On Error Goto Fehlerteil
   If DH_uiviewunid="" Then
      NVersion=Evaluate("@Version" )
      If Cint(NVersion(0)) < 190 Then
         MeldungD="Bitte verwenden Sie die Aktion ""Paste"", um Dokumente einzufügen - Aktion abgebrochen"
         MeldungE="Please use the Action PASTE to paste documents from the clipboard - action canceled"
         Call Message
         Continue=False
         Exit Sub
      Else
         xaktdokid=DH_uiview.CaretNoteID
         If xaktdokid="" Then
            MeldungD="Sie müssen auf einem Dokument (nicht auf einer Kategorie) stehen, um Dokumente deer Zwischanablage pasten zu können - Aktion abgebrochen"
            MeldungE="You must highlight a document (not a category) to paste docs from the clipboard - action cancelled"
            Call Message
            Continue=False
            Exit Sub
         End If
         Set DH_Pastedoc = db.GetDocumentByID(DH_uiview.CaretNoteID)
      End If
   Else
      Set DH_doc=db.GetdocumentbyUNID(DH_uiviewunid)
      Set DH_Pastedoc=db.GetdocumentbyUNID(DH_uiviewunid)
   End If
   If DH_Pastedoc Is Nothing Then
      Continue=False
      Exit Sub
   End If
   
   ' Pasten im Archiv ist verboten
   If DH_DBIstArchiv Then
      MeldungD="Sie können im Archiv keine Dokumente aus der Zwischanablage pasten - Aktion abgebrochen"
      MeldungE="You cannot paste docs from the clipboard to aa archive - action cancelled"
      Call Message
      Continue=False
      Exit Sub
   End If
   
   ' Pasten auf gelöschten und gesperrten Dokumenten ist verboten
   If DH_Pastedoc.HasItem("Loeschkenn") Then
      If DH_Pastedoc.Loeschkenn(0)="1" Then
         MeldungD="Sie können auf einem zur Löschung markierten Dokument  keine Dokumente aus der Zwischanablage pasten - Aktion abgebrochen"
         MeldungE="You cannot paste docs from the clipboard to a document which is marked for deletion - action cancelled"
         Call Message
         Continue=False
         Exit Sub
      End If
   End If
   If DH_Pastedoc.HasItem("Sperrung") Then
      If DH_Pastedoc.Sperrung(0)="1" Then
         MeldungD="Sie können auf einem geperrten Dokument  keine Dokumente aus der Zwischanablage pasten - Aktion abgebrochen"
         MeldungE="You cannot paste docs from the clipboard to a locked document - action cancelled"
         Call Message
         Continue=False
         Exit Sub
      End If
   End If
   If Continue Then
      DH_uiviewunid=DH_Pastedoc.UniversalID
   Else
      DH_uiviewunid=""
      Set DH_Pastdoc=Nothing
   End If
   
Ausstieg:
   Exit Sub
   
Fehlerteil:
   MeldungD="Fehler bei DH_QueryPaste " & Cstr(Err) & " Aktion abgebrochen"
   MeldungE="Error at DH_QueryPaste " & Cstr(Err) & " - Action canceled"
   Call Message
   Continue=False
   Resume Ausstieg
End Sub

Damit kann ich alle View-bezogenen Aktionen in eine Library auslagern und pflege den Code nur an einer Stelle. Seitdem funktionieren die Aktionen in allen Ansichten mit den gleichen Fehlern - und wenn man diese Fehler behoben hat, dann sind sie mit einem Schlag in allen Ansichten behoben.

Man erkauft sich diesen Vorteil damit, daß man etwas häufiger den NSD bei Fehlern im Code zu Gesicht bekommt (ich habe zumindest den Eindruck, daß das so ist).

Vielleicht kann ich mit diesem Tipp den Hilferuf bei einigen Programmierern etwas lindern, denn es ist eklig, in allen Ansichten etwas ändern zu müssen.

Gruß

Norbert

botschi:
Ich kann nur die Tools von Ytria empfehlen.

Glombi:
@botschi: Kann das Tool von Ytria auch Scriptevents von Ansichten ändern? Aus der Beschreibung geht es nicht eindeutig hervor, denn da wird nur von Ansichtseigenschaften und Spalten gesprochen.

Andreas

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln