设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 508|回复: 7
打印 上一主题 下一主题

求助:如何在发货编辑窗体上修改订单子表中的订单状态与完成日期字段内容

[复制链接]
1#
发表于 2023-10-9 20:04:27 | 显示全部楼层
写更新查询。很简单的。去旧贴里看吧。这里我不再回复了。
--------------------------------------
说几句题外话(不想听的话,可以在分割线之前退出就好了)
--------------------------------------





你的业务逻辑强耦合,维护起来很麻烦。比如目前这个情况:
添加数据的业务逻辑代码形成闭环,添加完之后直接清空临时表,以致无法再利用临时表的来更新订单明细数据。
因此,解决方案有2个:
1、要么在生成临时表后,先更新订单明细数据(我的回帖附件中的做法)
2、修改业务逻辑代码。
看起来第1种方法相对好一些,至少不用大刀阔斧去改原先的业务逻辑代码。
但随着业务逻辑越来越复杂,第1种方法也会暴露出其它问题,比如,某个业务逻辑在”TJ“代码执行一半时进行处理,你又该如何应对?
更好的做法,是把这些代码写成单个查询,需要组合哪几个查询来处理,就组合几个。

比如,TJ代码里有3个业务”新增“Tbl_发货”,新增“TMP_发货_Detail”,删除“TMP_发货_Detail”。
那么,就创建2个追加查询,1个删除查询。
这样的话,可以按顺序运行“qry追加_发货”、”qry追加_发货_Detail_临时表“、”qry更新_订单_detail状态“和”qry删除后_发货_Detail_临时表“。假定还有别的表需要用到”TMP_发货_Detail“的数据去更新,那么我随时可以创建查询,添加进来。

现在的情况是,只要每增加一个需求,就得在代码里复制一段ADO去修改。——这样做当然也没啥问题,最多代码长一点,调试时多一些时间,看起来费劲点儿罢了。
回复 支持 1 反对 0

使用道具 举报

2#
发表于 2023-10-12 00:11:43 | 显示全部楼层
印象中,数据表的单条记录是没法锁定的,只能锁定/不锁定全部。除非改成单个窗体才能锁定单条记录。估计这不是你想要的吧?
另外,更新查询本来就不是给用户编辑的,但我们可以通过一些条件来更新部分结果。例如,加上一个“是否保存”的“是否”字段,后续再作为条件进行更新。勾选的就更新,不勾选的就不更新。

最后还是那一句,开发数据库首先考虑的应该是流程问题,而不是技术问题。
比如,实现这个需求,我应该建立哪些表,应该关联哪些表来创建查询,而不是说我可以通过写哪些代码来实现。那样很容易陷入硬编码(hard code)的困境。
像你这个问题,真用代码是不是不能实现?其实不是完全不能实现,比如,你可以创建字典(dict)、数组(array)或者集合(collection)来保存这些临时数据。临时表的数据直接丢掉,通过ADO的方式和for循环方式来添加字典数据。但这么繁琐的过程,你确定要这么干?
3#
发表于 2023-10-15 00:04:43 | 显示全部楼层
tmtony 发表于 2023-10-13 22:16
赞一个,辛苦roych的回复

哎,初学者总是不太考虑考虑业务逻辑模块的规划,觉得这段代码那段代码可以代替基础的表查询什么的。

诚然,创建表、查询,CRUD操作等等确实都可以用代码来运行。但那也是先构建好每个功能模块,建立好各个模块所需的查询等,再转为VBA来实现的。而不是反过来,先写VBA代码,业务逻辑想到哪改到哪。

当初我也一样走过一些弯路,好在很快意识到这一点,才开始去了解数据库设计三范式/表设计规范等相关内容(我打赌他肯定没搜过论坛里这方面的帖子)。

关于他这两三个帖子,断断续续回复两列很多,他听进去多少,又或者有没有听进去,随他吧。
或许知道某一天,屎山一般的祖传代码难以维护,必须推翻重来了,他就明白这些了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-11 01:52 , Processed in 0.109378 second(s), 26 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表