Office中国论坛/Access中国论坛

标题: 更新查询:将领用表最后一条记录更新到录入表耗时的问题 [打印本页]

作者: sunwrsun    时间: 2016-3-27 15:37
标题: 更新查询:将领用表最后一条记录更新到录入表耗时的问题
    问题1:将领用表的最后一条记录查询出来后,更新到录入表。目前能够实现更新(代码如下),但更新一次耗时达8分钟,领用表记录2873条,录入表记录12771条。有没有更优化的语句解决方法(或SQL语句)。

UPDATE 固定资产_录入表 SET 固定资产_录入表.资产编号_条码号 = DLast("资产编号_条码号","固定资产_最后一次领用记录查询","资产编号_条码号='" & [资产编号_条码号] & "'"), 固定资产_录入表.资产现状 = DLast("资产现状","固定资产_最后一次领用记录查询","资产编号_条码号='" & [资产编号_条码号] & "'"), 固定资产_录入表.存放地点 = DLast("存放地点","固定资产_最后一次领用记录查询","资产编号_条码号='" & [资产编号_条码号] & "'"), 固定资产_录入表.保管人 = DLast("保管人","固定资产_最后一次领用记录查询","资产编号_条码号='" & [资产编号_条码号] & "'");

    问题2:领用表和录入表在主窗体中分别建立在两个子窗体中,我想实现领用表记录跟新后,点击保存按钮,录入表的相关记录也随之跟新,这样就不需要再单独批量更新了,能帮我写一段保存按钮的代码吗(后台是SQL Server)。
    谢谢。

作者: zhuyiwen    时间: 2016-3-27 20:04
  1. UPDATE 固定资产_录入表 SET
  2.         固定资产_录入表.资产编号_条码号 = DLast("资产编号_条码号",  "固定资产_最后一次领用记录查询","资产编号_条码号='" & [资产编号_条码号] & "'"),
  3.         固定资产_录入表.资产现状 = DLast("资产现状", "固定资产_最后一次领用记录查询","资产编号_条码号='" & [资产编号_条码号] & "'"),
  4.         固定资产_录入表.存放地点 = DLast("存放地点", "固定资产_最后一次领用记录查询","资产编号_条码号='" & [资产编号_条码号] & "'"),
  5.         固定资产_录入表.保管人 = DLast("保管人", "固定资产_最后一次领用记录查询","资产编号_条码号='" & [资产编号_条码号] & "'");
复制代码
这样做,电脑也累啊
没有条件?整个表更新?

作者: sunwrsun    时间: 2016-3-27 20:46
谢谢zhuyiwen,我试试。
作者: sunwrsun    时间: 2016-3-27 20:48
可以用“资产编号_条码号”作统计,它是唯一编号。
作者: sunwrsun    时间: 2016-3-27 20:58
按照zhuyiwen的思路问题基本解决,不知是不是笨办法,在更新查询的“资产编号_条码号”字段加入条件,实现将领用表的最后一条记录查询出来后,更新到录入表,谢谢。让大家分享代码。
Like IIf(IsNull([Forms]![固定资产_普通用户主窗体]![资产编号_条码号]),'*','*' & [Forms]![固定资产_普通用户主窗体]![资产编号_条码号] & '*')
作者: roych    时间: 2016-3-29 00:26
sunwrsun 发表于 2016-3-27 20:58
按照zhuyiwen的思路问题基本解决,不知是不是笨办法,在更新查询的“资产编号_条码号”字段加入条件,实现 ...

绝对是笨方法。
好一点的方法应该是建立一对多关系,然后再执行更新查询。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3