我正在开发我正在开发的访问数据库中的表单时遇到问题 . 查询正在运行而没有停止 . 我必须手动停止它(因此不执行下面描述的操作) . 在开头,表单应该执行这部分代码:
Private Sub Form_Load()
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE Table1 SET Field1 = Null WHERE EXISTS(SELECT * FROM Query2 WHERE Query2.Field2 = Table1.Field2 AND Query2.Field3 = 0 AND Query2.Field1 = Table1.Field1)"
DoCmd.SetWarnings True
End sub
换句话说,我需要在Query2中检查记录Field3 = 0的记录,在这些记录中,哪些记录具有Field1匹配Table1的Field1和Field2匹配Table1的Field2 . 当识别出这些记录时,我想将Table1中Field1的记录值设置为Null .
For example (i put in "code" aspect to have this part more readable, but it's not code, only an example)
Table1.Field1 | Table1.Field2
ABC 12345
DEF 67891
Query2.Field1 | Query2.Field2 | Query2.Field3
ABC 12345 5 --> this record is not selected
DEF 12345 0 --> this record is not selected
DEF 67891 0 --> this record is selected and value of DEF in Table1 is deleted (Null)
你看到有什么错误吗?你有没有办法做到这一点?我不太了解sql . 我希望它足够清楚......
谢谢,黛安
2 回答
我要尝试的第一件事就是改变
至
虽然在大多数数据库引擎中两者之间没有区别,但在Access中它可能会有所不同 .
希望这可以帮助 .
编辑:
由于这没有多大帮助,我接下来要尝试的是:
请确保首先针对测试数据库运行此操作 .
HTH .
感谢您的帮助,我终于以不同的方式完成了它,我不是程序员所以也许它不是很干净但是它适用于我的目的:-)
首先我修改了一下query2以限制为2个条件然后我在新表中导出查询的数据然后我删除所有我不感兴趣的记录然后我使用剩余的记录更新table1(最后非常很少,所以查询很快) . 更多步骤但更快......