设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

[模块/函数] 从存储过程说起——浅谈流程步骤

[复制链接]
跳转到指定楼层
1#
发表于 2023-3-7 18:19:12 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
在很多人看来,存储过程就是依托答辩,而且由于业务流程的复杂性,往往会越写越长。我见过最长的有6000多行,没有美化过的那种。——一般来说,10个字段一行便于统计。一个字段一行的那种会被开发工程师打的,因为嵌套几个表,一屏就没了。
这么长的存储过程应该管理呢?他们有一个办法:大致把业务分成几部分,然后通过设置起止序号来确定。
比如,我的存储过程跑到第5个步骤,突然断网了(这种事情经常发生),接下来我只想从第5步开始跑,而不愿意全部重来,就可以设置起始序号为5。
又或者我发现第3和第5步有问题,只想跑这两步,其它(包括第4步)都不想跑。那么就单独把起止序号为3和5的拿出来单独跑……等等。
这是一种低耦合的思想。先把所有步骤拆解出来,然后再根据需要跑对应的步骤。

说到这个,是因为前几天版友sxgaobo发帖,说要《请教个弱智的问题》。看完后面的回复,我认为这个问题并不弱智。由此想起了之前写存储过程的日子,感慨一番,顺带做了一个实例,希望能够抛砖引玉,给大家带来一些启迪。

按惯例,代码先奉上。由于只是示例,没太大复杂的代码,这里就不解释了。
需要说明的一点是,使用这个方法时,应该先把流程捋清,有依赖关系的必须按顺序来,否则可以随便放。
例如,更新A表数据,更新B表数据,再通过A、B表关联生成C表。那么A、B步骤谁第一不重要,但更新C表必须是最后的,否则数据就乱了。
  1. Sub pub_Steps(Optional ByVal lngS As Long = -1, Optional ByVal lngE As Long = 100)
  2.     If lngS <= 1 And lngE >= 1 Then
  3.         MsgBox "执行操作1"
  4.     End If
  5.     If lngS <= 2 And lngE >= 2 Then
  6.         MsgBox "执行操作2"
  7.     End If
  8.     If lngS <= 3 And lngE >= 3 Then
  9.         MsgBox "执行操作3"
  10.     End If
  11. End Sub
  12. '执行步骤1
  13. Private Sub cmd1_Click()
  14.     Call pub_Steps(, 1)
  15. End Sub
  16. '执行步骤2
  17. Private Sub cmd2_Click()
  18.     Call pub_Steps(2, 2)
  19. End Sub
  20. '执行步骤3
  21. Private Sub cmd3_Click()
  22.     Call pub_Steps(3, 3)
  23. End Sub
  24. '执行步骤1-2
  25. Private Sub cmd4_Click()
  26.     Call pub_Steps(, 2)
  27. End Sub
  28. '执行步骤1、3
  29. Private Sub cmd5_Click()
  30.     Call pub_Steps(1, 1)
  31.     Call pub_Steps(3, 3)
  32. End Sub
  33. '执行步骤1-3
  34. Private Sub cmd6_Click()
  35.     Call pub_Steps
  36. End Sub
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-1 17:19 , Processed in 0.122176 second(s), 26 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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