pb11.2build8949 數據窗口dw limit有關問題

pb11.2build8949 數據窗口dw limit問題
pb11.2的字符集合pb8等之前版本不同,在數據窗口的edit的limit出現如下問題
1、limit是生成數據窗口時根據數據庫的字符型字段長度自動生成的,例如person_name varchar2(60) ,這個dw列就limit60
2、以前輸60個英文字符或者30個漢字後,就再輸不進去,現在輸30漢字後還能繼續輸入,能輸到60個漢字
3、當有漢字輸入時,實際長度有可能超過了limit的限制,一但update就出錯了,超長數據庫不能接受更新。

請問有什麼辦法能讓limit和原來低一樣仍控制字節數而不是11.2版的控制字符數?
我現在沒有好辦法,只好自己在dw控件editchanged裏寫腳本處理,雖然可寫在祖先對象中,但系統裏有很多地方把這個事件代碼屏蔽了,查找起來依然很費勁
有沒有pb補丁或者pb什麼設置可以達到目的或者有改動量比較小的做法?


謝謝
如果你也遇到同樣問題但沒解決,請幫頂,謝謝

我在editchanged處理如下:
string ls_name
long ll_limit,ll_datalen,ll_pos,ll_left
string ls_left,ls_right

ls_name=dwo.name
ll_limit=long(this.Describe(ls_name+".Edit.Limit"))
if ll_limit>0 then
ll_datalen= lena(data)
if ll_datalen>ll_limit then
ll_pos=this.position()
ls_right=mid(data,ll_pos,ll_datalen)
ls_left=left(data,ll_pos -1)
ll_left=len(ls_left)
do while lena(ls_left)>ll_limit -lena(ls_right) and ll_left>=0
ll_left=ll_left -1
ls_left=left(ls_left,ll_left)
ll_left=len(ls_left)
loop
ll_pos=len(ls_left)
this.setitem(row,ls_name,ls_left+ls_right)
this.selecttext(ll_pos+1,0)
return 1
end if

------解決方案--------------------------------------------------------
這個變爲按字符個數算了,

我在pb115裏試試
------解決方案--------------------------------------------------------
還未用過pb11,幫頂.
------解決方案--------------------------------------------------------
我沒有想明白,爲什麼不直接修改limit的值呢?
------解決方案--------------------------------------------------------
沒找到有效的控制方式,幫頂貼!
------解決方案--------------------------------------------------------
我覺得這個問題你可以這樣解決
如果你的DW都是繼承的話就好一些,可以在基類的updatestarte事件裏檢查字符串長度是否大於最大長度來解決這個問題,或者是統一寫一個函數來解決這個問題
具體的話,可以遍歷檢測或者setfilter檢測

只一個思路,我還沒具體做過,你可以試下,期待結果
------解決方案--------------------------------------------------------
在你的威逼下頂你一次,行不?

呵呵。

儘管Sybase聲稱PB10後的版本處理字符,tb都是用Unicode方式,但是,很多方面還是處理不完善的。爲什麼漢字是用Unicode方式,ASCII字符還是用ANSI。


 

探討
我沒有想明白,爲什麼不直接修改limit的值呢?


------解決方案--------------------------------------------------------
 

探討
需要數據庫裏把字段類型改成nchar, nvarchar。這樣漢字和字母就一致了


------解決方案--------------------------------------------------------
學習了,遇到過這個問題,各種超長。。後來統統擴了次位數,唉
------解決方案--------------------------------------------------------
 

探討
pb11.2的字符集合pb8等之前版本不同,在數據窗口的edit的limit出現如下問題
1、limit是生成數據窗口時根據數據庫的字符型字段長度自動生成的,例如person_name varchar2(60) ,這個dw列就limit60
2、以前輸60個英文字符或者30個漢字後,就再輸不進去,現在輸30漢字後還能繼續輸入,能輸到60個漢字
3、當有漢字輸入時,實際長度有可能超過了limi……


------解決方案--------------------------------------------------------
這個問題,我遇到過,我的解決方式是在行中插入一個計算列compute_1,值:lena(你的列),然後在你那個列上設置下,比如背景色,或則前景色,設置:如果compute_1的值大於limit則顯示爲警告色,否則正常顏色
------解決方案--------------------------------------------------------
學習了。。。。。。。。
------解決方案--------------------------------------------------------
不懂,幫頂
------解決方案--------------------------------------------------------
學習了,幫頂
------解決方案--------------------------------------------------------
 

探討
這個問題,我遇到過,我的解決方式是在行中插入一個計算列compute_1,值:lena(你的列),然後在你那個列上設置下,比如背景色,或則前景色,設置:如果compute_1的值大於limit則顯示爲警告色,否則正常顏色
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章