机房收费系统—一堆小问题3

又进行了一周的“机房奋战”——在机房,敲机房。遇到了一个又一个问题,也解决了一个又一个问题,还遗留了一个又一个问题。

下面是我解决的一些小问题。

1.点击关闭按钮弹出对话框

'点击右上角的叉,退出程序前弹出提示框
Private SubmdiForm_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    If MsgBox("是否要退出", vbYesNo + vbDefaultButton2, "提示") = vbNo Then
        Cancel = True
    Else
        End
    End If
End Sub
在网上搜了搜,果然前人的经验都一一显示出来。

我不是第一个遇到这个问题的人,也不是最后一个遇到这个问题的人。

已经有人在我之前思考了这个问题,已经有人在我之前解决了这个问题。

原来是窗体的两个事件——Form_QueryUnloadForm_Unload的区别:

Form_QueryUnload在窗体被卸载之前调用,用来做些善后,比如询问你文件是否保存等。它有个Cancel参数,设为True后就会阻止窗体被卸载。

Form_Unload事件是当窗体从屏幕上删除时发生。将cancel设置为任何非零的值可防止窗体被删除,但不能阻止其它事件,诸如从Microsoft Windows操作环境中退出等。可用QueryUnload事件阻止从Windows中的退出。

当用户用"X"关闭或按ALT+F4关闭窗口时,Form_QueryUnload事件先于Form_Unload事件发生从字面上理解的话QueryUnload事件就是询问用户是否关闭窗口参数Cancel为程序设计者设定的值,当条件满足程序设计者设定的条件时令Cancel=0即可发生Unload事件,Cancel=1时就不发生Unload事件,窗口也不会被关闭,参数UnloadMode 是为了与以前版本兼容留下来的,现在没有使用。

2.SQL数据库添加标识字段

如何修改列标识属性 (Visual Database Tools)?请点击。

需要特别注意的是:标识字段的值不能有默认值,也就是数据表中不能有数据。这也是我屡次设置标识字段都无法设置成功的原因。

SQLServer有一个不错的常用特性,就是标识列。利用这个特性,你可以轻松地在表里为每一行创建唯一的值。添加一个新的列并设置为标识列,或者删除现有标识列都很简单,但是如果是要把一个现有的列改为标识列,或者去掉现有的标识列的标识属性,那应该怎么做呢?


SQLServer中为现有的列添加或去掉标识属性?请点击。这个对我来说有点高级,我还不懂。

3.SQL更新时出错

机房收费系统—一堆小问题3_第1张图片

很明显,错误原因是插入记录的时候,有些不允许为空的字段中插入了空值。

4.数据库中是时间型数据,输入框里为字符串型数据。所以出现了如下错误:

机房收费系统—一堆小问题3_第2张图片

5.还有一个错误是由数据库中数据类型的参数位数引起的。数据库中的时间数据类型为time(7),而从文本框中获取的时间,比如:09:10:10,写入到数据库后,再取出来,就变成了:09:10:10.0000000,再与Format(Now,"hh:mm:ss")进行运算的话,就会报错了。知道了原因,把数据库中的time(7)改为time(0)就OK。这个问题纠结了很久,却忘记截图了,最后学亮帮忙解决了。在解决的过程中,我学到了一点使用立即窗口调试的技巧:debug.print。

还有很多很多问题,下回分析。








你可能感兴趣的:(数据库,vb,机房收费系统)