Option Explicit
Dim temp As New ADODB.Recordset
Public db As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim strSQL As String
Dim strsql1 As StringPrivate Sub Cmddelete_Click()    rst.Delete
    rst.Requery
    If rst.RecordCount() = 0 Then              '累计记录个数
        clearfield
        hidebutton
        MsgBox "数据库中已经没有记录了!"
        
        Exit Sub
    End If
    
    rst.MoveNext
    If rst.EOF Then
        rst.MoveLast
    End If
    filltext                               '填充文本框
        adodclass.Refresh
    
End Sub
Private Sub Cmdexit_Click()
    db.Close
    Unload Me
    frmmain.Show vbModal
    
End SubPrivate Sub cmdfind_Click()
    Dim findstr As String
    
    findstr = InputBox("请输入要查找的班级名称:", "查找提示窗口")
    rst.find "classname='" & findstr & "'"
    If rst.EOF = True Then
        
        MsgBox "没有要查询的数据!"
        Exit Sub
        
    End If
    
    
    filltext
End SubPrivate Sub cmdfirst_Click()
    rst.MoveFirst
    filltext
End SubPrivate Sub Cmdlast_Click()
    rst.MoveLast
    filltext
End SubPrivate Sub Cmdmodify_Click()
   
    strSQL = "SELECT * FROM bspeciality"
    If Txtmajorid.Text = "" Then
        MsgBox "请输入专业编号!"
        Txtmajorid.SetFocus
        Exit Sub
    End If
    
    temp.Open strSQL, db, adOpenStatic, adLockOptimistic'就是这句执行不过去了,帮帮忙啊!    
   temp.Filter = "SpecID='" & Txtmajorid.Text & "'"
   temp.Requery
   If temp.RecordCount = 0 Then
      MsgBox ("这个专业方向编号不存在,编辑操作失败!")
      temp.Close
      Exit Sub
   End If
   temp.Close    
    If TxtClassID.Text = "" Then
        MsgBox "请输入班级编号!"
        TxtClassID.SetFocus
        Exit Sub
        
    End If
    
    If Txtclassname.Text = "" Then
        MsgBox "请输入班级名称!"
        Txtclassname.SetFocus
        Exit Sub
        
    End If
    
    If Txtnumber.Text = "" Then
        MsgBox "请输入班级人数!"
        Txtnumber.SetFocus
        Exit Sub
        
    End If
      fillrecord
   rst.Update
   adodclass.Refresh
   Txtmajorid.SetFocus
End SubPrivate Sub Cmdnext_Click()
    rst.MoveNext
    If rst.EOF Then
      MsgBox "这是最后一个记录了!"
      rst.MoveLast
    End If
    filltext
End SubPrivate Sub Cmdprevious_Click()
    rst.MovePrevious
    If rst.BOF Then
        MsgBox "这是第一个记录了!"
        rst.MoveFirst
    End If
    filltext
End Sub Private Sub Cmdadd_Click()
    strSQL = "SELECT * FROM bspeciality"
    
    If Txtmajorid.Text = "" Then
        MsgBox "请输入专业编号!"
        Txtmajorid.SetFocus
        Exit Sub
    Else
    
     temp.Open strSQL, db, adOpenStatic, adLockOptimistic
     temp.Filter = "SpecID='" & Txtmajorid.Text & "'"
     temp.Requery
     
     If temp.RecordCount = 0 Then
      MsgBox ("这个专业方向编号不存在,编辑操作失败!")
      temp.Close
      Exit Sub
     End If
     temp.Close
    End If
   
   
    strsql1 = "select * from bclass"
    
    
    If TxtClassID.Text = "" Then
        MsgBox "请输入班级编号!"
        TxtClassID.SetFocus
        Exit Sub
    Else
     temp.Open strsql1, db, adOpenStatic, adLockOptimistic
     temp.Filter = "classid='" & TxtClassID.Text & "'"
     temp.Requery
     If temp.RecordCount <> 0 Then
      MsgBox ("这个班级编号已存在,您输入的信息不能被保存!")
      temp.Close
      Exit Sub
  End If
   temp.Close
   'If rst.RecordCount() <> 0 Then
    '  rst.MoveLast
 End If
   'rst.AddNew
        
    If Txtclassname.Text = "" Then
        MsgBox "请输入班级名称!"
        Txtclassname.SetFocus
        Exit Sub
        
    End If
    
    If Txtnumber.Text = "" Then
        MsgBox "请输入班级人数!"
        Txtnumber.SetFocus
        Exit Sub
        
    End If
 
    
   rst.AddNew
   fillrecord
   rst.Update
   clearfield
   rst.Requery
   showbutton
   Txtmajorid.SetFocus
  adodclass.Refresh    Exit Sub End Sub
