以下是引用lin_hailun在2013-1-22 8:54:00的发言:
大概是这样解析。
http://www.foxtable.com/help/topics/0688.htm'下面的内容不需要修改
Dim sqlStr As String
If page = 1 Then '对于第一页的情况,直接加载前top行数据
sqlStr = "Select TOP {0} {1} FROM {2} order by {3}"
sqlStr = String.Format(sqlStr, Top, col, "{" & tb & "}", Order)
Else If page = -1 Then '对于最后一页的情况
Dim cmd As New SQLCommand
cmd.CommandText = "select count(*) from {" & tb & "}" '查找表的总行数
Dim count As Integer = cmd.ExecuteScalar
sqlStr = "Select TOP {0} {1} FROM {2} WHERE [_Identify] NOT In (Select TOP {3} [_Identify] FROM {2} order by {4}, [_Identify]) order by {4}, [_Identify]" '查找_identify不在前(page-1)页的行里,然后显示top行的数据.用order排序
sqlStr = String.Format(sqlStr, Top, col, "{" & tb & "}", Top * iif(count Mod top = 0, count \ top - 1, count \ Top), Order)
Else '2-n-1页的情况
sqlStr = "Select TOP {0} {1} FROM {2} WHERE [_Identify] NOT In (Select TOP {3} [_Identify] FROM {2} order by {4}, [_Identify]) order by {4}, [_Identify]" '查找_identify不在前(page-1)页的行里,然后显示top行的数据.用order排序
sqlStr = String.Format(sqlStr, Top, col, "{" & tb & "}", top * (page - 1), Order)
End If
林老师,对SQL的疑惑, Select TOP {0} {1} FROM {2}
order by {3} ,可以这么理解“查询来自于表{2}以{0}{1}作为TOP条件的的记录并以{3}来排序”,其中{2}是表名,但{0}{1}跟{3}在此处是作为表使用吗?各代表什么?其根据是什么?即此三个表来自哪里?另外底下的[_Identify]) order by {4}应该怎么理解?看不明这些地方的语句表达,还望解答,非常感谢。