我已经尝试解决这个问题两天了,我不会再进一步了解它。
我的访问应用程序中有两个表:其中一个名为tabDerroga
,其中保存了一些文档的数据(主要是其协议号或“Protocolo”)。另一个称为tabLog
,它用于存储日志。我还有一个查询,检查是否有与Derroga
相关的日志。如果确实如此,则无需再使用它了。但如果没有,我需要处理它,然后我保存日志条目详细说明我做了什么。 tabLog
表有[Protocolo Derroga]外键/字段,指向tabDerroga
。[Protocolo]。根本没问题。
在创建表格和查询时,我已经广泛测试了所有手动,并且它可以完美地运行。如果我在tabLog
中创建任何条目,其中“外地字段”引用tabDerroga
条目,则该条目将在查询中省略。
当我通过VBA向tabLog
添加行时,我的问题就出现了。如果我在它之后手动检查表格,我可以确认它已成功添加。 但查询无法查看。
我可以运行代码数百次,使用相同的数据创建数百行,但不知何故,它似乎与数据库的其余部分“不同”或“不可见”。如果我复制这些行中的任何一行并粘贴到新条目上,则手动添加的内容将立即对查询“可见”,但所有其他行都不会。他们都有相同的数据。
这是我尝试完成任务的方法之一:
MyRS.MoveFirst
MyRS.AddNew
MyRS![Descrição] = "10 dias antes de vencer"
MyRS![Protocolo derroga] = Protocolo
MyRS.Update
MyRS.Close
这给了我完全相同的结果:
DoCmd.RunSQL "INSERT INTO tabLog ([Protocolo derroga],[Descrição]) VALUES ('" & Protocolo & "','10 dias antes de vencer')"
这样做:
CurrentDb.Execute "INSERT INTO tabLog ([Protocolo derroga],[Descrição]) VALUES ('" & Protocolo & "','10 dias antes de vencer')"
顺便说一句,我已经通过先组合整个字符串来检查问题是否与任何sql注入问题有关。得到了相同的结果。
我错过了什么?在数据准备就绪之前,我是否需要“更新”任何内容?如果是这样,为什么它通常出现在表格中?
任何帮助将不胜感激!
答案 0 :(得分:0)
我多么愚蠢。我完全忘记了处理计算机的第一个也是唯一的普遍规则:如果它不起作用,重启一切。
昨天回到家,今天一切正常。没有代码更改。
感谢@TimLentine,@ JohnnyBones,@ MurDeR和@ MP24!