Private Sub Command1_Click()
clearfield
Txtmajorid.SetFocus
End SubPrivate Sub Dgdclass_Click()
    If rst.RecordCount = 0 Then
        TxtClassID.SetFocus
        Exit Sub
    End If
    
    TxtClassID.Text = Dgdclass.Columns(0).Text
    Txtclassname.Text = Dgdclass.Columns(1).Text
    Txtmajorid.Text = Dgdclass.Columns(3).Text
    Txtnumber.Text = Dgdclass.Columns(4).Text
End Sub
   Private Sub Dgdmajor_Click()
    strSQL = "SELECT SpecID FROM bspeciality"
    
    temp.Open strSQL, db, adOpenKeyset, adLockOptimistic
    If temp.RecordCount = 0 Then
        TxtClassID.SetFocus
        temp.Close
        
        Exit Sub
    End If
    temp.Close
    
    Txtmajorid.Text = Dgdmajor.Columns(0).Text
    End SubPrivate Sub Dgdmajor_GotFocus()
Dgdclass.Visible = False
End SubPublic Sub filltext()
   
    If rst.RecordCount = 0 Then
        Exit Sub
    End If
    
    Txtmajorid.Text = rst.Fields("SpecID")
    TxtClassID.Text = rst.Fields("ClassID")
    Txtclassname.Text = rst.Fields("ClassName")
    Txtnumber.Text = rst.Fields("ClassStuNum")
    
End SubPublic Sub clearfield()
   Txtmajorid.Text = ""
   TxtClassID.Text = ""
   Txtclassname.Text = ""
   Txtnumber.Text = ""
End Sub'连接到数据库
Private Function ConenctToDatabase() As Boolean
  On Error GoTo ErrorHandler
  Dim DBName As String, ServerAdd As String, UserName As String, UserPwd As String
  '设置连接信息字符串的参数
  ServerAdd = "YJFW-Z98J06J19"
  DBName = "Paike"
  UserName = "sa"
  UserPwd = ""
  '连接数据库
  Set db = New ADODB.Connection
  db.ConnectionTimeout = 10
  db.CursorLocation = adUseServer
  db.ConnectionString = "uid=" & UserName & ";pwd=" & UserPwd & _
                            ";driver={SQL Server};server=" & ServerAdd & _
                            ";database=" & DBName & ";dsn=''"
  db.Open
  '返回值
  ConenctToDatabase = True
  Exit Function
ErrorHandler:
  MsgBox "连接到数据库出错", vbCritical, "出现错误"
  Exit Function
End Function
Private Sub Form_Load()
    
    strSQL = "SELECT * FROM bClass"
    ConenctToDatabase
    rst.Open strSQL, db, adOpenKeyset, adLockOptimistic
    
    If rst.RecordCount() = 0 Then
        'clearfield
        hidebutton
    Else
        showbutton
        'rst.MoveFirst
        'filltext
       
    End If
    filltext
    
    Dgdclass.Visible = False
 
        
End Sub
Public Sub hidebutton()
     Cmddelete.Enabled = False
     Cmdnext.Enabled = False
     cmdfirst.Enabled = False
     Cmdlast.Enabled = False
     Cmdmodify.Enabled = False
     Cmdprevious.Enabled = False
