Domino 9 und frühere Versionen > ND6: Entwicklung
Formelfeld im Hintergrund erstellen
(1/1)
gossifu:
Hallo zusammen,
bin gerade dabei ein Script zu schreiben, mit welchem ich ein Formelfeld erstellen und befüllen will.
Habe auch Input von LS2CAPI von Normund Kalnberzins.
Ich komme da aber an einer Stelle nicht weiter und zwar, wo die Formel vom Unicode in das LMBCS (???) - Format gebracht wird. Danach soll die Formel kompiliert werden, aber ich bekomme einen Formelfehler selbst bei @All.
--- Code: ---Public Sub writeFormula (formula As String, doc As Notesdocument, iname As String)
Dim irc As Integer, formula_buffer As blockid
Dim rethFormula As Long, retFormulaLength As Integer, retCompileError As Integer, wdc As Integer
Dim pFormula As Long, lenFormula As Integer, pFormulaCompiled As Long
' pointer for the new item
Dim pBuff As Long
Dim memMan As New memoryManagerExt
pFormula = memMan.newBuffer (3*Lenb(formula))
Problem1 ->> lenFormula = W32_OSTranslateFromStr (OS_TRANSLATE_UNICODE_TO_LMBCS, formula, Lenb(formula), pFormula, 3*Lenb(formula))
Problem2->> irc = W32_NSFFormulaCompilePtr (0, 0, pFormula, lenFormula, rethFormula, retFormulaLength, retCompileError, wdc, wdc, wdc, wdc)
If irc<>0 Then
Print "*", formula, getError(irc)
Else
'We use formula_buffer block below as an input for decompileFormula routine.
formula_buffer.pool = rethFormula
formula_buffer.block = 0
'Then we obtain the pointer to the buffer containing the compiled formula
pFormulaCompiled = W32_OSLockObject (rethFormula)
'and write it to the item of TYPE_FORMULA.
irc = W32_NSFItemAppend(doc.handle, 0, iname, Len(iname), TYPE_FORMULA, pFormulaCompiled, Clng(retFormulaLength))
'You may uncomment the next line to provide a “sanity check”: verify the formula just written.
Print irc, "*decompile", decompileformula(formula_buffer)
' Finally we unlock the buffer and release the memory.
Call W32_OSUnlockObject (rethFormula)
Call W32_OSMemFree (rethFormula)
End If
End Sub
--- Ende Code ---
Der Fehlercode ist die 1281 (Formelfehler).
Hat da schonmal jemand mit der CAPI was gemacht, compiliert o.ä. und kann mir ein paar Tipps geben.
Dann könnte ich Regeln verteilen, ohne das die User etwas machen müssen.
Der Rest ist auch schon fertig, nur dieses Formelfeld treibt mich zur Weissglut.
mfg
Kjeld
gossifu:
Womit mir auch geholfen wäre, wenn mir jemand sagt, wie ich im Hintergund ein Item mit dem Type Formel (1356) erstelle,
dann kann ich das bestücken.
Ich habe auch mit einer Hilfsmaske gearbeitet, die ein Formelfeld enthält. Die Formel dort eingetragen, ComputeWithForm, Item in das Profil kopiert. Blieb aber ein Textfeld. :'(
mfg
Kjeld
gossifu:
Hallo zusammen,
habe beim googlen diesen Link gefunden: http://www.eknori.de/2005-10-15/check-formula-syntax/.
Habe dann die Deklaration der Function
--- Code: ---W32_NSFFormulaCompilePtr
--- Ende Code ---
umgestellt und es klappt. Der dritte Paramater ist bei LS2CAPI ein Long und bei Eknori ein LMBCS-String. Mit dem String funktionierts. ;D Danke Enori.
Jetzt kann ich das Kalenderprofil durchgehen, verschiebe die Regeln um eine Stufe, schreibe meine Filterregel in das Feld $FilterFormula_1.
In $FilterFormula und $FilterFormula_0 stehen ja die Regeln für die MiniView. $FilterFormulaCount wird eins hochgezählt.
Außerdem zähle ich die OrderNum der Regeldokumente 1 hoch und schon hat alles seine Richtigkeit.
Bei neuen User wird durch unser Anlage-Tool das Kalenderprofil gleich richtig bestückt.
Und natürlich habe ich darauf geachtet, dass die JunkMail-UNID bei jedem User separat gesetzt wird.
mfg
Kjeld
koehlerbv:
Respekt!
Bernhard
gossifu:
Achso, wichtig ist noch, das man in der Rules-Scriptbibliothek in der Funktion CompactMailRules, den Vorgabewert pro Regel um 1 erhöht.
--- Code: --- '//Reset counter
nTotalEnableRules = 2 ' Vorgabe war hier 1
--- Ende Code ---
mfg
Kjeld
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln