update时出现下面错误: 
实时错误.....操作必须使用一个可更新的查询。 SqlStr="select * from "&TabName 
set rst=ExecuteSql(SqlStr,MsgText)    '返回记录集 
...... 
...... 
 rst.AbsolutePosition = intCount       '定位记录集指针 
            For i = FfmNo To ColNum - 1 
               rst.Fields(i).Value = TxtModify(i).Text 
            Next i 
            rst.Update ’------------>错误行 
            rst.Requery 
            frmDataShow.dbfList.Refresh 即使用sql搜索到一个满足条件的记录集,还是不能完成update

解决方案 »

  1.   

    现在的问题: 
    SqlStr="select * from "&TabName 
    set rst=ExecuteSql(SqlStr,MsgText)  '返回记录集 
    ...... 
    ...... 
     rst.move  intCount  '----- >定位记录集指针 
     for i = FfmNo To ColNum - 1 
        SqlStr = "update " & TabName & " set " & frmDataShow.rst.Fields(i).Name 

             & "='" & TxtModify(i).Text & "' where " & frmDataShow.rst.Fields(i) 
    .Name _ 
             &"='" & frmDataShow.dbfList.TextMatrix(intCount, i + 1) & "'" 
        Set rst = ExecuteSQL(SqlStr, MsgText) 
     Next i 
     frmDataShow.dbfList.Refresh 
    改成上面这样后,虽然没有错误了,但是记录集没有被更改。 
    其中的ExecuteSQL函数是在标准模块中这样定义的: 
    ...... 
          cnn.ConnectionString = "Provider=MSDASQL.1;Persist Security Info=False 
      
    ;Data Sources=dBASE Files;Initial Catalog=" & PathStr 
          cnn.Open "Driver={Microsoft dBASE Driver (*.dbf)};" & _ 
                 "DriverID=277;" & "Dbq=" & PathStr 
          If InStr("INSERT,DELETE,UPDATE", UCase$(sTokens(0))) Then    '对已存在 
                                                                       '的表的编辑操作 
            Debug.Print "test1" 
            Debug.Print SQL 
            cnn.Execute SQL 
            Debug.Print "test2" 
            Msgstring = sTokens(0) & " query successful" 
            cnn.Close                         '--------->小心! 
          Else                                '对表的打开 
            rst.CursorLocation = adUseClient 
            rst.Open SQL, cnn, adOpenDynamic, adLockOptimistic 
            'rst.MoveLast     'get RecordCount 
            Set ExecuteSQL = rst 
          End If 
    ...... 
    debug.print显示的信息: test1 
    update sample set STATE_PROV='test' where STATE_PROV='' 
    test1 
    update sample set ZIP_PST_CD='' where ZIP_PST_CD='' 
    test1 
    update sample set COUNTRY='Cyprus' where COUNTRY='Cyprus' 
    test1 
    update sample set PHONE='357-6-876708' where PHONE='357-6-876708' 
    test1 
    update sample set FRST_CNTCT='1990-04-12' where FRST_CNTCT='1990-04-12' 
    ormat.' where DESCRIPT='3rd side is in CAV format.' 
    test1 
    update sample set STUDIO='MGM/UA' where STUDIO='MGM/UA' 
    test1 
    update sample set KIDS='True' where KIDS='True' 
    好象是没有执行cnn.execute SQL,也没有错误消息。是什么道理呢? 
      

  2.   

    你可以用错误处理语句对数据库强行刷新
    这样数据一样可以添加进去
    MsgBox Err.Description, vbExclamation, "表名 - update"