请教各位高手!!!很急!!!!!!!!!!!!!!!!!!!

liyx326 2004-03-16 05:45:36

1、我用RegistrySet()函数向注册表里面修改某个值的时候,为什么注册表里面显示的数据值和双击数据项名称显示的值不一样那?函数的返回值是正确的,函数执行成功了。开发工具是pb.
2、我要做两个系统之间的接口,数据库都是oracle8.但是由于各自使用的字符集不同,所以我在同时连接两个数据库的时候,其中有一方会出现乱码如??等。有没有什么解决办法能够使一个客户端能够同时连接两个不同字符集的数据库,使数据都能够正确显示。

我现在的解决办法就是当使用A数据库的时候我就把客户端注册表的字符集改成和A数据库相同,当使用B数据库的时候我就把客户端注册表的字符集改成和B数据库相同。但是在修改后注册表显示的值和双击数据项后显示的值不同,效果不好。
大家有什么好的解决办法???
...全文
81 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
LGQDUCKY 2004-03-17
  • 打赏
  • 举报
回复
还有修改数据库字符级的例子
http://www.ncn.cn/oracle/admin/nls_convert1.htm
http://expert.csdn.net/Expert/topic/1815/1815886.xml?temp=.628689
http://www2.ccw.com.cn/tips/9906/062804_04.asp
LGQDUCKY 2004-03-17
  • 打赏
  • 举报
回复
这个我做过,也正好是PB的,第二个问题只要修改字符级就OK了;
看下面例子
string ls_DbLang, ls_RegLang
select value$ into :ls_DbLang from sys.props$ where name='NLS_CHARACTERSET';
RegistryGet("HKEY_LOCAL_MACHINE\Software\Oracle","NLS_LANG",RegString!,ls_RegLang)
ls_DbLang = Upper( ls_DbLang );
ls_RegLang = Upper( mid( ls_RegLang, pos( ls_RegLang, '.') + 1 ) )
if (ls_DbLang = ls_RegLang ) or( (ls_RegLang = '') and (ls_DbLang = 'US7ASCII') ) then
//allright, do nothing
else
RegistrySet("HKEY_LOCAL_MACHINE\Software\Oracle","NLS_LANG",RegString!, 'AMERICAN_AMERICA.' + ls_DbLang)
Messagebox('警告!','Oracle设置不正确!~r~n~t程序已经进行了更正,但是需要重新运行。~r~n~t请按“确定”按钮关闭程序。');
close( w_start )
return
end if
liyx326 2004-03-17
  • 打赏
  • 举报
回复
谢谢各位,问题解决!
shahand 2004-03-16
  • 打赏
  • 举报
回复
第二个问题会让你郁闷的

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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