在Delphi7.0编译的客户端下执行同一操作却出现不同结果的奇怪现象。
系统是一个三层结构在客户端调用中间层的存储过程,同是一个操作,却有着不同的结果,
第一次正常显示,第二次却显示'之前有未闭合的引号',从跟踪器的跟踪的结果发现如下:
第一次:exec sp_Pub_ItemList 'Test', '', '', N' and  isnull(ItemName, '''') like ''%亲切%'''
第二次:exec sp_Pub_ItemList 'Test', '', '', ' and  isnull(ItemName, '''') like ''%亲切结果发现第二次运行的结果在分析器里比第一次的结果后面少了(%''')这及个字符,分析原因在Delphi7.0下会保存第一次参数执行的结果的长度来执行以后同一操作。而第一次执行的结果把中文当做一个字符来处理,大家发现没有有个大写的N,接下来却又把中文当做两个字符来处理,所以才导致结果出错,请问各位有没有遇到类似的情况,应怎么解决。

解决方案 »

  1.   

    每次操作时,把ClientDataSet的Params全删除,再用程序重新创建一次,就可以了。
      

  2.   

    jshejie(kay) ,你也遇到过这种问题吗,不过你说的方法好象也不行啊
      

  3.   

    最好别用delphi7,我没有见过D版的能用的,好多时候就是内存错位,或者字符串发生此类问题,太累了