最近又做了一些程序,对vb的认识也深入了许多。
其中对MDI窗体以及DataGrid、MSFlexGrid的使用上有些体会。其中MDI窗体是一个主窗体,对其操作用Picturebox来实现,这样可以在MDI 窗体上添加更多的控件,比如word那种的上面是菜单,下面还有按钮的就可以这样实现。在各个窗体之间的调用时要注意控件的调用位置,也就是说在使用with的时候在控件前要加上那个控件所在的窗体,如果是在同一个窗体就不需要。
我使用DataGrid、MSFlexGrid比较多一点,但是觉得前者对数据库中的显示很好,而后者对于查询结果显示比较好,这个也就是许多同仁认为VSFlexGrid比较好的原因吧,哪天我也下一个来用哈,比如我这几天弄的一个科研管理系统就是都用了的,显示数据的时候用的 DataGrid,显示查询结果的时候用的MSFlexGrid很是不方便。在使用DataGrid的时候如果想要在开始就设置字段的个数就点右键----编辑,然后点insert就可以添加了,至于宽度在属性里面可以一个一个设置,动态的话就要先用len看你数据的长度,然后再乘以一个系数。MSFlexGrid的使用我主要是用于查询结果,最后用additem来添加,这里要注意2个问题,一是要设置fixedrows=0,removeitem=1,因为不设置的话第一行会一直空着,在执行完additem的循环后,要加一句fixedrows=1这样是让显示字段标题的那行为灰色的那种,要不然显示不好看,如下面代码:
.FixedRows = 0
.RemoveItem 1
.ColWidth(0) = 1200: .ColWidth(1) = 3000: .ColWidth(2) = 1200: .ColWidth(6) = 1500
strCN = Array('借阅证号', '书名', '图书条码', '借期', '还期', '已还', '库名')
For i = 0 To 6
.TextMatrix(0, i) = strCN(i)
Next
End With
With Library_Manage.rsLendReturn
If .State = adStateClosed Then .Open
Set Rs = .Clone
End With
With Rs
If Not .EOF Then
.MoveFirst
For i = 0 To .RecordCount - 1
If IsDate(.Fields('还期')) Then
'MsgBox .Fields('证号')
If CDate(.Fields('还期')) < Date Then
strSQL = 'select 书名 from 馆藏书目 where 条码='' & .Fields('条码') & '' And 库室名='' & .Fields('库名') & '''
With Library_Manage.Library_Manage_Con
If .State = adStateClosed Then .Open
Set objInfo = .Execute(strSQL)
End With
strT = .Fields('证号') & vbTab & objInfo.Fields('书名') & vbTab & .Fields('条码') & vbTab & .Fields('借期') & vbTab & .Fields('还期') _
& vbTab & .Fields('已还') & vbTab & .Fields('库名')
MSFlexGrid1.AddItem strT
End If
End If
.MoveNext
Next
If MSFlexGrid1.Rows > 1 Then _
MSFlexGrid1.FixedRows = 1
End If
End With
上面代码中的vbTab是一个空格符,这样在后面使用additem的时候就会分开显示,要不然是在同一个字段里面显示内容。我在csdn的论坛上,常看到一些朋友问一些关于数据库查询语句方面的东西,我觉得这些应该多看看书,SQL 查询语句不外乎,创建、修改、插入、删除等,然后就是增加查询的属性,比如Union、Group By等等,这个其实应该在建表的时候把问题想清楚,数据库表的建立很重要,一般信息管理系统都是建立在数据库表的基础上的,如果表的建立很完善那么代码部分的工作就会很轻松。
我用vb也就是2,3个月的时间,但是通过问专家http://www.china-askpro.com/,以及CSDN我可以很迅速的找到我想要的东西,同时经过在CSDN上回答一些问题,让我对学的知识记的更牢固,我可以回答的问题也越来越多,虽然现在就2个三角,不过继续努力,呵呵。