你想用If mrc.EOF = True Then 来判断是否有符合条件的记录?
这个方法并不保险,我想你的user_Info 表中的user_ID 肯定是唯一的吧?这样返回的记录集mrc中肯定只有一个记录,那么mrc.EOF 肯定是 True ,任何情况下都是。
还是根据返回的记录数来判定吧:
    Set mrc = New ADODB.Recordset
    mrc.Open txtSQL, cnn, adOpenKeyset, adLockOptimistic
    if msrc.RecordCount >0 then
    .....
    end if

解决方案 »

  1.   

    把If mrc.EOF = True Then改成
      if mrc.recordcount=0 then
      

  2.   

    我认为不保险的是recordercount :) 除非你不用其他的记录集打开方式 。我记得只有在c++builder 和dephi中的ado才有
    “这样返回的记录集mrc中肯定只有一个记录,那么mrc.EOF 肯定是 True ,任何情况下都是。“这样的情况,vb中是比较准确的
      

  3.   

    If mrc.EOF = True Then
    ---->
    If mrc.BOF AND mrc.EOF Then
      

  4.   

    用RecordCount时,必须指明CursorLocation。
      

  5.   

    你的算法没有问题。不要受什么记录数的干扰。用户名不重复是程序的假设条件。
    不能运行的原因可能是你所引用的函数ExecuteSQL没有定义:
    Set mrc = ExecuteSQL(txtSQL, MsgText)改一下:
    dim cnn as new adodb.connection
    cnn.open "Driver={SQL Server};" & _ 
               "Server=MyServerName;" & _
               "Database=myDatabaseName;" & _
               "Uid=;" & _
               "Pwd="
    Set mrc = cnn.Execute(txtSQL)
      

  6.   

    假设只有一条记录满足条件,那么mrc.EOF = True 并且mrc.BOF = True ,这该怎么办?不可能不考虑这种情况吧?所以我觉得用EOF或BOF做为判断条件都不好