一个我发现的DBEXPRESS4的中文支持BUG(300分)

  • 主题发起人 主题发起人 mstar
  • 开始时间 开始时间
M

mstar

Unregistered / Unconfirmed
GUEST, unregistred user!
[:)]<br>运行环境是 D2007 + DBX4 ,问题很简单 自己写一个简单的项目 连接一个 MS SQL 2000 数据库 放上控件 TSQLConnection 和 TSQLQuery,首先在IDE环境里面给 TSQLQuery 的SQL 设置指令,这个指定包含有中文(无论是中文字段还是结果都可以)并且带有2个以上的参数 ,然后你去运行他,结果是OK的正常的. <br><br>问题是隐藏得比较深的哦,你尝试在命令(如响应某个BUTTON)里面用代码给 SQL 赋值,代码可以是跟前面一模一样的,然后去OPEN这个集合,问题出现了,会有提示<br>---------------------------<br>Project1<br>---------------------------<br>至少一个参数没有被指定值。<br>---------------------------<br>确定 &nbsp; <br>---------------------------<br><br>有趣的是,如果你在代码里面给SQL设置的指令并没有包含中文的话,就不会有任何问题了.<br><br>希望有高手能够共同研究一下,这个BUG算是很严重的.谢谢
 
貌似网上到处是这个中文不支持的问题啊。。。
 
一个好消息是 如果是执行 INSERT DELETE UPDATE 等执行语句,倒不会有这个问题
 
还有 D2006 并不存在这样的BUG[8D][:D][:)]
 
打开SqlExpr.pas<br>定位到FixParams函数, 修改下列参数的定义:<br><br>&nbsp; Param, Start: string;<br>改成<br>&nbsp; Param, Start: WideString;
 
[:)] PANEL 果然是高手呀
 
// SqlObjects does not support named params: convert to ?<br>// if not yet converted<br>function FixParams(SQL: WideString; Count: Integer; QuoteChar: WideString): string;<br>var<br>&nbsp; Param, Start: string; <br>&nbsp; Pos, EndPos: Integer;<br>&nbsp; InLiteral: Boolean;<br>&nbsp; Q: WideChar;<br>begin<br>======================<br>// SqlObjects does not support named params: convert to ?<br>// if not yet converted<br>function FixParams(SQL: WideString; Count: Integer; QuoteChar: WideString): Widestring;<br>var<br>&nbsp; Param, Start: Widestring;<br>&nbsp; Pos, EndPos: Integer;<br>&nbsp; InLiteral: Boolean;<br>&nbsp; Q: WideChar;<br>begin<br><br>SqlExpr.pas里面有两个FixParams啊,怎样改???<br>还是不明白??
 
后退
顶部