以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]'Row_Number'不是可以识别的函数名(已解决)  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=96399)

--  作者:yyzlxc
--  发布时间:2017/2/20 10:14:00
--  [求助]'Row_Number'不是可以识别的函数名(已解决)
下面是分页加载查询表的内部函数"LoadData"的代码,在生成本地数据库和部分远程数据库的查询表时运行正常,但是在运行其中一个远程数据库时,出现\'Row_Number\'不是可以识别的函数名的出错提示,而该数据库用QueryBuilder可以生成查询表。
1、为什么这个远程数据库不能识别\'Row_Number\'函数。
2、有什么方法可以实现同样的效果。
请各位老师指教,谢谢!!

代码
Dim SJY As String = RibbonTabs("表结构").Groups("数据源").Items("数据源").Text
Dim bm As String = Tables(SJY).Current("表名")
Dim zj As String = Tables(SJY).Current("主键")
Dim r1 As Integer = (Page - 1) * 100 + 1
Dim r2 As Integer = Page * 100
Dim q As new QueryBuilder
q.TableName = bm
q.C onnectionName = SJY
q.SelectString = "Select * Fro m (Select Row_Number() Over(Order by "& zj &") As RowNum, * fro m "& bm &") As a Where RowNum >= "& r1 &" And RowNum <= "& r2
q.Build
DataTables(bm).Save()
MainTable = Tables(bm)
Tables(bm).AutoSizeCols()

截图

图片点击可在新窗口打开查看此主题相关图片如下:捕获1.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2017/2/20 13:11:44编辑过]

--  作者:有点色
--  发布时间:2017/2/20 10:19:00
--  

 如果是低于sql2005的数据库,是不支持这个函数的。

 

 那种情况,就只能用传统方式分页处理 http://blog.csdn.net/qiaqia609/article/details/41445233

 


--  作者:有点色
--  发布时间:2017/2/20 10:23:00
--  
 如果你的数据库是2005以上的,那你就是连接了2000的实例,导致找不到函数。
--  作者:yyzlxc
--  发布时间:2017/2/20 10:25:00
--  
好的,谢谢指教!!
--  作者:yyzlxc
--  发布时间:2017/2/20 13:11:00
--  
出错的远程数据库是SQL Server 2000版本,代码修改后,问题解决。再次感谢有点色老师的热情指教!!

Dim SJY As String = RibbonTabs("表结构").Groups("数据源").Items("数据源").Text
Dim bm As String = Tables(SJY).Current("表名")
Dim zj As String = Tables(SJY).Current("主键")
Dim r As Integer = (Page - 1) * 100
Dim q As new QueryBuilder
q.TableName = bm
q.C onnectionName = SJY
q.SelectString = "select top 100 * fro m "& bm &" where "& zj &" > (Select isnull(max("& zj &"),0) fro m (Select top "& r &" "& zj &" fro m "& bm &" order by "& zj &") A ) order by "& zj &""
q.Build
DataTables(bm).Save()
MainTable = Tables(bm)
Tables(bm).AutoSizeCols()