Office中国论坛/Access中国论坛

标题: 从存储过程说起——浅谈流程步骤 [打印本页]

作者: roych    时间: 2023-3-7 18:19
标题: 从存储过程说起——浅谈流程步骤
在很多人看来,存储过程就是依托答辩,而且由于业务流程的复杂性,往往会越写越长。我见过最长的有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
复制代码
[attach]64464[/attach]





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