End SubPublic Sub showbutton()
    Cmddelete.Enabled = True
     Cmdnext.Enabled = True
     cmdfirst.Enabled = True
     Cmdlast.Enabled = True
     Cmdmodify.Enabled = True
     Cmdprevious.Enabled = True
End SubPublic Sub fillrecord()If Val(Txtmajorid.Text) = 0 Then
   MsgBox "请输入正确的专业编号!"
   Else
    rst.Fields("SpecID") = Txtmajorid.Text
    End If
'strSQL = "select classid from bclass where classid = '" & TxtClassID.Text & "'"'temp.Open strSQL, db, adOpenStatic, adLockOptimistic
'If temp.RecordCount <> 0 Then
 ' MsgBox "该班级编号已存在!"
  'TxtClassID.SetFocus
  'End If
If Val(TxtClassID.Text) = 0 Then
  MsgBox "请输入正确的班级编号!"
  Else
    rst.Fields("ClassID") = TxtClassID.Text
    End If
    rst.Fields("ClassName") = Txtclassname.Text
If Val(Txtnumber.Text) = 0 Then
    MsgBox "请输入正确的人数!"
    Else
    rst.Fields("ClassStuNum") = Txtnumber.Text
    End If
End SubPrivate Sub Txtclassid_Click()
 adodclass.RecordSource = "select * from bClass  "
    adodclass.Refresh
    
End Sub
Private Sub Txtclassid_GotFocus()
    adodclass.RecordSource = "select * from bClass "
    adodclass.Refresh
    Dgdmajor.Visible = False
    Dgdclass.Visible = True
End SubPrivate Sub txtmajorid_Change()
    adodclass.RecordSource = "select specID,ClassID,ClassName,ClassStuNum from bClass where SpecID='" & Txtmajorid.Text & "'"
    adodclass.Refresh
    
End SubPrivate Sub Txtmajorid_GotFocus()
    Dgdmajor.Visible = True
    Dgdclass.Visible = False
End Sub

解决方案 »

  1.   

    修改数据库连接方式,尽量不使用ODBC方式连接。
    升级vb6到VB6 SP6
    ----------------------------------------------------------------------------------------
    用以下方式连接,试试:
    cnn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=True;" & _
                                "User ID=sa;Password=dg;Data Source=127.0.0.1"
      

  2.   

    Private Sub Cmdmodify_Click()
        
      strSQL = "SELECT * FROM bspeciality"
      If Txtmajorid.Text = "" Then
      MsgBox "请输入专业编号!"
      Txtmajorid.SetFocus
      Exit Sub
      End If
        
      temp.Open strSQL, db, adOpenStatic, adLockOptimistic'就是这句执行不过去了,帮帮忙啊!
    '是只能执行一遍,不退出系统,第二次再进行这个操作时,就出现错误了    
      temp.Filter = "SpecID='" & Txtmajorid.Text & "'"
      temp.Requery
      If temp.RecordCount = 0 Then
      MsgBox ("这个专业方向编号不存在,编辑操作失败!")
      temp.Close
      Exit Sub
      End If
      temp.Close    
      If TxtClassID.Text = "" Then
      MsgBox "请输入班级编号!"
      TxtClassID.SetFocus
      Exit Sub
        
      End If
        
      If Txtclassname.Text = "" Then
      MsgBox "请输入班级名称!"
      Txtclassname.SetFocus
      Exit Sub
        
      End If
        
      If Txtnumber.Text = "" Then
      MsgBox "请输入班级人数!"
      Txtnumber.SetFocus
      Exit Sub
        
      End If
          fillrecord
      rst.Update
      adodclass.Refresh
      Txtmajorid.SetFocus
    End Sub
      

  3.   


    这样写:
    .
    .
    if temp.state=1 then temp.close
    temp.Open strSQL, db, adOpenStatic, adLockOptimistic
    .
    .
    假如OK,请结贴。