唯一的id属性值,用于标识Access数据库实例

时间:2009-10-26 15:42:07

标签: sql-server ms-access

我有一个访问'应用程序'(。adp文件),当它打开时,我让它用用户名和时间打开更新管理数据库。当它关闭时,它会在用户名时间关闭时更新管理数据库 - 这些是事件表中的sperate记录,所以它看起来像

username,dbaction,time
bob,open,13:00
gareth,open,13:05
bob,close,14:00

如果用户在哪里打开数据库两次,则会记录2次打开和2次关闭操作,但无法确定2个关闭事件中的每一个都属于哪个数据库会话。

我想在此表中存储的是一个唯一标识符,用于将打开和关闭操作与“每个会话”链接在一起。最好我想在vba中使用属性ov作为应用程序对象,如果存在的话。它甚至存储数据库打开的时间吗?我可以在打开数据库时生成自己的id并将其存储在变量中直到关闭,但id更喜欢使用内置的东西。有什么想法吗?

5 个答案:

答案 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是唯一的吗?