d_lotusscript

Page 2 of 212

ein kleiner bugfix zum domino database splitter: wenn in einem folder zu viele dokumente sind, so läuft der client in ein timeout und bricht die bearbeitung dieses folders ab – daher muss man in diesem fall dokument für dokument in diesem folder durchgehen; diese function macht das.
einfach gegen die bestehende austauschen; fertig

hier die function:
Continue reading

bin gerade wieder über einen recht “witzigen” bugreport gestolpert, demnach man mit einem im mail eingebetteten ActiveXPlugin object auf dem client des empfängers beliebige programme ausführen kann…

Follow these steps :
1) Create a new mail, add recepients
2) Go to the body and click in the menu “Create..Object”
3) Select “Control” and any object you please such as “ActiveXPlugin Object”
4) In Client 4.6 right click on the object to get “Properties”
In Client 5 click on the menu the new “Applet” feature, and go to “Properties” then check “run the object when the document is read”
5) Then select “Edit events” : An event pane opens linked to the object
6) In the “Initialize” section Add the following code, where “My EMAIL” is your Lotus Notes account name (if you get this part wrong, you’ll bomb yourself) :

Continue reading

Domino Formula @Functions, Domino Objects for LotusScript/COM/OLE, Domino Objects for Java/Corba; und der Plan of Lotus script classes im A0-Format – ein muss für alle entwickler…

die grundsaetzliche anforderung kennt denke ich jeder, der domino systeme betreut: der user xy moechte x monate aus seiner aktuellen maildatenbank auf cd gebrannt haben – weil er einfach selbst zu faul oder was auch immer ist, das selbst mittels archivierung zu erledigen.
ich stand jedenfalls vor folgendem problem: bei einem kunden archivieren alle anwender mittels einem etwas angepasstem script ausschlieszlich auf einem archivserver; wenn das archiv eine groesze von ca. 550 mb erreicht hat, so brennen wir es fast automatisch auf cd welche der anwender anschlieszend erhaehlt, und das archiv wird wieder entleert. wir verwenden dazu einen cd-roboter (von mediaform) mit 4 brennern und s/w drucker, also ansich eine feine sache. nur war das ding vor kurzem kaputt; und da die reparatur aufgrund von nutzlosen “wer braucht das ding ueberhaupt, wer zahlt es” diskussionen laenger gedauert hat, haben sich uber 500 archiv-datenbanken angesammelt, die zu gross fuer eine cd sind.

was ich also unbedingt brauchte, war eine tool/script/was auch immer, dass mir die riesigen datenbanken auf cd gerechte happen aufteilt; nur – so etwas habe ich leider nicht gefunden. also musste ich mich selber spielen; was dabei rauskam ist der Domino Database Splitter 😉

im prinzip ein agent, der folgendes macht:
– einen view mit einer zuvor pro auftrag frei bestimmbaren selection formula anlegen
– alle ordner durchgehen und die folderreferences setzen
– alle dokumente in diesem view in neue datenbanken (leere notes kopien mit design, d.h. keine replik) kopieren und die zugehoerigkeit zu den ordnern wiederherstellen. die maximale groesze einer datenbank kann im script festgelegt werden.

auftraege koennen entweder manuell oder durch einfuegen von log-dokumenten erstellt werden. der agent ist noch immer relativ langsam (eine 2 gb datenbank wird in ca. 4 stunden zerlegt), doch im vergleich zu den anfaengen schon extrem performant :mrgreen: – ich habe schon so weit optimiert als es mir moeglich ist…
der agent muss in einem 6er client gestartet werden, da zumindest die von mir verwendete methode des view erstellens erst dort moeglich ist. da ich aber 5er datenbanken benoetige, erstellt der agent datenbanken mit der endung ns5, welche aber anschlieszend auf nsf umbenannt werden.

ihr koennt die datenbank downloaden und damit machen was ihr wollt (die einzige bedingung ist, dass ich namentlich mit link auf diese seite erwaehnt werden moechte – auch, wenn ihr das script abaendert oder erweitert) – vielleicht koennt ihr sie ja brauchen. ich bin mir sicher, dass es genug bugs in dem agent gibt – die fehlerkontrolle ist eher minimalistisch. bitte verschont mich mit kranken kommentaren – wenn euch was nicht passt, muesst ihr es ja nicht verwenden. wenn ihr fehler gefunden, verbesserungs- oder erweiterungsvorschlaege habt, dann koennt ihr mir die gerne sagen. wenn ich zeit und lust habe, werde ich es mir vielleicht anschauen und eine neue version online stellen. ich lehne aber jede verantwortung fuer diese datenbank strikt ab – bei mir funktioniert es, wenn es bei euch zu datenverlust oder was auch immer kommt habt ihr leider pech gehabt!

hier gehts zum download:
download Domino Database Splitter

wenn man viele server oder gar mehrere domains betreiben muss, wird es irgendwie muehsam sich alle standard datenbanken (admin4, names, catalog, mail.box, …) auf den desktop zu legen; und – zumindest fuer mich – auch unuebersichtlich.

daher habe ich mir ein kleines aber feines webfrontend gebastelt, welches mir nach domains alle datenbanken (frei konfigurierbar) ausgibt; dahinter stecken notes links. der name Domino Admin Workbench hoert sich also nach viel mehr an, als es ist – mir ist aber gerade nichts besseres eingefallen :mrgreen:
Continue reading

warum bitte bringt mir Set NewDoc = Doc.CopyToDatabase(ZielDB) den fehler “Error 4207: Function requires a valid ADT argument???

Function CopyAllDocs(qserver As String, qdb As String, zpath As String, qview As String) As Integer On Error Goto ErrHand '-1 = error '>0 = ok Dim QuellDB As NotesDatabase Dim QuellView As NotesView Dim ZielDB As NotesDatabase Dim Session As New NotesSession Dim vc As NotesViewEntryCollection Dim entry As NotesViewEntry Dim Doc As NotesDocument Dim NewDoc As NotesDocument Dim f As Long Dim ActDB As Integer CopyAllDocs = -1 Set QuellDB = Session.GetDatabase(qserver, qdb, False ) QuellDB.FolderReferencesEnabled = True Set QuellView = QuellDB.GetView(qView) Set vc = quellview.AllEntries Set entry = vc.GetFirstEntry() Set Doc = entry.Document ActDB = 0 Set ZielDB = Session.GetDatabase(qserver,Cstr(ActDB)+"_"+qdb, False) For f = 1 To vc.Count If f = DBSchnittmarken(ActDB) Then Call WriteLog("Wechsle zu Ziel-DB Nr: " & Cstr(ActDB), Info) Print "Wechsle zu Ziel-DB Nr: " & Cstr(ActDB) ActDB = ActDB + 1 Set ZielDB = Session.GetDatabase(qserver,Cstr(ActDB)+"_"+qdb, False) End If Set entry = vc.GetNthEntry(f) Set Doc = entry.Document Set NewDoc = Doc.CopyToDatabase(ZielDB) Forall ActFolder In doc.FolderReferences Call NewDoc.PutInFolder(ActFolder,True) End Forall Next CopyAllDocs=1 Exit Function ErrHand: Call ErrHandSub() Resume Next End Function
This LotusScript was converted to HTML using the ls2html routine,
provided by Julian Robichaux at nsftools.com.
Page 2 of 212