奇怪的問題(100分)

  • 主题发起人 主题发起人 xjc_first
  • 开始时间 开始时间
X

xjc_first

Unregistered / Unconfirmed
GUEST, unregistred user!
Delph6
三層結構中,中間層用TAdoStoredProc,有一String型參數@style_no.
客戶端調用時,給參數賦值為:'編號',但在SQL profiler中跟蹤時,參數值變成了:'編'
也就是說,凡是中文參數時,都會截去后面一半;如參數為字母時又不會,真是怪哉.
 
会不会是参数无法自动识别中文字符串的长度?你手动设定参数的长度试试。
另外,在做三层的时候我也碰到了一个类似的怪问题:比如在sql中某个字段类型为nvarchar(10)
如果你给这个字段赋值'abc',通过中间层保存到数据库中后,这个值变成了'abc'#32#32#32#32#32#32#32,
即会自动用空格填充。这个问题在两层中没碰到过,而且如果字段类型为varchar型也不会。
 
这个问题不用看了,一看你发的贴就知道,和你的系统有关,你用的是繁体吧
 
1.繁体问题,
2.客户端与服务器端是否都是中文简体的.
 
To hbezwwl,rainM:
在本機調試,即客戶端與服務端都為繁體,但數據庫服務器為E文版.
To softdog:
我手動調整長度,還是不行.
 
我这里也碰到这个问题了,都是简体中文版也不行,但可以传递英文参数。
 
是字体的问题听如何解决
 
是有这样的问题。
在末尾加个数字或字母即可(到那边再去掉)!!
 
在服务器端的哪个事件中处理呢?我在BeforeGetRecords中处理不行。
 
To yeskert1:
按您的方法不行啊,我加了字母,那邊就算不去掉后面的字母,還是不行.
 
问题与下面问题类似:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1054348
请去看解决
 

to xjc_first
你也遇到了吗 看来这不是三层或两层的问题 而是adoexpress的问题
本来我还想回去试试adoproc 的控件看来不要试了
你看看我的贴子就知道了
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1054348
 
此问题的原因我已找到 但如何解决我 还没有找到最好的方法(我正在试)
这是adoexpress本身的问题 但不一定是bug
我还在发现的方法是:
var str:string;
begin
str:='your string'+#0 //这里一定要加 #0
//在参数的代码中要写成如下的格式
.....
parambyname('param').datatype:=ftstring;
parambyname('param').size:=length(str);
//这名必须要有
......................
end;
另外你如果你用 原生的ado activeX 也有这个问题 也要写以上代码

 
将数据类型改为varchar就好了,delphi的widechar转换有问题
 
贴出profile 中监视的提交的sql 语句
 
后退
顶部