Private Function SaveRec(ByVal bAdd As Boolean) As Boolean
    g_conn.BeginTrans
    On Error GoTo Err
    With mrst
        If bAdd = True Then
            .AddNew
        End If
        !UserName = txt用户名.Text
        !Password = txt密码.Text
        .Update
    End With
    g_conn.CommitTrans
    SaveRec = True
    Exit Function
Err:
    g_conn.RollbackTrans
    SaveRec = False
End Function在窗体的一个“确定”里调用这段程序,目的是把txt用户名和txt密码作为记录保存。并:g_conn和mrst都已打开。
上面的程序有点问题,知道在哪儿吗?如何解决?

解决方案 »

  1.   

    If bAdd = True Then
                .AddNew
    End If
    !UserName = txt用户名.Text
    !Password = txt密码.Text
      

  2.   

    If bAdd = True Then
                .AddNew
    else
               .edit
    End If
      

  3.   

    会不会是你数据表某个字段定义与你所符的值不相符?比如UserName的长度短了等。
    用单步调试!
      

  4.   

    没有什么大问题。
    口令栏如果没有填写,将是null,保存时会出错。改如下面,容许空口令:        !Password = txt密码.Text & ""
      

  5.   

    上面的程序一般情况下都正确,但有例外时没能正确处理,发现了吗?
    调用代码如下:
    Private Sub cmdOK_Click()
        If bDirty = True Then
            If CheckData() = False Then
                Exit Sub
            End If
            If SaveRec(IIf(mstrName <> "", False, True)) = True Then '调用保存并判断是否成功
                '这里不能置修改记录的空,因为这窗体只作一条记录的修改/增加
                bDirty = False  '清空修改标志
                MsgBox "数据已经保存成功!", vbInformation, "提示"
            Else
                MsgBox "数据保存失败,请检查数据是否正确?", vbCritical, "错误"
                Exit Sub
            End If
        End If
    End Sub
      

  6.   

    一旦SaveRec()在.Update时出错(输入的值不正确时),那再次调用它时便再也不能正常工作了,即使改正了输入值。而本来的意思是要在错误时提示,但改正输入值后能正常保存。请问怎么解决?
      

  7.   

    另:我用的是ADO,定位在记录上时不需要.Update