gpt4 book ai didi

lotus-notes - 如何检索 Lotus Notes 数据库的 "Record activity"标志?

转载 作者:行者123 更新时间:2023-12-04 02:39:30 26 4
gpt4 key购买 nike

"Record activity" flag of Lotus Notes database

我想检索屏幕截图中显示的 Lotus Notes 数据库的“记录事件”标志(请参阅左下角的复选框)。我如何通过 API 做到这一点?

最佳答案

更新:无法单独通过 LotusScript 完成此操作,但也许您可以通过 Lotus Notes C API 获取此信息。

NSFDbGetUserActivity方法将返回用户事件信息(显示在该对话框中),如果没有摘要信息,它将返回 ERR_SPECIAL_ID。这不是确定是否检查记录事件标志的精确方法,但您可以从该方法的结果中推断标志的状态。

当然,仍有可能标记检查,但尚未记录任何事件,或者相反,标记被检查但事件先前记录在数据库。

另一个解决方案可能是以编程方式执行通常会记录在用户事件中的操作。然后您可以检查该事件是否确实被记录下来,然后您就会知道该标志是否处于事件状态。如果您指定一个特殊的 Notes 用户来运行此代码,则可以更容易地从事件列表中挑选出该用户,从而避免由某些正常的最终用户事件引起的误报。

下面的代码向您展示了如何通过 C API 获取用户事件信息,取自本教程页面上的示例 #3:http://www.triplewhitefox.com/tech-calling-c-api-from-lotusscript

(声明)

'Structures used by Notes C API
Type TIMEDATE
Innards(1) As Long 'DWORD
End Type

Const MAXALPHATIMEDATE = 80

Type DBACTIVITY
First As TIMEDATE 'TIMEDATE /* Beginning of reporting period */
Last As TIMEDATE 'TIMEDATE /* End of reporting period */
Uses As Long 'DWORD /* # of uses in reporting period */
Reads As Long 'DWORD /* # of reads in reporting period */
Writes As Long 'DWORD /* # of writes in reporting period */
PrevDayUses As Long 'DWORD /* # of uses in previous 24 hours */
PrevDayReads As Long 'DWORD /* # of reads in previous 24 hours */
PrevDayWrites As Long 'DWORD /* # of writes in previous 24 hours */
PrevWeekUses As Long 'DWORD /* # of uses in previous week */
PrevWeekReads As Long 'DWORD /* # of reads in previous week */
PrevWeekWrites As Long 'DWORD /* # of writes in previous week */
PrevMonthUses As Long 'DWORD /* # of uses in previous month */
PrevMonthReads As Long 'DWORD /* # of reads in previous month */
PrevMonthWrites As Long 'DWORD /* # of writes in previous month */
End Type

'STATUS LNPUBLIC NSFDbGetUserActivity(DBHANDLE hDB, DWORD Flags, DBACTIVITY far *retDbActivity, HANDLE far *rethUserInfo, WORD far *retUserCount);
Declare Function NSFDbGetUserActivity Lib "nnotes.dll" (Byval hDB As Long, Byval Flags As Long, retDbActivity As DBACTIVITY, rethUserInfo As Long, retUserCount As Integer) As Integer

'STATUS LNPUBLIC NSFDbClose( DBHANDLE hDB);
Declare Function NSFDbClose Lib "nnotes.dll" (Byval hDB As Long) As Integer

'STATUS LNPUBLIC NSFDbOpen(char far *PathName, DBHANDLE far *rethDB);
Declare Function NSFDbOpen Lib "nnotes.dll" (Byval filepath As String, DB As Long) As Integer

'STATUS LNPUBLIC ConvertTIMEDATEToText(const void far *IntlFormat, const TFMT far *TextFormat, const TIMEDATE far *InputTime, char far *retTextBuffer, WORD TextBufferLength, WORD far *retTextLength);
Declare Function ConvertTIMEDATEToText Lib "nnotes.dll" (Byval IntlFormat As Integer, Byval TextFormat As Integer, InputTime As TIMEDATE, Byval retTextBuffer As String, Byval TextBufferLength As Integer, retTextLength As Integer) As Integer

初始化

Sub Initialize
Dim ReturnCodel As Long
Dim hDBl As Long
Dim retDbActivity As DBACTIVITY
Dim rethUserInfo As Long
Dim retUserCount As Integer
Dim Flags As Long

Dim retTextBuffer As String
Dim retTextLength As Integer
Dim BufferSize As Integer

Dim session As New NotesSession

'Open the database
ReturnCodel = NSFDbOpen(session.CurrentDatabase.FilePath, hDBl)
If ReturnCodel <> 0 Then
Error 9999, "An error occurred calling the API function " + _
"NSFDbOpen." & Chr$(10) & "The return code was " & + _
Trim$(Str$(ReturnCodel)) & "."
Exit Sub
End If

Flags = 0
ReturnCodel = NSFDbGetUserActivity(hDBl, Flags, retDbActivity, rethUserInfo, retUserCount)
If ReturnCodel <> 0 Then
Error 9999, "An error occurred calling the API function " + _ "NSFDbGetUserActivity." & Chr$(10) & "The return code was " & + _
Trim$(Str$(ReturnCodel)) & "."
Call NSFDbClose(hDBl)
Exit Sub
End If

retTextBuffer = String$(MAXALPHATIMEDATE + 1,0)
ReturnCodel = ConvertTIMEDATEToText(0, 0, retDBActivity.First, retTextBuffer, MAXALPHATIMEDATE, retTextLength)
Print "First access = " + Left(retTextBuffer, retTextLength)

retTextBuffer = String$(MAXALPHATIMEDATE + 1,0)
ReturnCodel = ConvertTIMEDATEToText(0, 0, retDBActivity.Last, retTextBuffer, MAXALPHATIMEDATE, retTextLength)
Print "Last access = " + Left(retTextBuffer, retTextLength)

Print "Uses = " + Cstr(retDBActivity.Uses)
Print "Reads = " + Cstr(retDBActivity.Reads)
Print "Writes =" + Cstr(retDBActivity.Writes)

'Close the database
ReturnCodel = NSFDbClose(hDBl)
End Sub

关于lotus-notes - 如何检索 Lotus Notes 数据库的 "Record activity"标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7685824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com