在Delphi6中怎么样让adoquery控件识别Unicode呢?(请具体举例子)分不够再加!(100分)

  • 主题发起人 主题发起人 likekoko
  • 开始时间 开始时间
L

likekoko

Unregistered / Unconfirmed
GUEST, unregistred user!
如题!!!!
 
没有试过将Unicode转化为一般字符。但用过将一般字符转化为双字:
函数:multibytetowidechar(。。。),具体用法见帮助!
 
AdoQuery1.Sql.text= WideCharToString(YourUnicodeSqlStr);
 
我就想往Adoquery里的sql属性添加sql语句,里面夹着 韩文 ,结果ado显示为?号!!
如下:
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('select * from tqxdj where name='''+tntedit1.Text+'''');
prepared;
//tntedit2.Text:=sql.Text;
open;
end;
其中tntedit1是第三方控件,它能够识别和显示 韩文,但到adoquery1.sql中后变为?了。
请前辈们多多指点!!!
 
to gydldfw:这个函数对于我来说挺复杂,现在正在试!谢谢!
to wang_80919 :上面代码中加了wideCharToString(tntEdit1.text),报错说tntEdit1.text为wideString类型,非pWideChar。怎么转换呢?非常感谢!!
 
我自己顶!!
 
有价值,大家积极发言啊
 
wideCharToString(@tntEdit1.text);
 
to :happylcq 不太好使!
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('select * from tqxdj where name='''+wideCharToString(pWideChar(tntedit1.text))+'''');
prepared;
//tntedit2.Text:=sql.Text;
open;
end;
在tntEdit2.text中还是显示:select * from tqxdj where name='?'
也就是说wideCharToString()转换后还是不行!!?
 
用ADODATASET
 
to : finalrinoa

adoDataSet 的 commandtext 可以显示 韩文,这真是很好!多谢多谢!可是新问题又出,就是查询不出来字段值是韩文的记录!! 如下:
with adoDataSet1 do
begin
close;
commandtext:='';
commandtext:='select * from tqxdj where name='''+trim(tntedit1.Text)+'''';
prepared;
tntedit2.Text:=commandtext;
open;
end;
其中 tntEdit2.text 显示为 select * from tqxdj where name='뮤'。不再是adoquery中的select * from tqxdj where name='?'了,可是明明数据库中有 뮤 这个值,怎么就是查不出来呢??
 
无论你如何转换也达不到你想要的效果,因为数据库不会支持的.
 
to:happylcq
sqlServer2000 是支持unicode的,用前面带n的字段类型就可以存储unicode字段。
比如:nchar,nvarChar等等!!
 
如果要支持韩文,比如装韩文字体,否则只是edit支持是没用的
 
是的,我知道,可是我试过了,在查询分析器中执行你那样的select都不行,不信你试试
 
在查询分析器是可以的!你试一试下面的语句:
commandtext:='select * from tqxdj where name=N'''+(yourUnicodeString)+'''';
前面加一个大写的‘N’。
 
找到方法了,就是把AdoDataSet的ParamCheck属性设置为false,就能够查出来韩文值了!
在此要感谢yj_119同志的热情帮助!!^^
其中AdoCommand和AdoDataSet的CommandText都为wideString属性,故两者都能实现以上功能!!
[^]总算解决一个问题了![^]
 
多人接受答案了。
 
后退
顶部