实现功能.
这部分让自己学到了很多技术上的东西,尤其是程序与数据库交互出现的问题,因为代码基本上都是重复的都是是"增删改查".下面说说自己遇到的问题.
问题一:
adLockOptimistic与update、adLockBatchOptimistic与updatebatch。
因为弄混了两者的区别,让自己开始的时候狠狠地纠结了一把。
问题二:
在敲学生信息管理系统时出现上述问题一般都是数据库连接有问题,大家可以重点检查与数据库连接有关的语句。提醒大家一点,向下面的过程中,一定要注意where后面的空格!
Private Sub cmdInquire_Click() Dim txtSQL As String Dim msgText As String Dim dd(4) As Boolean Dim objRs As ADODB.Recordset txtSQL = "select * from result_info where " '连接数据库 '选择学号 If Check1(0).Value Then If Trim(txtSID.Text) = "" Then MsgBox "学号不能为空,请输入学号!!!", vbOKOnly + vbExclamation, "警告" txtSID.SetFocus Exit Sub Else If Not IsNumeric(Trim(txtSID.Text)) Then MsgBox "请输入数字!!!", vbOKOnly + vbExclamation, "警告" Exit Sub txtSID.SetFocus txtSID.SelStart = 0 txtSID.SelLength = Len(txtSID.Text) End If dd(0) = True txtSQL = txtSQL & "student_id= '" & Trim(txtSID.Text) & "'" End If End If
问题三:
出现上述错误,主要是输入长度或数据类型与数据库的设定不一致。这样在将数据写入数据库时就会出现错误。避免这种错误的方法可以根据数据库的需要来显示用户输入的长度和格式。
比如:限制用户只能输入数字,最大输入长度为20.
Public Sub lmtLong(txt As String, n As Integer) '限制输入长度
If Len(Trim(txt)) >= n Then
KeyAscii = 0
MsgBox "最多输入" & n & "位!!!", vbExclamation + vbOKOnly, "警告"
End If
End Sub
Public Sub lmtNumber(a As Integer) '只能输入数字
If (a >= 48 And a <= 57) Or a = 8 Then
Else
a = 0
MsgBox "请输入数字!!", vbOKOnly + vbExclamation, "警告"
End If
End Sub问题四:
当数据库中没有记录时,再次载入就会出现这个问题,解决方法:提前进行判断,如果数据为空则提示添加数据。
Private Sub modifycourseMenu_Click() Dim txtSQL As String Dim msgText As String Dim objRs As ADODB.Recordset txtSQL = "select * from course_info " Set objRs = ExecuteSQL(txtSQL, msgText) If objRs.EOF And objRs.BOF Then MsgBox "数据为空,请先添加数据", vbOKOnly + vbExclamation, "警告" Exit Sub Else frmmodifycourseinfo.Show sbStatusBar.Panels(1) = frmmodifycourseinfo.Caption End If End Sub
问题五:
这个问题纠结了很久,使用书签时如果删除最后一条记录时就会报错。大家解决的方法也各不相同,我一开始采用的是:进行判断,如果是最后一条记录时则提醒然后删除并卸载窗体。
If str2 = vbOK Then If objRs.RecordCount = 1 Then objRs.Delete MsgBox "记录已经完全删除请添加信息!!", vbOKOnly + vbExclamation, "警告" Unload Me Else objRs.MoveNext If objRs.EOF Then objRs.MoveFirst myBookMark = objRs.Bookmark objRs.MoveLast objRs.Delete objRs.Bookmark = myBookMark Call viewData Else myBookMark = objRs.Bookmark objRs.Delete objRs.MovePrevious objRs.Bookmark = myBookMark Call viewData ' End If End If Else objRs.Bookmark = myBookMark Call viewData End If
可是,如果数据库里的数据一开始只有两条时,则还是会出现问题4。现在我也没有解决,希望大家给点指点。
问题六:
主要当对某个表进行操作时,如果这个表被关闭了,就会出现这个错误。
问题七:
当更新数据时是直接更新好还是先删除在写入的好?
上述问题都是在做学生管理系统时遇到的一些主要问题。当然问题肯定不止这些,其他的一些细节问题,我们将在下面文章中讲述。