我用ADODB这个控件通过ODBC和SQL SERVER相连,然后文本控件TEXTBOX和ADODB相连,连好后增加、删除都可以用,就是我在text控件中修改数据后不能保存,点前一个记录和后一个记录都报错说是操作被取消。我都绑定好了,为什么修改总是出错。 
  会不会是 Adodc1.Recordset.Book 没设的过呢,请问 Book方法如何用?

解决方案 »

  1.   

    Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
      
         Select Case Button.Index
            Case 1 ''前进              '修改后点击此键出错,且不能保存,提示操作被取消
               '  On Error GoTo First_err
                Adodc1.Recordset.MovePrevious
                If Adodc1.Recordset.BOF = True Then
                  Adodc1.Recordset.MoveFirst
                End If
    'First_err:
           '    MsgBox Err.Description, vbOKOnly + vbExclamation, "警告"
               
            Case 2 ''后退               '修改后点击此键出错,且不能保存,提示操作被取消
               ' On Error GoTo second_err
                Adodc1.Recordset.MoveNext
                If Adodc1.Recordset.EOF = True Then
                  Adodc1.Recordset.MoveLast
                End If
    'second_err:
               'MsgBox Err.Description, vbOKOnly + vbExclamation, "警告"
           
             Case 4 ''增加
                On Error GoTo add_error
                 Adodc1.Recordset.AddNewadd_error:
                   If Err.Number = 3426 Then
                    MsgBox "已经使用过添加记录!   错误:" & Err & "," & Err.Description, 0, "提示"
                    Unload Me
                    End If
                Toolbar1.Buttons(1).Visible = False
                Toolbar1.Buttons(2).Visible = False
                Toolbar1.Buttons(4).Visible = False
                Toolbar1.Buttons(5).Visible = True
                Toolbar1.Buttons(6).Visible = True
                Toolbar1.Buttons(7).Visible = False
            Case 5 ''确定           ‘修改后不能保存为什么??????
                    On Error GoTo update_error
                    If Text1.Text = "" Then
                        MsgBox "必须填写元器件名称!", 0, "提示"
                        Exit Sub
                    End If
                    If Text2.Text = "" Then
                        MsgBox "必须填写元器件型号!", 0, "提示"
                        Exit Sub
                    End If
    ‘         Adodc1.Recordset.Book = Varbook1     ’不知如何用,在哪给Varbook1值               ’  Adodc1.Recordset.Fields(1) = Text1
                    ‘ Adodc1.Recordset.Fields(2) = Text2
                    ’ Adodc1.Recordset.Update
             
                update_error:
                       If Err.Number = 3020 Then
                        MsgBox "请先添加记录!   错误:" & Err & "," & Err.Description, 0, "提示"
                        Unload Me
                        End If
                    Toolbar1.Buttons(1).Visible = True
                    Toolbar1.Buttons(2).Visible = True
                    Toolbar1.Buttons(4).Visible = True
                    Toolbar1.Buttons(5).Visible = True
                    Toolbar1.Buttons(6).Visible = True
                    Toolbar1.Buttons(7).Visible = True
            Case 6 ''取消
            On Error GoTo CanceErr'        Adodc1.Recordset.Edit
            Adodc1.Recordset.CancelUpdate
            Toolbar1.Buttons(1).Visible = True
            Toolbar1.Buttons(2).Visible = True
            Toolbar1.Buttons(4).Visible = True
            Toolbar1.Buttons(5).Visible = True
            Toolbar1.Buttons(6).Visible = True
            Toolbar1.Buttons(7).Visible = True
    CanceErr:
            If Err.Number = 3021 Then
             MsgBox "没有记录!   错误:" & Err & "," & Err.Description, 0, "提示"
            End If
            Case 7 ''删除
            On Error GoTo del_error
               a = MsgBox("真的删除吗?", vbExclamation + vbOKCancel + vbApplicationModal, "删除记录")
            If a = 1 Then
                Adodc1.Recordset.Delete
              Adodc1.Recordset.MoveLast
               End If
            If a = 2 Then Exit Sub
    del_error:
               If Err.Number = 3426 Then
               MsgBox "已经全部删除!   错误:" & Err & "," & Err.Description, 0, "提示"
              Unload Me
              End If
            End Select
    End Sub
      

  2.   

    如果是绑定了的,修改后保存要加上一句
      
       Adodc1.Recordset.Update才能够更新记录的,
      

  3.   

    楼主还是用datagrid或者mshflexgrid吧要灵活的多。
      

  4.   

    修改后需要Update啊
    建议使用Ado对象代替Ado控件
      

  5.   

    透过ODBC,直接让ADODC/ADODB与Sql Server相连.