VB 数据库排序问题--越排越乱
问题1:做了一个数据库,addnew时为什么不是在末尾增加?如结果一中第115条记录一样,有没有办法解决?结果一是由代码一导出excel的
代码一:(部分)
cn.Open "provider=microsoft.jet.oledb.4.0;data source= " & App.Path & "\date.mdb;persist security info=false"
sql = "select * from [moto] "
rs.Source = sql
Set rs.ActiveConnection = cn
rs.LockType = adLockOptimistic
rs.CursorLocation = adUseClient
rs.Open sql, cn
结果一:(部分)
编号 车牌
19闽E92355
20闽E97500
21闽E91568
22闽E91091
23闽E19796
115闽A54214
24闽E95717
25闽E91720
26闽E9A969
27闽E99591
问题2:在代码中加入排序后,导出EXCEL结果如结果二,越排越乱,这是怎么回事??
代码二:(部分)
cn.Open "provider=microsoft.jet.oledb.4.0;data source= " & App.Path & "\date.mdb;persist security info=false"
sql = "select * from [moto] order by '编号' asc"
rs.Source = sql
Set rs.ActiveConnection = cn
rs.LockType = adLockOptimistic
rs.CursorLocation = adUseClient
rs.Open sql, cn
结果二:(部分)
编号 车牌
52闽E29927
53闽ED0731
1闽E93923
40闽E18337
15闽E91447
有没高手指点一下,想了试,试了又想,两天了,就是想不出原因。
[解决办法]
select * from [moto] order by cast('编号' as varchar(20))
或者
select * from [moto] order by cast('编号' as int)
[解决办法]
AddNew之前将记录位置设置为最后一个记录
[解决办法]
谢谢两位
照2楼所说,试了下,在rs.open sql,cn这句出现实时错误,对象OPEN的方法_RECORDSET失败
3楼的说法,前些天我就试过了,没有效果。
[解决办法]
真是服了,字符串排序的结果有什么越排越乱的
直接使用Cint或Clong转换后再排序
如字符串9与字符串1000,比较时,首先比较9与1的大小,9比1要大,那结果也就是字符串9比字符串1000要大
[解决办法]
该回复于2010-06-21 13:49:30被版主删除
[解决办法]
sql = "select * from [moto] order by 编号"
[解决办法]
还有一招,比较笨,而且只要MSSQL测试通过.ACCESS不知道可不可行.
order by
CASE
WHEN 编号=1 THEN 1
WHEN 编号=2 THEN 2
WHEN 编号=3 THEN 3
WHEN 编号=4 THEN 4
....................
WHEN 编号=90 THEN 90
ELSE 100
END
[解决办法]
谢谢各位热心的回答