rst.AddNew
 For i = 0 To ColNum - 1
     rst.Fields(0).Value = Trim(TextAdd(i))   '------------>错误行
 Next i
 rst.Update
 -------
你这样做是干什么?rst.fields(0).value最后的结果就是trim(textadd(colnum-1))。
看看字段是否允许为空,如果不为空而trim(textadd(colnum-1))为空,也会出这种错误。

解决方案 »

  1.   

    1- 可以肯定每个字段的数据都正确吗?2- 建议直接使用SQL 语句来完成这样的操作:Cnn.Execute strSQL.
       还可以使用一个函数来动态生成SQL语句,并用一个函数来执行它。3- 你的这个程序,在不同版本之间的windows使用时,会出现问题。 For i = 0 To ColNum - 1
         rst.Fields(0).Value = Trim(TextAdd(i))   '------------>错误行
     Next i
       
       在某些版本的windows上不可以直接用,需要强制类型转换。比如,在2000下编译,则在98
    下使用的时候,会发生错误。       rst.fileds(0).value = cstr(textadd(i))
         rst.fileds(1).value = cint (textadd(i))一点小意见,但是真的不要使用ado的对象来读写数据库,最好用该对象来调用sql 语句。    
      

  2.   

    通常是字段的问题:长度够么?允许NULL?
    For i = 0 To ColNum - 1
         rst.Fields(0).Value = Trim(TextAdd(i))   '------------>错误行
        ‘应该这样吧
        ‘rst.Fields(i).Value = Trim(TextAdd(i)) 
     Next i
      

  3.   

    好象应该是在 rst.Update 时产生错误: 
    可能是同时更新的字段太多,建议用UpdateBatch方式或SQL动作查询语句
      

  4.   

    看不懂你要干什么!
    我想你的意思是:
    rst.addnew
    for i=0 to colnum-1
        rst.fields(i)=text1.text
    next i
    rst.update
    rst.close
      

  5.   

    问题可能出现在entry & Trim(TextAdd(i)) & vbTab。vbtab做什么??去掉试试
      

  6.   

    是这样的,我用ado+mshflexgrid连DBF格式的数据库,对一张已经存在的表读写(不是自建的)。我后来按照他的数据格式输入,问题没了。估计是数据格式问题了,他似乎自动有数据类型的匹配。那如何取消这种类型检查或是得到表的字段的数据类型(字段的信息)呢(已存在的表)?
      

  7.   

    写错了,应该是rst.Fields(i).Value = Trim(TextAdd(i)).