TClientDataSet的Locate方法不能处理中文字段???

luckytz 2001-07-20 09:10:58
我用TclientDataSet的Locate方法遇到了奇怪的情况:
MS SQL数据库中有表“疾病表”(疾病号 nvarchar(8),疾病名称 nvarchar(50))
有一记录为(0100009,异常症)
用ClientDataSet1->Locate(“疾病号”,”0100009”,opts),在DBGrid上可以成功定位到这一记录;
用ClientDataSet1->Locate(“疾病名称”,”异常症”,opts),在DBGrid上无论如何都只能定位到首记录;
将表中字段(疾病名称)统统改为英文字符,如(0100009,ycz)后,用ClientDataSet1->Locate(“疾病名称”,”ycz”,opts),在DBGrid上可以成功定位到这一记录;
可是如果用两层结构,ADOQuery1->Locate(“疾病名称”,”异常症”,opts),是可以得到正确结果的。各位大侠,三层结构就是这样折磨人的吗?
...全文
272 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
halfdream 2001-07-22
  • 打赏
  • 举报
回复
说点题外话, 但多少相关。
TClientDataSet 的Locate有些考虑不周全的地方,
在三层结构中一般不要在客户端直接Locate,因为它需要把记录数据全部取到客户端来
进行查找, 效率比较低下的,而且TClientDataSet 同其它的数据集组件处理数据的观念不大一样, 偏重的功能也不同, 多习惯写在服务端进行查找的代码吧。


luckytz 2001-07-21
  • 打赏
  • 举报
回复
5555~ 还是一样,一用三层的就不行了,我不干了。
luckytz 2001-07-21
  • 打赏
  • 举报
回复
多谢!我试试。
luhongjun 2001-07-21
  • 打赏
  • 举报
回复
字段值是中文的不影响程序,主要是字段名影响。
例如:“疾病号”----> C_JBH
"疾病名称"---->C_JBMC
用ClientDataSet1->Locate("C_JBH","0100009",opts),在DBGrid上可以成功定位到这一记录;
用ClientDataSet1->Locate("C_JBMC","异常症",opts),在DBGrid上无论如何都只能定位到首记录;

你再试一试。
还有表名也尽量不用中文的,“疾病表”你也改成T_JB
luckytz 2001-07-21
  • 打赏
  • 举报
回复
你的意思是说字段名要是英文的?可我是字段值是中文时处的问题,请再提示一下,谢谢
luhongjun 2001-07-21
  • 打赏
  • 举报
回复
记录当然要存中文的,但字段不要用中文的。
在定义表的时候,字段一定要定义成E文的。
luckytz 2001-07-21
  • 打赏
  • 举报
回复
to luhongjun(过江项羽):不好意思我有些不明白,数据库中不好存放中文记录吗?那就没办法工作了。 
luhongjun 2001-07-21
  • 打赏
  • 举报
回复
为什么用中文字段呢,所有的数据库对中文字段支持的都不好。
luckytz 2001-07-21
  • 打赏
  • 举报
回复
lalala
luckytz 2001-07-21
  • 打赏
  • 举报
回复
另:字段(疾病名称)中同时有中文和英文时,Locate对英文是有效的。
luckytz 2001-07-21
  • 打赏
  • 举报
回复
啦,啦......
ylm163net 2001-07-21
  • 打赏
  • 举报
回复
我有空时帮你试一下,你还是先看看我的帖子吧,我急坏了http://www.csdn.net/expert/topic/202/202912.shtm
luckytz 2001-07-21
  • 打赏
  • 举报
回复
有人愿意在自己的机子上试试吗?我身边没有用CB的同伴。谢谢
wangfeng 2001-07-21
  • 打赏
  • 举报
回复
关注,问题比较深奥
luckytz 2001-07-21
  • 打赏
  • 举报
回复
up
luckytz 2001-07-20
  • 打赏
  • 举报
回复
hi,leeyansheng(风妖精):你做过三层的吧,请来看看。

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