2009-10-26 129 views
0

我有访问“应用程序”(.adp文件),当它打开时,我使用用户名和时间打开来更新管理数据库。当它关闭它更新与用户名的时间管理数据库关闭 - 这是事件表sperate记录,这样它看起来像用于标识Access数据库实例的唯一标识属性值

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

如果那里打开数据库用户的两倍会有2周和2个接近的行动记录但无法确定哪个数据库会话属于两个关闭事件中的每一个。

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

回答

0

打开访问数据库时可能会运行一个方法。在这里你可以生成一个随机标识符并将其存储在一个全局变量中。在编写你的日志行时,你可以包含这个标识符让你跟踪登录和注销。

更新:您可以使用显示的代码here生成一个GUID,该GUID非常适合独特,因此应该按照您的要求进行操作。如果没有,你可能需要澄清,因为我不了解这个问题。

+0

是啊这就是即时通讯设法避免,编号喜欢使用内置标识符,甚至开放时间,任何东西自动 – garyb45445 2009-10-26 16:06:11

+0

内置标识符的优点是什么? – 2009-10-26 16:18:29

+0

gary您正在使用哪种语言/客户端。我不认为有这样的'连接标识符',我认为它需要在代码中,但也许别人可以提供帮助。 – 2009-10-26 16:35:32

0

你可以有一个全球性的“Id_session”变量,在启动时(随机生成的唯一标识符例如)发起的,你会在你的“事件”表的“id_Session”列存储。当数据库被打开时,记录被插入在“事件”表中,并且该记录标识符被存储为全局变量。当数据库关闭时,现有记录被识别(通过id_session值)并在数据库中更新。

事实上,我不明白内置标识符的兴趣,而不是这个解决方案。

2

我做到这一点使用它在启动时打开一个隐藏的绑定形式。在这种形式下,我将记录插入表格中。然后我取自动编号ID(或任何SQL Server调用该字段。)在文本控件,记录和存储的。如果你做任何的发展和你打一个错误,并重新运行代码你失去这样我更喜欢使用的形式来存储这些类型的变量所有的全局变量。

在隐藏窗体关闭事件中,我然后用退出的日期/时间更新相同的记录。我已经使用这种技术十多年没有任何问题。

0

所有这些问题的答案在我看来是聪明过头了。

我所做的是在我登录的表中添加一个自动编号字段,然后捕获启动事件记录的自动编号值并将其存储在某处(通常位于应用程序启动窗体的隐藏字段中)用于在关机时使用启动事件的ID号写入关机事件。

+0

那么几乎我所建议的呢? 2009-10-27 00:46:45

0

HWND对于同时在同一台PC上或两台不同的PC上同时打开的2个访问应用程序是唯一的吗?

+0

Hwnd对于同一台PC上的每个窗口都是独一无二的,对于两台不同的PC,您可以捕获PC名称。 – Fionnuala 2009-10-27 12:47:22

+0

你读了我的想法,我用pc name + hwnd + date实现了一个测试,但是如果有人在pc上打开数据库,关闭它然后再打开,那么hwnd会是唯一的呢?电脑的重启会影响到这一点吗?有什么我可以添加到混合,以确保独特? – garyb54654564 2009-10-27 13:25:27