powerbuilder11.5中文乱码及数据窗口控件检索不到数据问题

chaiwl8869 2012-09-05 06:55:48
系统环境:服务器2003server,数据库oracle10g;客户端:xp,pb11.5
一、pb查询数据库显示的中文都是乱码,英语正常,在客户端用pl/sql查询可正常显示。
数据库字符集:NLS=america.american_us7ascii//不允许修改
pb database profile setup:NLS charset:(unicode,local)//只有这俩个选项,俩个都不行。
SQLCA.DBParm = "ConnectAs='SYSDBA','disunicode=1',PBCatalogOwner='sys'"//'disunicode=1'是后加的,去掉、改为0都试了,问题依旧。能否从注册表修改或添加NLS=america.american_us7ascii键值没试过。
二、数据窗口控件在工作区run一切正常,build、employ编译后运行exe就查询不到数据成了空白,不知道问题在哪。代码如下:
//全局变量
date gd_end=date(string(today(),'yyyy-mm-')+'01') ,gd_start=date(year(today()),month(today())-3,1)
string gs_wname
//st_1.click//w_main的静态文本控件click代码如下:
gs_wname='d_surply'//st_2到8分别对应不同的带参数(gd_start,gd_end)数据窗口对象,
open(w_seldate)
//d_surply 数据窗口对象,给参数能提到数据,尽管中文是乱码
//w_seldate.cb_ok.click
gd_start=date(dp_start.value)//俩个datepick控件dp_start和dp_end
gd_end=date(dp_end.value)
close(parent)
open(w_wait)
w_main.dw_1.DataObject=gs_wname
w_main.dw_1.settransobject(sqlca) //为数据窗口控件分配事物对象sqlca
w_main.dw_1.retrieve(gd_start,gd_end)
//w_main.dw_1.detail.background.color=&
IF(MOD(GETROW(),2)=0,RGB(192, 192, 192), RGB(255, 255, 255))这句本来想实现数据区隔行深背景显示,不知道错在哪里,跨过了。
close(w_wait)
不知道这样一次提几个问题可不可以?本人菜鸟,纠结好几天了,请大侠帮忙,先谢过!
...全文
946 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
chaiwl8869 2012-09-13
  • 打赏
  • 举报
回复
中文乱码问题解决了。
odbc驱动改成OLE DB就可以了。这个驱动里面有字符集的选项。
新的问题出现了:
sql语句where子句中带有中文就检索不到数据,如:
select * from T1 where units='盒' //结果无数据。'盒'是数量单位,换成'瓶'、'支'问题依旧。
如果用其他非中文字段就没问题。
但是用filter(“units='盒' ”)就可以。
很奇怪。
老_龙 2012-09-07
  • 打赏
  • 举报
回复
兄弟 别局限于中文字体 其他英文字体也可以显示中文的
老_龙 2012-09-06
  • 打赏
  • 举报
回复
一、 需要修改服务器字符集,改为ZHS16CGB231280或者ZHS16GBK 客户端统一修改为同server端相同的字符集

二、build的时候要把所有LIB全部打勾,我猜你只编译了主LIB
chaiwl8869 2012-09-06
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
如果确定客户端的plsql查询中文没有问题,应该考虑PB显示列字体的问题。我这里没有这样的环境没办法帮你试,只能修改字体试试吧
[/Quote]
plsql最开始也有中文乱码的毛病,在注册表把oracle客户端nls的值改为american.america_us7ascii问题解决了。
pb注册表里找不到这个键,加进去也不起作用。
我把字体改为宋体,问题依旧。
chaiwl8869 2012-09-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
二、build的时候要把所有LIB全部打勾,我猜你只编译了主LIB
[/Quote]
谢谢大侠,如您所说,问题解决了!
字符集的问题能否说详细一点?
服务器数据库运行好久了,不允许修改,只能修改客户端。
客户端字符集如何修改从而适应数据库的american.america_us7ascii
最好只修改客户端pb的字符集,而不是操作系统字符集?
谢谢!
老_龙 2012-09-06
  • 打赏
  • 举报
回复
如果确定客户端的plsql查询中文没有问题,应该考虑PB显示列字体的问题。我这里没有这样的环境没办法帮你试,只能修改字体试试吧
chaiwl8869 2012-09-05
  • 打赏
  • 举报
回复
问题补充:
如果dw_1.DataObject由空白改为任意一个数据窗口对象如d_surply,st_1.click就可过滤出数据,但其他文本控件点击后仍然查不到数据。
本人认为是这句的问题w_main.dw_1.DataObject=gs_wname
就是说gs_wname的数据窗口对象未传给控件dw_1.
该怎么修改呢?

1,077

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 相关问题讨论
社区管理员
  • 基础类社区
  • WorldMobile
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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