本帖最后由 ahphsautoit 于 2013-2-28 10:59 编辑
如SQL数据表A中有1-12个记录项,其列位IDS(主键)分别为1-12。查询IDs列位并按IDs反向排序,理想结果应为:12、11、10……1,但实际排序结果是9、8、7……12、11、10、1。#创建表的新主键值并返回新主键值
;$a:表名
Func _sql07($a)
Dim $07a, $07b, $07c
$07c=1
_SQLite_Query(-1, "SELECT IDs FROM " & $a & " ORDER BY IDs DESC;", $07a);
While _SQLite_FetchData($07a, $07b) = $SQLITE_OK
ExitLoop
WEnd
$07c=$07b[0]+1
_SQLite_Exec(-1, "insert into " & $a & " (IDs) values (" & $07c & ");")
Return $07c
EndFunc ;==>_sql07
目前采用的实现方法是:将IDs的所有记录写入一个数组,再得出数组的最大值,如果数据表内的记录量大了,这种方法显然费时又费力。
上述提到的数据排序的问题,在普通的AU3默认的列表里也是一样,不按输入列表的顺序 ,而是按1、10、11、12、2……9这样排的,请问是为什么?还是我的某个关于数据排序的默认设置不对?#创建表的新主键值并返回新主键值
;$a:表名
Func _sql07($a)
Dim $07a, $07b, $07c,$07d,$07e
$07c=1
_SQLite_Query(-1, "SELECT IDs FROM " & $a & " ORDER BY IDs;", $07a);
While _SQLite_FetchData($07a, $07b) = $SQLITE_OK
If $07c=1 Then $07d=$07b
$07c=$07c+1
_arrayadd($07d,$07b[0])
WEnd
$07e=_ArrayMax($07d,1)+1
_SQLite_Exec(-1, "insert into " & $a & " (IDs) values (" & $07e & ");")
Return $07e
EndFunc ;==>_sql07
|