学生信息管理系统已经敲了很多了,以学籍为例,更好的梳理一下学生的思路。
一:模块
首先设置启动对象为 sub main(工程-工程1属性-启动对象sub main) ,在sub main这个过程中,让我们先显示登陆窗口,假如登陆窗体正确的话,直接显示主窗体。由于我们数据库中总是在不断的更新状态,为了保证用户名和密码的一致性和正确性,我们需要定义一个新的登陆(dim flogin as new frmlogin),这时候出现了一个假设条件,成立了直接进入主窗体。
接下来就是访问数据源了,这里的这句代码真的是很重要啊,我们很多时候都在运行的时候出现这个错误。
<strong><span style="font-size:24px;"><span style="font-family:KaiTi_GB2312;font-size:24px;"><strong> if mrc.eof then </strong></span></span></strong>
所以,这句代码必须书写正确,
<strong><span style="font-size:24px;">ConnectString = "FileDSN=student.dsn;UID=sa;PWD=TGB520"</span></strong>在这句代码中,student为数据源中创建的数据库的名字,uid是数据库的登陆账号,pwd是数据库的登陆密码。当然了,在最后软件成型的时候,需要异地发布,要考虑到脱离这台电脑的环境,这时候他的代码有点变化的是,如下:
<strong><span style="font-size:24px;">connectstring="provider=sqloledb;server=192.168.26.77;uid=sa;pwd=123456;database=student"</span></strong>对于模块中定以的查询的代码,如下,
<strong><span style="font-size:24px;">Function ExecuteSQL(ByVal SQL As String, MsgString As String) As ADODB.Recordset 'executes SQL and returns Recordset Dim cnn As ADODB.Connection Dim rst As ADODB.Recordset Dim sTokens() As String On Error GoTo ExecuteSQL_Error sTokens = Split(SQL) Set cnn = New ADODB.Connection cnn.Open ConnectString If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then '非Select语句 cnn.Execute SQL '数据量不大时,可以在连接上,直接执行SQL语句 MsgString = sTokens(0) & " query successful" '虽然MsgString不是返回值,但传递方式是ByRef,实参地址和这个地址相同 Else 'Select语句 Set rst = New ADODB.Recordset rst.Open Trim$(SQL), cnn, adOpenKeyset, adLockOptimistic '得到临时表,游标指向第一条记录 'get RecordCount, Set ExecuteSQL = rst MsgString = "查询到" & rst.RecordCount & _ " 条记录 " End If</span></strong>
二:登陆窗体
我们在敲五个小例子中已经学习了登陆窗体,需要定义API函数getusername。
同时要对这个窗体出现的情况经行分析,在这个例子中还定义了不能出现的次数。
在这个窗体中经常会出现if mrc.eof then的错误,这是数据库的链接的错误,归纳起来,数据库的错误主要是以下几种:
1书写错误,也就是我们将代码的很多地方没有注意到,例如我们的数据库密码和链接时候的密码不一致,我们的分号写成了冒号,或者是我们的数据库的名称不一致,或者是很多时候多加了一个或者是少了一个空格等等,这些只要是认真,都可以避免的。
2数据库的链接有问题,我们很多时候数据库表面看是连上了,因为测试数据源的时候显示的是测试成功了,但是很多时候我们在配置工具中很多项是没有启动的,具体请见数据库链接的各种问题
这段代码我们在五个小例子中已经见识过了,但是在form中的那段代码我一直不懂的是什么意思,从网上查了查,现在拿出来和大家分享一下:
Dim sBuffer As String Dim lSize As Long sBuffer = Space$(255) '给sbuffer预留255个字节,起到缓冲作用 lSize = Len(sBuffer) 'sbuffer的长度 Call GetUserName(sBuffer, lSize) '读取用户名到sbuffer中 'API中字符串作参数,需要提前确定大小 If lSize > 0 Then 如果用户名长度大于0 然后显示用户名 txtUserName.Text = "" Else txtUserName.Text = vbNullString '没有字符串 End If关于登陆的窗体就是这样啦!
三:在我们整个学生信息管理系统中,eof和bof始终伴随着我们,具体请见eof和bof详解
对一些属性的没有正确添加,也会是我们的学生信息管理系统出错的,下面列举几个比较容易忽视的属性:
1 在登陆窗体中,要想使输入用户名和密码后确定按钮按回车管用,需要把确定按钮的default变为true,同样的,要想把取消按钮按esc键就可以直接进入系统,需要把cancel属性设置成为true
2 由于在添加信息的窗口中,班级的添加框是combox,但是在添加的时候是输入,而不是下拉,我们需要combox的style设置成为2,这样就很方变了。
3 在查询的窗体中,MSHFlexGrid的一些属性是必须掌握的,要不然就会出现下标越界等错误。
cellalignment 单元格的水平和垂直居中
cols列 rows 行
textmatrix 单元格的文本内容
textmatrix(1,0)代表的是第二行第一列
学习仍在继续,come on。。。。。。。。