( 黄色字体为自定义函数,绿色字体为注释 )
1. ComboClassno AddItem 不重复的条目
都知道 select 语句是这样的 :
Select[all|distinct] [top n] <select_list>
[Into new_table]
From …
where …
Group by …
Having …
Order by …
现数据库的表 Student_info 中有 1 班和 2 班各两名同学 , 我需要从中挑选出班号 1 和 2, 而不是得到 1,1,2,2, 所以就不能用" select * from student_info where grade=' " & comboGrade.Text &"'"
所以需要这样查询 :
txtSQL ="select distinct class_No from student_infowhere grade='" & ComboGrade.Text & "'"
Set mrc = ExecuteSQL (txtSQL,MsgText)
While mrc.EOF = False
ComboClassno.AddItemmrc.Fields("class_no").Value
mrc.MoveNext
Wend
mrc.Close
2. 查看上一条记录或下一条记录
先看这样一段代码
Private SubcmdPre_Click()
If mrc.BOF = True Then
mrc.MoveLast
Else
mrc.MovePrevious
End If
Call ViewData
End Sub
运行结果是这样的
为什么会出错呢 , 我们来分析一下 . 当指针指向第一条记录的时候 ,if 条件不成立 , 所以会执行 mrc.MovePrevious , 此时指针指向第一条记录之前 ,callviewdata 时出错 .
所以正确的程序应该是这样的 :
Private SubcmdPre_Click()
mrc.MovePrevious
If mrc.BOF = True Then
mrc.MoveLast
End If
Call ViewData
End Sub
3. 查找新添加记录是否与已有记录重复
从数据库中查找已有记录存放到记录集中 , 记录集非空时 , 从第一条记录开始判断是否重复 , 若重复则 exit sub; 若不重复则继续判断下一条 .
txtSQL = "select* from user_info"
Set mrc = ExecuteSQL (txtSQL,MsgText)
While (mrc.EOF = False)
If Trim$(mrc.Fields("user_name").value) = Trim$(TxtUserName.Text)Then
MsgBox "用户已存在,请重新输入用户名!",vbOKOnly + vbExclamation, "警告"
TxtUserName .SetFocus
TxtUserName .Text = ""
TxtPassword1.Text = ""
TxtPassword2.Text = ""
Exit Sub
Else
mrc.MoveNext
EndIf
Wend
mrc.EOF = False 说明 mrc 记录集不为空 , 经常用 mrc.BOF 和 EOF 的值判断记录集是否为空 .
4. 课程设置时 , 要实现添加课程即从图一到图二 , 用如下代码 .
(图一) (图二)
' 保证全部课程中选中时已选课程不同时选中
Private SubListAllcourse_Click()
If ListAllcourse.ListIndex <> -1 Then
ListSelectcourse.ListIndex = -1
End If
End Sub
' 保证已选课程中选中时全部课程不同时选中
Private SubListSelectcourse_Click()
If ListSelectcourse.ListIndex <> -1Then
ListAllcourse.ListIndex = -1
End If
End Sub
' 在全部课程中被选中的情况下 , 点击添加按钮 , 课程被添加到已选课程中
Private SubcmdAdd_Click()
If ListAllcourse .ListIndex <> -1 Then
ListSelectcourse .AddItemListAllcourse.List(ListAllcourse.ListIndex)
End If
End Sub
Listindex=-1 表示 listbox 未选中
5 单选按钮与复选框的 value 属性
If Check1.Value Then … 表示如果复选框被选中那么 ... 看源码的时候知道是什么意思 , 自己写的时候写成了 If Check1.Value =True Then …
复选框 value 属性有 0-unchecked( 未选中 ),1-checked( 选中 ),2-grayed( 禁止使用 , 灰色显示 ), 默认值 1. 而单选按钮 option 的 value 属性有 True 和 False, 做系统时我把这两个控件的属性弄混了 , 还是基础知识不扎实 , 看来以后还得细心再细心啊 .