Adodc1.Recordset.AddNew 
Adodc1.Recordset.Fields("编号") = maxid
Adodc1.Recordset.Fields("姓名") = PersonName
Adodc1.Recordset.Fields("所属部门") = DeptName -->此行为弹出错误行
Adodc1.Recordset.Fields("政治面貌") = PolicitalState 
Adodc1.Recordset.Fields("所学专业") = Profession
Adodc1.Recordset.Update 
以上是我的部分程序
对应于表中的字段类型除了“编号”是int其他都是varchar(50)
原来用的数据库是Oracle连接,此段程序能正常向表中插入值(可以正常运行),后来由于需要就把Oracle的数据库转到了mysql上了,现在改为mysql的连接,可是确出现了“多步操作产生错误,请重新检查每一步状态值”这样的错误,错误行如上标注。通过调试可以确定的是“=”后面的变量都是有值的(非空)即DeptName这个变量是有值的,而且变量的值也没有超出字段的最大长度范围。还没执行到Adodc1.Recordset.Update这步,给fields赋值这步就过不去。大家帮我分析下都有可能是什么原因?谢谢!

解决方案 »

  1.   

    Adodc1的连接字符串贴出来,检查是否连接成功
      

  2.   

    Adodc1的连接肯定没问题,因为查询都没问题
      

  3.   

    因为表原来是从Oracle数据库导到mysql上的,今天试着手动把表删了又重建,结果居然通过了,不过又出现个怪问题:我的每个字段的定义都是varchar(50),结果不论是中英文只要超过6个字符就插不进出的错误提示还是一样,而小于等于6个字符的时候插入都没问题,不知道是什么原因?
      

  4.   

    c)检查数据库定义,字段属性中是否有其他关于长度的校验之类。
    d)界面上的 Adodc1 删除,重新添加进行设置。
      

  5.   

    谢谢大家,现在好象知道原因了,在网上偶然找到了类似的问题,才明白我的错误根本在于:当表中一条记录没有时,插入是正常的;但当有至少一条记录时,再插入时如果当前字段的值的长度如果大于第一条记录对应字段的值的长度时就会报错(例如第一条记录中“所属部门”字段的值如果为“营销部”,再次插入的记录对应字段的值如果为“机关管理部”就会报错)看起来好象是以第一条记录的值的长度为上限了,好象是ado控件和mysql之间存在一定的缺陷,具体我不太清楚...
    一个解决方法就是预先添加一条满字符上限值的记录,这样就不会报错了,不过表多的话还是有点麻烦
    原来没用过vb编程,这个程序用的是adodc控件,不知道用adodb怎么样,再试试,大家谁遇到过类似的情况吗?
      

  6.   

    不用 SELECT ... INTO 的方式自动创建表,而是先用 CREATE TABLE 创建表(或者在数据库中设计好表),以后就用 INSERT 进行插入。
      

  7.   

    试过后看来用adodb的insert方式没什么问题了