在 DELPHI里,用adoquery 执行一 插入 语句,在64位系统的电脑里执行不报错,32位系统执行报“将截断字符串或二进制数据”,在32位系统中,把执行语句帖到查询分析器中执行也不会报错。不知道是什么原因,各位大虾门,有谁遇到过,指教指教。谢谢!!

解决方案 »

  1.   

    用的是 delphi7
      

  2.   

    如果记得没错,
    这个错误信息是指“你要存入的字符串内容,其长度超过数据库该字段定义的长度”的意思;
    个人认为和32位/64位无关。
    解决的办法是,对于要存入数据库的字符串,写一个函数,将超长的部份截掉,再写入数据库。至于在查询分析器不会出错,
    也许这个检查是在ADO里做的吧!
      

  3.   

    没有遇到过,截个EXCEPTION图上来看一下,还有DEBUG一下ADO.SQL.TEXT
      

  4.   

    只能看sql语句和值了,每个字段比较
      

  5.   

    showmessage(sql.text),将对话框内的sql语句复制到查询分析器里面执行,看是否报错?
      

  6.   

    我之前碰到过,应该是字符串超过sql数据库里面定义的长度了。你可以调试showmessage字串长度出来看看。应该跟系统版本应该沒什么关系的。 
      

  7.   

    这个问题很常见,应该是字符串长度超过了sql数据库表所定义的长度。跟一下看看就明白了。
      

  8.   

     就是字段长度问题。或者字段类型问题。这个问题太常见了。show一下不就知道了
      

  9.   

    字符长度和类型。string还是widestring
      

  10.   

    你也可以用sqlserver的事件监控看一下他实际要执行的sql语句和你预设的有什么不同最大的可能就是某个字段你填的内容超长了