Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Kridgiant am 10.11.06 - 14:52:17
-
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
-
Teamstudio Navigator (Nutzung der mitgelieferten Configurator ScriptLibrary - im FrontEnd kann der Configurator nicht mit Zeilenschaltungen umgehen).
Bernhard
-
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
-
Ich kann nur die Tools von Ytria empfehlen.
-
@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
-
Es gibt auch noch ein Tool für die Aktionsleisten.
Aber für die Scriptevents von Ansichten ist das nix, da hast Du Recht.
-
DDSearch ist ein _kostenloses_ Werkzeug, mit dem man zwar keine Änderungen in der Gestaltung aber dafür die gesamte Gestaltung durchsuchen kann.
Die Installation ist etwas trickreich, dafür ist das Werkzeug aber - wie gesagt - kostenlos.
-
Die Diskussion über das Für und Wider der verschiedenen Tools überdeckt den Blick für das eientlich Wesentliche:
unser Freund hat in 127 Ansichten in 13 Datenbanken denselben Code stehen - und da muß er heute eine Erweiterung/Fehlerbehebung machen. Vielleicht helfen die Tools dabei, aber ich glaube, daß mein Vorschlag das Übel an der Wurzel packt.
Einmal muß man den Parforce-Ritt machen und Alles auslagern - aber dann braucht man die Tools (dafür) nicht mehr, weil der Code nur noch an einer Stelle gepflegt wird.
Und wenn man einmal dabei ist, kann man gleich auch in die Aktionsleisten ein einheitliches Design bringen und viele Aktionen als SHARED ACTIONS einfügen usw.
Mit Tools kann man den Kollaps, dessen Ursache im Wursteln liegt, aufschieben. Aber man kann die Fehler, die dabei entstanden sind, nicht damit beheben.
Gruß
Norbert
-
Im Kern hast Du sicher Recht, aber es wird immer irgendwann eine Änderung in den 98 oder 124 Ansichten geben. Ob Du nun vorher alles sauber ausgedacht hast oder nicht- Du musst es mehrfach ändern.
Und dann sind die Tools schon gut, egal von welchem Anbieter.