原因在于退出时的代码编写的是unload me ,而这个代码所表示的只是退出本窗体,并非退出程序,结束程序的代码为end。如果我们忽略这个问题的话,会出现导出的.exe文件运行后无法最终关闭的情况,表面上程序关闭了,实则程序还在资源管理器的后台运行,用户只有登录资源管理器界面寻找到后台的.exe文件,点击结束才可最终结束运行的程序,这样便会影响用户的体验度。
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Dim mrc As ADODB.Recordset
Dim txtSQL As String
Dim MsgText As String
Dim logmrc As ADODB.Recordset
Dim logtxtSQL As String
Dim logMsgText As String
Dim x '定义MsgBox返回值变量
x = MsgBox("确定要关闭么?", vbOKCancel, "温馨提示:")
If x = vbOK Then '如果返回值为VBOK
txtSQL = "delete from OnWork_Info" '删除正在工作人员OnWork_Info的数据
Set mrc = ExecuteSQL(txtSQL, MsgText)
'将注销的时间更新是worklog_Info的数据表中
logtxtSQL = "update worklog_Info set LogoutDate='" & Format(Now(), "yyyy-MM-dd") & "' ,LogoutTime='" & Format(Now(), "HH:mm:ss") & "' ,status='" & False & "' where UserID='" & frmlogin.txtuserID.Text & "'"
Set logmrc = ExecuteSQL(logtxtSQL, logMsgText)
Cancel = 0 'cancel值为零,退出窗体
Unload Me '退出本窗体
End '退出程序
End If
If x = vbCancel Then '如果按下vbcancel按钮
Cancel = 1 'cancel值为非零,仅关闭弹出窗体
End If
End Sub