Dim intmessage As Integer
Dim rst As New 记录集封装程序
If rst.OpenRecordset("appraisal", "[销售订单id]=" & Me.销售订单id) Then
If IsNull(rst.Recordset("appraisalID")) Then
intmessage = MsgBox("该订单尚未评审,是否进行评审?", vbYesNo)
If intmessage = vbYes Then
Call 订单评审
End If
Else
If Not IsNull(rst.Recordset("appraisalid")) Then
intmessage = MsgBox("该订单已被评审,是否再次进行评审?", 4)
If intmessage = vbYes Then
Call 订单评审
End If
End If
End If
End If
二、分析和改进代码的过程:
这段程序采用了if的多层嵌套结构,但这个嵌套多了些脱裤子放屁的意味,而且是脱几层裤子放屁。首先,IsNull(变量)与Not IsNull(变量)是互斥的,而if else end if已经表明了这种互斥关系的程序结构,于是放屁之前就多余穿了一件裤子。于是乎,程序应该简化为:
Dim intmessage As Integer
Dim rst As New 记录集封装程序
If rst.OpenRecordset("appraisal", "[销售订单id]=" & Me.销售订单id) Then
If IsNull(rst.Recordset("appraisalID")) Then
intmessage = MsgBox("该订单尚未评审,是否进行评审?", vbYesNo)
If intmessage = vbYes Then
Call 订单评审
End If
Else
intmessage = MsgBox("该订单已被评审,是否再次进行评审?", 4)
If intmessage = vbYes Then
Call 订单评审
End If
End If
End If
Dim intmessage As Integer
Dim rst As New 记录集封装程序
If rst.OpenRecordset("appraisal", "[销售订单id]=" & Me.销售订单id) Then
If IsNull(rst.Recordset("appraisalID")) Then
intmessage = MsgBox("该订单尚未评审,是否进行评审?", vbYesNo)
Else
intmessage = MsgBox("该订单已被评审,是否再次进行评审?", 4)
End If
If intmessage = vbYes Then
Call 订单评审
End If
End If
再仔细观察一下,if eles end if结构体中的语句,只是字符串的不一样,也就是内裤上绣的花不一样而已。于是程序简化为:
Dim str As string
Dim rst As New 记录集封装程序
If rst.OpenRecordset("appraisal", "[销售订单id]=" & Me.销售订单id) Then
If IsNull(rst.Recordset("appraisalID")) Then
str = "该订单尚未评审,是否进行评审?"
Else
str = "该订单已被评审,是否再次进行评审?"
End If
If MsgBox(str, vbYesNo) = vbYes Then
Call 订单评审
End If
End If
Dim str As string
Dim rst As New 记录集封装程序
If rst.OpenRecordset("appraisal", "[销售订单id]=" & Me.销售订单id) Then
str = "该订单尚未评审,是否进行评审?"
If IsNull(rst.Recordset("appraisalID"))=false Then
str = replace(replace(str,"尚未","已被"),"是否","是否再次")
End If
If MsgBox(str, vbYesNo) = vbYes Then
Call 订单评审
End If
End If
捣腾到此,如果还想进一步简化,就可以写成如下了:
Dim str As string
Dim rst As New 记录集封装程序
If rst.OpenRecordset("appraisal", "[销售订单id]=" & Me.销售订单id) Then
str = "该订单尚未评审,是否进行评审?"
If IsNull(rst.Recordset("appraisalID"))=false Then str = replace(replace(str,"尚未","已被"),"是否","是否再次")
If MsgBox(str, vbYesNo) = vbYes Then Call 订单评审
End If