该事件下的脚本流程是首先判断数据是否修改过,如果修改过,则让用户选择是否保存,用户确认保存则保存,不保存则退回事务然后关闭窗口。保存数据时,保存成功则直接关闭窗口,保存失败则让用户确认是否关闭窗口,用户确认要关闭则关闭窗口。脚本如下:
int li_flag
If dw_1.ModifiedCount() <> 0 or dw_1.DeletedCount() <> 0 Then
Beep(2)
li_flag = MessageBox("确认","数据已经修改,是否保存",Question!,YesNoCancel!,1)
Choose Case li_flag
Case 1//用户要求保存
If dw_1.Update() = 1 Then//如果保存成功
commit;//提交数据
return 0//关闭窗口
Else//保存不成功
rollback;//回退事务
Beep(2)//响铃两声
//让用户确认是否关闭窗口
If MessageBox("错误","数据保存不成功,是否还要关闭窗口?",&
Question!,YesNo!,2) = 1 Then
return 0//关闭窗口
Else
return 1//不关闭窗口
End If
End If
Case 2//不保存数据
rollback;//回退事务
return 0//关闭窗口
Case 3//用户选择了Cancel
return 1//不允许关闭窗口
End Choose
Else//数据窗口中的数据没有修改过
return 0//直接关闭窗口
End If
上面的脚本也可以简化成以下语句:
If dw_1.ModifiedCount() <> 0 or dw_1.DeletedCount() <> 0 Then
Beep(2)
MessageBox("提示", "数据已经修改,请先保存数据再退出! ")
Return 1
Else
Close(parent)
End If
这样的语句修改后很简洁,但用户必须首先使用“保存”按钮保存数据,然后才能单击“退出”按钮关闭窗口,也就是说程序硬性规定了用户的执行流程。
int li_flag
If dw_1.ModifiedCount() <> 0 or dw_1.DeletedCount() <> 0 Then
Beep(2)
li_flag = MessageBox("确认","数据已经修改,是否保存",Question!,YesNoCancel!,1)
Choose Case li_flag
Case 1//用户要求保存
If dw_1.Update() = 1 Then//如果保存成功
commit;//提交数据
return 0//关闭窗口
Else//保存不成功
rollback;//回退事务
Beep(2)//响铃两声
//让用户确认是否关闭窗口
If MessageBox("错误","数据保存不成功,是否还要关闭窗口?",&
Question!,YesNo!,2) = 1 Then
return 0//关闭窗口
Else
return 1//不关闭窗口
End If
End If
Case 2//不保存数据
rollback;//回退事务
return 0//关闭窗口
Case 3//用户选择了Cancel
return 1//不允许关闭窗口
End Choose
Else//数据窗口中的数据没有修改过
return 0//直接关闭窗口
End If
上面的脚本也可以简化成以下语句:
If dw_1.ModifiedCount() <> 0 or dw_1.DeletedCount() <> 0 Then
Beep(2)
MessageBox("提示", "数据已经修改,请先保存数据再退出! ")
Return 1
Else
Close(parent)
End If
这样的语句修改后很简洁,但用户必须首先使用“保存”按钮保存数据,然后才能单击“退出”按钮关闭窗口,也就是说程序硬性规定了用户的执行流程。