1、问题描述:
① 机房的前期准备工作就绪之后。参照学生信息管理系统,将学生信息管理系统模块中代码还有登陆窗体对应的代码照着敲上去啦。并且在数据库中增加了登陆的用户名和密码。可是当输入正确的账号和密码之后。不能进入主窗体界面。系统自动退出。
② 用断点调试时,总是在Sub Main()过程中停止。
2、问题原因:当时自己在敲机房收费系统的时候是先敲写的模块。当时在fLogin右下角输入 [点·]。不能弹出OK方法。输入其他方法时总显示错误。因此最后用的cmdOK之后就不报错啦。(见下图)
3、解决方法:
方法一:将上图中Sub Main过程全部注释掉。将机房收费系统属性的 启动对象 改成frmLogin。将frmLogin窗体的cmdOK方法中加入 frmMain.show。之后不走Sub Main 过程。此工程能够完美运行。
方法二:将上图标注的cmdOK改成OK。(此时frmLogin窗体已经声明了全局变量 Public OK As Boolean 'OK的数据类型是布尔型)将机房收费系统属性的 启动对象改成 Sub Main。 之后程序便可完美运行。
4、延伸及思考:
① 如果在方法二的基础上,将frmLogin窗体的cmdOK方法中加入 frmMain.show。运行时会显示下图
实时错误426 只允许一个MDI窗体。那么问题来啦,为什么会产生这种情况呢?这种方法无异于画蛇添足。仔细分析代码就能发现这两段代码表 示的是同样的意思。都是让主窗体(即MDI窗体)显示。
② 那么启动对象设置成 Sub Main和设置成窗体有什么区别呢?
Sub Main:允许你在装载窗体前做更多的事情。属于高级功能。可以在启动之前做一些优化。程序大的话,一般都加一个Sub Main。可以让程序运 行的更加高效。
Form :可以选择一个窗体加载,属于傻瓜功能。适用于初学者和一些小的程序。
5、又一次尝试:
在frmLogin中的声明的变量是全局变量。按理说移动到模块中应该照样能运行。可是粘贴复制到模块中之后。又产生了新的问题。
显示编译错误:未找到方法或数据成员。(和最开始自己敲模块代码时出的错误一样。)
问题又来了,怎么会产生如上错误?VB在窗体模块声明的全局变量与在标准模块中声明全局变量有什么不同之处?
① 作用域相同,但是就是引用的时候有些不一样。模块里的全局变量名直接使用变量名。窗体里的全局变量用 窗体名.变量名
② 有些全局变量无法再窗体中使用,如数组等。
总结:现在所遇到的一些问题,都是一些基础性的问题。只要把基础打好了就能在一定程度上避免这些问题的发生。这也暴露出了自己学习方法上存在的一些问题:知识掌握不牢固,完全是一盘散沙,缺少必要的总结,往往只关注于学习的内容,而很少能从学习的内容中跳出来,看一看这些问题又哪些共性哪些不一样的地方。不善于编制知识网提高学习的效率。
既然发现了自己学习过程中存在的问题,那么就好好改正。在以后的学习中多做总结,多写博客。