以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  分页加载的表名称为变量  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=172150)

--  作者:tld
--  发布时间:2021/9/27 5:29:00
--  分页加载的表名称为变量
老师好。分页加载的时候,下面的语句

Dim r1 As Integer = (Page - 1) * 50 + 1
 Dim
r2 As Integer = Page * 50
 Dim
sql As String
 sql = "Sele ct * From (Sele ct Row_Number() Over(Order by [订单ID]) As RowNum, * from 订单) As a "
 sql = sql & " Where RowNum >= " & r1 & " And RowNum <= " & r2
 DataTables
(
"
订单").SQLLoad(sql)

我希望表、排序均为变量,
Dim tb_name As String = args(0)
Dim px As String = args(1)
Dim fy As Integer = args(2)
Dim r1 As Integer = (Page - 1) * fy + 1
Dim r2 As Integer = Page * fy
Dim sql As String
sql = "Sele ct * From (Sele ct Row_Number() Over(Order by [px]) As RowNum, * from tb_name) As a "
sql = sql & " Where RowNum >= " & r1 & " And RowNum <= " & r2
DataTables(tb_name).SQLLoad(sql)

执行时有错误 
.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2021.5.29.1
错误所在事件:加载[流水]失败!
详细错误信息:
对象名 \'tb_name\' 无效。
而实际上tb_name的值是 【流水】 

请老师帮忙指点,谢谢!
[此贴子已经被作者于2021/9/27 5:29:36编辑过]

--  作者:浙江仔
--  发布时间:2021/9/27 7:24:00
--  
sql = "Sele ct * From (Sele ct Row_Number() Over(Order by [" & px & "]) As RowNum, * from " & tb_name  & ") As a "
sql = sql & " Where RowNum >= " & r1 & " And RowNum <= " & r2

--  作者:tld
--  发布时间:2021/9/27 15:30:00
--  
老师,运行后出现错误


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


--  作者:有点蓝
--  发布时间:2021/9/27 15:35:00
--  

使用SQLLoad方法有两个原则:

1、新的Select语句不能改变表的原有结构。
2、新的Select语句也必须从相同的后台表中提取数据。


原来的流水表应该是没有RowNum这个列的,建议使用fill吧

--  作者:tld
--  发布时间:2021/9/27 21:08:00
--  
如何让流水表有RowNum列呢,RowNum列是自带的,还是设计表格的时候人工增加的?谢谢
--  作者:有点蓝
--  发布时间:2021/9/27 21:33:00
--  
根据Row_Number生成的一个动态列,虚拟的,不是实际的列。这种sql生成的表只能作为查询表使用,建议还是使用fill