XP+Delphi7+ADO2.8+SQLServer2000报错“多步操作产生错误,请检查每一步的状态值”,没有解决方法吗? ( 积分: 100 )

  • 主题发起人 主题发起人 delphilai
  • 开始时间 开始时间
D

delphilai

Unregistered / Unconfirmed
GUEST, unregistred user!
我是在简体XP操作系统下Delphi7+ADO2.8+SQL2000开发的程序,经过繁体转换后,在繁体系统下编译,编译后的繁体exe程序,在数据保存的时候,会报错“多步操作产生错误,请检查每一步的状态值”,没有解决方法吗?”错误!恰恰的说是,在“TAdoQuery.FieldByName('***').AsString:=繁体中文字符”后,TADOQuery.Post执行的时候报错!如果是英文数字又可以保存,当然,如是简体中文字符会是乱码。<br>同样的程序,我在简体下运行很OK!在繁体下就不行。因为每个模块都是这样,为了测试方便,我测试的SQL数据库表很简单,就2个字段,都是Varchar(50)类型(我还试过用NVarchar(50)类型),我的TADOQuery的对应字段TField类型为TStringField(我还试过用TWideStringField类型),在TADOQuery.Post的时候会报“多步操作产生错误,请检查每一步的状态值”错误。<br>有一种情况不会报错:<br>(一)SQL表字段类型为Varchar(50)、TADOQuery字段类型为TStringField时,可以运行通过,数据可以保存成功,在界面显示也正常(为繁体中文字符),但在数据库里,我在企业管理器打开那个表,确是乱码。<br>另外三种情况:<br>(二)SQL表字段类型为NVarchar(50)+TADOQuery字段类型为TStringField<br>(三)SQL表字段类型为Varchar(50)、TADOQuery字段类型为TWideStringField<br>(四)SQL表字段类型为NVarchar(50)、TADOQuery字段类型为TWideStringField<br>都是报“多步操作产生错误,请检查每一步的状态值”错误。<br>这几种情况,我在简体系统下运行都没问题,软件界面和数据库都可以正常显示和保存。<br>我在网上搜索了该错误提示,很多类似的帖子,但竟然没有一篇有正确的解决方案的!<br>有谁遇到这个问题的?这问题真的那么难吗?没人懂吗?是ADO的兼容性问题还是简繁体兼容性问题?<br>急死我了!<br>欲哭无泪!
 
“多步操作产生错误,请检查每一步的状态值”<br>产生这种错误的根本原因是:TField的类型与后数据库的类型不致导致的。<br>解决方法:<br>1.&nbsp;Client电脑与SQL服务器(SQL&nbsp;server的内码)应保持同一内码。<br>2.&nbsp;ADOConnection连接字串中请将Auto&nbsp;Translate&nbsp;设置成False.<br>3.&nbsp;详细检查出错TField的类型(TStringField,TFloatInteger),与后台表中的类型是否<br>&nbsp;&nbsp;一致。<br>Good&nbsp;luck!&nbsp;^_^
 
coolzew兄,那我的SQL数据表的字符串类型字段,应该用Varchar还是NVarchar?<br>对应的TADOQuery的TField是应该用TStringField还是TWideStringField?<br>TField的类型与后数据库的类型应该怎样才能一致?我测试的数据表就2个字段,都是Varchar/NVarchar和TStringField/TWideStringField。<br>SQL&nbsp;server的内码是在哪里设置?因为没有繁体版的SQL,我安装的是英文版的SQL2K,不过我发现在繁体操作系统上安装简体的SQL2K,也可以认得,跟word一样。
 
我怀疑是你的变量值使用繁体后,被SQL认为是分割符,如',&quot;等等<br>直接使用SQL语句并使用参数试试。
 
不是的,我没有用变量,直接赋值,文本值为我在Edit输入的,用SQL效果也是一样的。
 
后退
顶部