我有一个用 ms access 和 vba 制作的表单。我在插入中使用此代码,并在创建按钮时给出默认值。DoCmd.GoToRecord , , acNewRec
我的表单绑定到表并将表链接到 SQL 数据库。如果表中还没有记录,它会成功添加,但如果表中已经有记录,并且表单已关闭并再次打开并再次添加新数据,它将不再插入新的记录行,而只是更新最后一条记录。
调用表单后,我单击新建按钮以清除所有文本框值,然后输入新记录并单击添加,结果就是,它只会更新最后一条记录。我有一个自动递增 ID。有人遇到过这种情况吗?
我的添加按钮上的代码是这样的
私有子类 btnAdd_Click() 出现错误时转到 Err_CustomerNew_Click DoCmd.GoToRecord , , acNewRec 退出_客户新_点击: 退出子程序 Err_CustomerNew_Click: MsgBox 错误描述 恢复 Exit_CustomerNew_Click 子目录结束
没有涉及脚本,只有表单绑定到与 sql 数据库链接的表。并且表单的记录源是我直接使用的查询而不是表。像从表名中选择*按 id 降序排序。
答案1
如果您正在尝试编写脚本,请发布代码,我会尽力帮助您。如果脚本最初在 MSAccess 中,则命名空间可能会略有不同。例如,如果数据代码看起来不像从表单到 SQL 的回发项(无论出于何种原因),或者字段中的操作位于按钮单击事件之外的某个地方,它不会将您的数据发布到数据库,并且实际上可以根据您的脚本编写方式从表单字段中删除您的条目。希望对您有所帮助,ClaireW
答案2
嗨,我找到了一个解决方案,但我不知道这是否是一个合适的答案,因为我没有 vba 经验。这将成功地将新记录与绑定表单插入到 SQL 的链接表中,并具有自动递增的 ID 值。当表单打开时已经有现有记录,则表单捕获的 ID 是表中的第一个 ID 或最新 ID。每当您使用此命令单击添加按钮时,这将更新记录这DoCmd.GoToRecord , , acNewRec
取决于您在查询中使用升序还是降序,其中哪一个将更新记录而不是插入。因此,为了在不更新现有记录的情况下成功插入它,表单必须创建一组要插入的新 ID。您所要做的就是有一个 on_load 事件,并在该事件中添加此代码,DoCmd.GoToRecord , , acNewRec
以便当它加载一组新记录时,表单获取并插入它..希望对您有所帮助。