winxp:
StrComp("长丰2013","克莱斯勒",vbTextCompare) = -1 win7:
StrComp("长丰2013","克莱斯勒",vbTextCompare) = 1vb代码通过数据库排序后取出两个列表比较关键字,win7下与数据库的排序不一致求解答

解决方案 »

  1.   

    试试:
    n = StrComp(StrConv("长丰2013", vbUnicode), StrConv("克莱斯勒", vbUnicode), vbTextCompare) 
      

  2.   

    转换成Unicode再比较,也有问题?StrComp("长丰2013","克莱斯勒",vbTextCompare)
    -1 
    ?StrComp(StrConv("长丰2013", vbUnicode), StrConv("克莱斯勒", vbUnicode), vbTextCompare)  
    -1 ?StrComp("北京运营中心","电动车事业部",vbTextCompare)
    -1 
    ?StrComp(StrConv("北京运营中心", vbUnicode), StrConv("电动车事业部", vbUnicode), vbTextCompare)  
     1 
      

  3.   

    都转成 Unicode 之后,XP 和 Win7 两台机器上的结果是否一致?你比较转换前后的结果是没有意义的。转换前后结果就是可能不同,否则转它干什么?StrComp 是根据系统所用的缺省编码页进行排序比较。如果两台机器所有的缺省编码页不同,结果就可能不同。你也可以通过第三个参数设置编码页来试试。
      

  4.   

    试了几个,都转成 Unicode 之后,XP 和 Win7 两台机器上的结果是一致的通过数据库排序,"北京运营中心" < "电动车事业部"StrComp(StrConv("北京运营中心", vbUnicode), StrConv("电动车事业部", vbUnicode), vbTextCompare) = 1比较的结果和数据库的排序不一致,代码里循环比较两个排序的列表来判断的,不一致得不到预想的结果。
      

  5.   

    那就是你的数据库中不是按照 Unicode 排序的。汉字有多种编码方案,同样的汉字,用不同的编码方案得到编码是不同的。如果你找不到统一的排序方法,就只能查询数据库来决定它们的次序了。
      

  6.   

    当然了,你也可以将字符串转成 Unicode 之后,再写入数据库。那样就一致了。