文章抄自我的DELPHIBBS帖子,再次感谢小沈的帮忙.
运行环境是 D2007 + DBX4 (在D2006及以前版本里面 应该没有这个问题),问题很简单 自己写一个简单的项目 连接一个 MS SQL 2000 数据库 放上控件 TSQLConnection 和 TSQLQuery,首先在IDE环境里面给 TSQLQuery 的SQL 设置指令,这个指定包含有中文(无论是中文字段还是结果都可以)并且带有2个以上的参数 ,然后你去运行他,结果是OK的正常的.
问题是隐藏得比较深的哦,你尝试在命令(如响应某个BUTTON)里面用代码给 SQL 赋值,代码可以是跟前面一模一样的,然后去OPEN这个集合,问题出现了,会有提示 ---------- Project1 ---------- 至少一个参数没有被指定值。 ---------- 确定 ----------
有趣的是,如果你在代码里面给SQL设置的指令并没有包含中文的话,就不会有任何问题了.
问题的根本原因是DELPHI在移植支持UNICODE过程中 代码存在BUG 解决方案是自己修改相关的控件代码 控件代码的路径是 D:\Program Files\CodeGear\RAD Studio\5.0\source\database\src\pas\dbx\vcl (安装的路径不同前面会不同)
打开文件 SqlExpr.pas 下面这个函数是做参数分配的
定位到FixParams函数, 修改下列参数的定义: Param, Start: string; 改成: Param, Start: WideString; 然后保存.
然后在你的工程项目里面 直接加入这个文件 重新编译 就可以解决这个问题了. |