我有一个访问'应用程序'(。adp文件),当它打开时,我让它用用户名和时间打开更新管理数据库。当它关闭时,它会在用户名时间关闭时更新管理数据库 - 这些是事件表中的sperate记录,所以它看起来像
username,dbaction,time
bob,open,13:00
gareth,open,13:05
bob,close,14:00
如果用户在哪里打开数据库两次,则会记录2次打开和2次关闭操作,但无法确定2个关闭事件中的每一个都属于哪个数据库会话。
我想在此表中存储的是一个唯一标识符,用于将打开和关闭操作与“每个会话”链接在一起。最好我想在vba中使用属性ov作为应用程序对象,如果存在的话。它甚至存储数据库打开的时间吗?我可以在打开数据库时生成自己的id并将其存储在变量中直到关闭,但id更喜欢使用内置的东西。有什么想法吗?
答案 0 :(得分:2)
我使用隐藏的未绑定表单执行此操作,该表单在启动时打开。在那个表单中,我将记录插入表中。然后,我获取该记录的自动编号ID(或SQL Server调用该字段的任何内容。)并存储在文本控件中。如果您进行任何开发并且遇到错误并重置正在运行的代码,则会丢失所有全局变量,因此我更喜欢使用表单来存储这些变量。
在隐藏表单On Close事件中,然后使用退出的日期/时间更新相同的记录。十多年来我一直在使用这种技术而没有任何问题。
答案 1 :(得分:0)
可能有一种方法在打开时在访问数据库中运行。在此,您可以生成随机标识符并将其存储在全局变量中。在编写日志行时,您可以包含此标识符,以便您跟踪登录和注销。
更新:你可以使用显示here的代码来生成一个GUID,它非常具有独特性,所以这应该做你想要的。如果没有,你可能需要澄清,因为我不理解这个问题。
答案 2 :(得分:0)
您可以拥有一个全局“Id_session
”变量,在启动时启动(例如,随机生成的uniqueIdentifier),您将存储在“event”表的“id_Session
”列中。打开数据库时,记录将插入“event”表中,记录标识符将存储为全局变量。关闭数据库时,将标识现有记录(通过id_session值)并在数据库中更新。
事实上,我不了解内置标识符的兴趣而不是此解决方案。
答案 3 :(得分:0)
所有这些答案在我看来都太聪明了一半。
我所做的是将一个自动编号字段添加到我正在记录它们的表中,然后捕获启动事件记录的自动编号值并将其存储在某处(通常在应用程序启动表单的隐藏字段中)在shutdown时使用,使用启动事件的ID号写入shutdown事件。
答案 4 :(得分:0)
对于可能在同一台PC或2台不同PC上同时打开的2个访问应用程序,HWND是唯一的吗?