机房收费系统颗粒大归仓之----调错冰山一角(二)

            一、多步OLE操作产生错误的多种形式

错误如图:

机房收费系统颗粒大归仓之----调错冰山一角(二)_第1张图片

问题形式:

(1)写入数据库的数据长度超过数据库设计时定义字段的长度,例如数据库定义字段长度为10,而我输入的数据长度为12就会报这种错。

(2)数据库需要的数据含有非法的特殊字符,例如空格、“-”等等。用户名有空格或者特殊字符。如下图:

机房收费系统颗粒大归仓之----调错冰山一角(二)_第2张图片

这是因为我写入数据时多了一个空格导致数据库无法识别。

解决方法:添加信息长度不能长于数据库中定义长度,导入数据库中的数据不要包含非法字符,如果出错了请认真检查。

拓展:SQL语句中的空格问题的确不容小觑,如

txt


上图多了空格依然报错。


              二、MDI与子窗体的那些事儿

(1)子窗体显示被Picture控件挡住

情况描述:大家都知道MDI窗体上不能直接添加控件,解决方案为先添加picturebox,然后在picture上添加控件。之后发现添加picturbox后,子窗体显示时会被picturebox遮挡。
原因分析:因为MDI是子窗体的父窗体,子窗体显示出来默认是紧挨着父窗体的,亲儿子嘛!

解决方案:使用API函数:SetParent, 就是为窗体设置一个新父窗体,为它找一个新爹。

首先在模块中声明:
Private Declare Function SetParent Lib"user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

发现:这个函数有两个参数,分别是hWndChild(子窗体句柄)和hWndNewParent( 父窗体的句柄)。具体实现代码如下:


啊啊

解释:子窗体句柄就是frmRegister,父窗体句柄为Picture1.

(2)打开新子窗体,上一窗体最小化
下面就来实现显示新的子窗体时,让上一个窗体自动最小化:

机房收费系统颗粒大归仓之----调错冰山一角(二)_第3张图片

说明:ZOrder属性的作用是将指定的 窗体或控件放置在其图层的z-顺序的前端或后端,其他图片中代码注释已经很详细了,原理不再赘述。

(3)MDI子窗体居中显示

情况描述:MDI子窗体无法设置StartUpposition属性,会有如下提示:

机房收费系统颗粒大归仓之----调错冰山一角(二)_第4张图片

解决方案:在form_Load事件中编写如下代码:
    Me.Top = (Screen.Height - Me.Height) / 3 - Me.Top
    Me.Left = (Screen.Width - Me.Width) / 2 - Me.Left


            三、更改数据表信息提示不允许更改

情况如图:

机房收费系统颗粒大归仓之----调错冰山一角(二)_第5张图片

原因分析:数据库设置问题

解决方案:数据库界面点击选项----->设计器----->表和数据库设计器,把如下图所示“阻止更改前的勾去掉”即可。

机房收费系统颗粒大归仓之----调错冰山一角(二)_第6张图片


后续更新更精彩,欢迎来我的CSDN做客!


你可能感兴趣的:(sql,数据库,api,函数,解决方案)