Const NULLHANDLE = 0 Const NO_ERROR = 0 Const ERR_FORMULA_COMPILATION = &h500 + 1 ' ================================================================================ ' CheckSelectionFormulaValid - ' This function uses the Lotus C API to check the syntax of a Notes formula. ' Return Value: Variant - A 3 elements array containing: ' Index 0 - The compilation error code or NO_ERROR (0) if valid ' Index 1 - The compilation error offset in formula or NO_ERROR if valid ' Index 2 - The compilation error length or NO_ERROR if valid ' ' Note: The compilation error code at Index 0 can then be passed to GetAPIError() ' to get more info about the error. ' ================================================================================ ' ================================================================================ ' GetAPIError - This function uses the Lotus C API to return ' a Notes error's text message. ' ' Return Value: String - The text associated with the Notes API error code. ' ================================================================================ Declare Function NSFFormulaCompile Lib "nnotes.dll" ( _ Byval FormulaName As Long, _ Byval FormulaNameLength As Integer, _ Byval FormulaText As Lmbcs String, _ Byval FormulaTextLength As Integer, _ rethFormula As Long, _ retFormulaLength As Integer, _ retCompileError As Integer, _ retCompileErrorLine As Integer, _ retCompileErrorColumn As Integer, _ retCompileErrorOffset As Integer, _ retCompileErrorLength As Integer _ ) As Integer Declare Sub OSMemFree Lib "nnotes.dll" (Byval hHandle As Long) Declare Function OSLoadString Lib "nnotes.dll" ( _ Byval hmodule As Long, _ Byval status As Integer, _ Byval s As String, _ Byval slen As Integer _ ) As Integer Function CheckSelectionFormulaValid(sFormula) As Variant Dim iError As Integer Dim hFormula As Long Dim wFormulaLen As Integer Dim iCompileError As Integer Dim iCompileErrorLine As Integer Dim iCompileErrorColumn As Integer Dim iCompileErrorOffset As Integer Dim iCompileErrorLength As Integer Dim iArray(2) As Integer iError = NSFFormulaCompile(0, 0, _ sFormula, _ Len(sFormula), _ hFormula, _ wFormulaLen, _ iCompileError, _ iCompileErrorLine, _ iCompileErrorColumn, _ iCompileErrorOffset, _ iCompileErrorLength) If hFormula <> NULLHANDLE Then Call OSMemFree(hFormula) End If If iError = ERR_FORMULA_COMPILATION Then iArray(0) = iCompileError iArray(1) = iCompileErrorOffset iArray(2) = iCompileErrorLength CheckSelectionFormulaValid = iArray Else iArray(0) = NO_ERROR iArray(1) = NO_ERROR iArray(2) = NO_ERROR CheckSelectionFormulaValid = iArray End If End Function Function GetAPIError(iErrorCode As Integer) As String Dim iRetVal As Integer Dim sError As String * 1024 sError = String(1024, 0) iRetVal = OSLoadString(0&, iErrorCode, sError, 1023) If iRetval <> 0 Then GetApiError = Left$(sError, iRetVal) End If End Function