系统环境:服务器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)
不知道这样一次提几个问题可不可以?本人菜鸟,纠结好几天了,请大侠帮忙,先谢过!
------解决方案--------------------
一、 需要修改服务器字符集,改为ZHS16CGB231280或者ZHS16GBK 客户端统一修改为同server端相同的字符集
二、build的时候要把所有LIB全部打勾,我猜你只编译了主LIB
------解决方案--------------------
如果确定客户端的plsql查询中文没有问题,应该考虑PB显示列字体的问题。我这里没有这样的环境没办法帮你试,只能修改字体试试吧