winxp:
StrComp("長豐2013","克萊斯勒",vbTextCompare) = -1
win7:
StrComp("長豐2013","克萊斯勒",vbTextCompare) = 1
vb代碼通過資料庫排序后取出兩個串列比較關鍵字,win7下與資料庫的排序不一致
求解答
uj5u.com熱心網友回復:
試試:n = StrComp(StrConv("長豐2013", vbUnicode), StrConv("克萊斯勒", vbUnicode), vbTextCompare)
uj5u.com熱心網友回復:
轉換成Unicode再比較,也有問題?StrComp("長豐2013","克萊斯勒",vbTextCompare)
-1
?StrComp(StrConv("長豐2013", vbUnicode), StrConv("克萊斯勒", vbUnicode), vbTextCompare)
-1
?StrComp("北京運營中心","電動車事業部",vbTextCompare)
-1
?StrComp(StrConv("北京運營中心", vbUnicode), StrConv("電動車事業部", vbUnicode), vbTextCompare)
1
uj5u.com熱心網友回復:
都轉成 Unicode 之后,XP 和 Win7 兩臺機器上的結果是否一致?你比較轉換前后的結果是沒有意義的。轉換前后結果就是可能不同,否則轉它干什么?
StrComp 是根據系統所用的預設編碼頁進行排序比較。如果兩臺機器所有的預設編碼頁不同,結果就可能不同。你也可以通過第三個引數設定編碼頁來試試。
uj5u.com熱心網友回復:
試了幾個,都轉成 Unicode 之后,XP 和 Win7 兩臺機器上的結果是一致的通過資料庫排序,"北京運營中心" < "電動車事業部"
StrComp(StrConv("北京運營中心", vbUnicode), StrConv("電動車事業部", vbUnicode), vbTextCompare) = 1
比較的結果和資料庫的排序不一致,代碼里回圈比較兩個排序的串列來判斷的,不一致得不到預想的結果。
uj5u.com熱心網友回復:
那就是你的資料庫中不是按照 Unicode 排序的。漢字有多種編碼方案,同樣的漢字,用不同的編碼方案得到編碼是不同的。
如果你找不到統一的排序方法,就只能查詢資料庫來決定它們的次序了。
uj5u.com熱心網友回復:
當然了,你也可以將字串轉成 Unicode 之后,再寫入資料庫。那樣就一致了。轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/131244.html
標籤:VB基礎類
