Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用VBA禁用Access中的查询_Sql_Database_Ms Access_Vba - Fatal编程技术网

Sql 使用VBA禁用Access中的查询

Sql 使用VBA禁用Access中的查询,sql,database,ms-access,vba,Sql,Database,Ms Access,Vba,一位会计部的同事抱怨她如何两次执行一个查询,结果使她的价值翻了一番,她感到困惑。我只是一个初级IT人员,几乎没有VBA经验。我基本上只是尝试添加代码,以使数据库中的查询不能运行多次,除非重新启动数据库。我在考虑做一个布尔检查,看看查询是否已经运行,是否已经运行,不允许再次运行。或者我可以做一个简单的if语句。如果你对这个问题有任何意见,请告诉我 我在谷歌上也找不到任何东西。我认为日期和会话ID是每个表中的默认值,您可以对两者的相加进行编码,等等 它们被填充,date=date()作为默认值,se

一位会计部的同事抱怨她如何两次执行一个查询,结果使她的价值翻了一番,她感到困惑。我只是一个初级IT人员,几乎没有VBA经验。我基本上只是尝试添加代码,以使数据库中的查询不能运行多次,除非重新启动数据库。我在考虑做一个布尔检查,看看查询是否已经运行,是否已经运行,不允许再次运行。或者我可以做一个简单的if语句。如果你对这个问题有任何意见,请告诉我


我在谷歌上也找不到任何东西。

我认为日期和会话ID是每个表中的默认值,您可以对两者的相加进行编码,等等

它们被填充,date=date()作为默认值,sessionID是sessionID表中的DMAX,作为所述查询中的额外列

此SessionID表由一个运行宏的启动弹出窗体启动


每个正在操作的表的主键是日期和sessionID,不允许重复。您可能不需要日期,只需要PK中的sessionID

这样的用户实施临时想法并不总是最好的主意

您应该分析这里发生的事情,并确保它不会发生在应用程序设计中,而不是通过任意规则


示例:如果更新查询向账单中添加费用,并且每个账单只能发生一次,则更新查询还应在账单记录中设置“已添加费用”标志。而且它不应该使用此标志集更新账单。

您有Access可以用来确定查询是否在当前会话期间运行的功能吗?我认为Access没有内置的功能可以做到这一点。这就是我希望我能编写的代码,但我对VB很差劲,在谷歌搜索时找不到任何类似的场景。我需要检查它是否在会话中运行,如果已经运行,我需要锁定它,直到创建新会话。使用数据宏复制到表,更新表,然后检查是否有当天的条目。您的怀疑是正确的;运行查询时,没有可记录的访问内置功能。如果您的Access版本>=2007,并且您阻止用户直接从导航窗格运行查询,则可以加载
TempVar
以指示何时运行查询。在下一次尝试时,首先检查
TempVar
,以决定是否继续。请注意,您需要控制用户运行查询的方式(可能是通过表单上的命令按钮),并使用VBA管理
TempVar
,等等。如果我这样做,是否会限制我每天使用一次?我只想让它在一个会议上一次,而不是一天一次。