期待已久的机房终于结束了,在敲机房期间,有很多的困惑,例如在第一次验机房的时候,我还不是很清晰一把用户,管理员,操作员之间的关系,不理解一般用户到底是谁,是学生还是教师,师傅的观点是学生,但是我的观点是老师,而且我觉得学生怎么可以查看上机记录呢,所以啊,我觉得还是因该是一般用户,而且,最终也搞明白了那个是那个,
不得不说,机房确实不简单,更何况是在基础不咋样的我身上,但是通过机房的历练,我对vb有了更深入的理解,也让我更加觉得敲代码真的很好玩,。虽然我头发掉的更快了。
接下来我来集合一下觉得比较好用的几个代码段
-
主要是用于改变表格中MSFlexGrid1的表格按照内容变动
在模块中添加此代码
Public Sub AdjustColWidth(frmCur As Form, gridCur As Object, Optional bNullRow As Boolean = True, Optional dblIncWidth As Double = 0)
Dim i, j As Integer
Dim dblWidth As Double
With gridCur
For i = 0 To .cols - 1
dblWidth = 0
If .ColWidth(i) <> 0 Then
For j = 0 To .Rows - 1
If frmCur.TextWidth(.TextMatrix(j, i)) > dblWidth Then
dblWidth = frmCur.TextWidth(.TextMatrix(j, i))
End If
Next
.ColWidth(i) = dblWidth + dblIncWidth + 1000
End If
Next
End With
End if
在需要的循环的loop后面添加:
AdjustColWidth Me, MSFlexGrid1
2,在敲机房时,是不是会有重复的窗体的内容呢,例如像全体下机或者选择下机,这时候呢由于这两种下机和主窗体上的下机都相同,所以呢,我们就可以用很好的利用调用窗体来进行跟家更加方便的查询:
代码:
'将上机卡号定义为一个数组,ReDim就是定义数组的
ReDim a(mrc.RecordCount) As String‘定义是一个查询条数的总数组
For i = 0 To mrc.RecordCount – 1
a(i) = Trim(mrc!CardNo)
CardNo = a(i)
'给txtcardno.text赋值
FrmMain.txtCardno.Text = a(i)
FrmMain.Command2.Value = True
'移动到下一条记录
mrc.MoveNext
Next
MsgBox "所有学生下机成功!", vbOKOnly + vbExclamation, "提示"
'清空MSHFlexGrid1里面的内容
MSHFlexGrid1.Clear
组合查询对于大家来说应该算是比较难的一类了吧,但是正因为如此,所以呢,做出来的时候才更加激动啊,感受到了代码的奇妙之处,
(1)例如,在选择combo后,如果是日期或者时间那么只需要在文本框上面放时间控件儿DTPicker1
If Combo3.Text = "上机日期" Or Combo3.Text = "下机日期" Then
If Combo3.Text = "上机日期" Or Combo3.Text = "下机日期" Then
Text3.Visible = False
DTPicker3.Visible = True
DTPicker3.Format = 1,‘1代表日期
End If
If Combo3.Text = "上机时间" Or Combo3.Text = "下机时间" Then
Text3.Visible = False
DTPicker3.Visible = True
DTPicker3.Format = 2,‘2代表时间
End If
(2)组合查询的精髓:我是进行一行一行的查询的
txtSQL = "select * from Line_Info where "
If Trim(Combo1.Text) = "" Or Trim(Combo4.Text) = "" Or Trim(Text1.Text) = "" Then
MsgBox "请将第一行选项内容填写完整!", vbOKOnly + vbExclamation, "警告"
Exit Sub
End If
txtSQL = txtSQL & " " & FiledName(Combo1.Text) & " " & Trim(Combo4.Text) & "'" & Trim(Text1.Text) & "'"
If Trim(Combo7.Text) <> "" Then
If Trim(Combo2.Text) = "" Or Trim(Combo5.Text) = "" Or Trim(Text2.Text) = "" Then
MsgBox "请将第二行选项内容填写完整!", vbOKOnly + vbExclamation, "警告"
Exit Sub
Else
txtSQL = txtSQL & " " & Relationname(Combo7.Text) & " " & FiledName(Combo2.Text) & " " & Trim(Combo5.Text) & "'" & Trim(Text2.Text) & "'"
End If
End If
If Trim(Combo8.Text) <> "" Then
If Trim(Combo3.Text) = "" Or Trim(Combo6.Text) = "" Or Trim(Text3.Text) = "" Then
MsgBox "请将第三行选项内容填写完整!", vbOKOnly + vbExclamation, "警告"
Exit Sub
Else
txtSQL = txtSQL & " " & Relationname(Combo8.Text) & " " & FiledName(Combo3.Text) & " " & Trim(Combo6.Text) & "'" & Trim(Text3.Text) & "'"
End If
End If
- 结账的逻辑:
总收入=上期余额+充值金额-退卡金额-消费金额
- 需要注意的点:
(1)注意日期的格式,要看好数据库的日期格式,不行改一下数据库
Eg:
If DTPicker1.Visible = True Then '当控件显示时,把值赋给文本框
Text1.Text = Format(DTPicker1.Value, "yyyy-mm-dd")
End If
Char(10)::代表它的固定长度是10,而且它所占的位置是10
Varchar(50)最长是50 ,但是可以变动,而且它所占的位置只是它本身所占的位数
建议:把数据库中的卡名和学生名改为varchar