该事件下的脚本流程是首先判断数据是否修改过,如果修改过,则让用户选择是否保存,用户确认保存则保存,不保存则退回事务然后关闭窗口。保存数据时,保存成功则直接关闭窗口,保存失败则让用户确认是否关闭窗口,用户确认要关闭则关闭窗口。脚本如下: 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 这样的语句修改后很简洁,但用户必须首先使用“保存”按钮保存数据,然后才能单击“退出”按钮关闭窗口,也就是说程序硬性规定了用户的执行流程。 |
|