以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  重大问题:多个基表无法进行分页加载?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=47798)

--  作者:fubblyc
--  发布时间:2014/3/17 21:27:00
--  重大问题:多个基表无法进行分页加载?

各位老师好,

 

我把这段select语句:

 

SELECT rjsytVIP消费信息.VIP客户名称 AS "rjsytVIP消费信息 VIP客户名称", rjsytVIP消费信息.VIP卡号 AS "rjsytVIP消费信息 VIP卡号", rjsytVIP基本信息.移动电话 AS "rjsytVIP基本信息 移动电话", rjsytVIP消费信息.消费日期 AS "rjsytVIP消费信息 消费日期"
FROM (dbo.rjsytVIP消费信息 AS rjsytVIP消费信息
     INNER JOIN dbo.rjsytVIP基本信息 AS rjsytVIP基本信息 ON (rjsytVIP基本信息.卡号 = rjsytVIP消费信息.VIP卡号 ))
where rjsytVIP消费信息._Identify Is Null

 

放入狐表的CaseStudy里的 分页加载  学习项目里,

当然是已经有链接外部数据源了,

表类型选择SQLTable 应用窗口后 提示:

“对于多个基表不支持动态SQL生成 ”
 
表类型选择为 SQLQuery 应用窗口后,
是有显示窗口和数据,但是 下一页、上一页、最末页 按钮无效。
 
我把select语句改为 SELECT * from {rjsytVIP消费信息} where rjsytVIP消费信息._Identify Is Null
 
可以分页加载。
 
 
 
是不是有多个基表就无法实现 分页加载呢?  如果是这样的话,要怎么解决呢。。。。
 

 


--  作者:fubblyc
--  发布时间:2014/3/17 22:13:00
--  

已经找到解决方法:

 

http://www.foxtable.com/help/index.html?n=2721.htm


--  作者:fubblyc
--  发布时间:2014/3/18 10:13:00
--  

各位老师好,

 

我照着帮助这样做了,不知道哪里出了问题:

 

这是 “增加一个查询表”的代码:

 

Select * From (Select Row_Number() Over(Order by rjsytVIP消费信息._Identify) As RowNum,rjsytVIP消费信息.VIP客户名称 AS "rjsytVIP消费信息 VIP客户名称", rjsytVIP基本信息.归属门店代号 AS "rjsytVIP基本信息 归属门店代号"
FROM (dbo.rjsytVIP消费信息 AS rjsytVIP消费信息
     INNER JOIN dbo.rjsytVIP基本信息 AS rjsytVIP基本信息 ON (rjsytVIP基本信息._Identify = rjsytVIP消费信息._Identify ))) As a Where RowNum >= 1 And RowNum <= 10

 

没有问题,应用窗口可以显示表!

 

这是“增加一个自定义函数,函数名为LoadData”的代码:

 

Dim r1 As Integer = (Page - 1) * 10 + 1
Dim r2 As Integer = Page * 10
Dim sql As String
sql = "Select * From (Select Row_Number() Over(Order by rjsytVIP消费信息._Identify) As RowNum, ,rjsytVIP消费信息.VIP客户名称 As "rjsytVIP消费信息 VIP客户名称", rjsytVIP基本信息.归属门店代号 As "rjsytVIP基本信息 归属门店代号" _
& "FROM (dbo.rjsytVIP消费信息 As rjsytVIP消费信息"_
& " INNER JOIN dbo.rjsytVIP基本信息 As rjsytVIP基本信息 ON (rjsytVIP基本信息._Identify = rjsytVIP消费信息._Identify ))_  As a "
sql = sql & " Where RowNum >= " & r1 & " And RowNum <= " & r2
DataTables("VIP消费信息_VIP消费信息").SQLLoad(sql)

 

提示错误:

(Select Row_Number() Over(Order by rjsytVIP消费信息._Identify) As RowNum, ,rjsytVIP消费信息.VIP客户名称 As "rjsytVIP消费信息 VIP客户名称", rjsytVIP基本信息.归属门店代号 As "rjsytVIP基本信息 归属门店代号" _       应为语句结束


 

 

[此贴子已经被作者于2014-3-18 10:14:36编辑过]

--  作者:Bin
--  发布时间:2014/3/18 10:25:00
--  
不能用双引号. 重命名不需要引号的.
--  作者:fubblyc
--  发布时间:2014/3/18 10:42:00
--  

Bin 老师,重命名用引号没有问题,在窗口表可以有效查询出来。

 

Bin老师,

 

“增加自定义函数,函数名为LoadData”的代码中:

 

Dim r1 As Integer = (Page - 1) * 10 + 1
Dim r2 As Integer = Page * 10
Dim sql As String

 

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

 

 sql = "Select * From (Select Row_Number() Over(Order by [订单ID]) As RowNum, * from 订单) As a "    这句要是多表查询的语句,格式是怎么样的呢?

 

比如多表查询的语句为:

 

Select * From (Select Row_Number() Over(Order by rjsytVIP消费信息._Identify) As RowNum,rjsytVIP消费信息.VIP客户名称 AS "rjsytVIP消费信息 VIP客户名称", rjsytVIP基本信息.归属门店代号 AS "rjsytVIP基本信息 归属门店代号"
FROM (dbo.rjsytVIP消费信息 AS rjsytVIP消费信息
     INNER JOIN dbo.rjsytVIP基本信息 AS rjsytVIP基本信息 ON (rjsytVIP基本信息._Identify = rjsytVIP消费信息._Identify ))) As a Where RowNum >= 1 And RowNum <= 10

 

 

我尝试着这样写, 

sql = "Select * From (Select Row_Number() Over(Order by rjsytVIP消费信息._Identify) As RowNum, ,rjsytVIP消费信息.VIP客户名称 As "rjsytVIP消费信息 VIP客户名称", rjsytVIP基本信息.归属门店代号 As "rjsytVIP基本信息 归属门店代号" _
& "FROM (dbo.rjsytVIP消费信息 As rjsytVIP消费信息"_
& " INNER JOIN dbo.rjsytVIP基本信息 As rjsytVIP基本信息 ON (rjsytVIP基本信息._Identify = rjsytVIP消费信息._Identify ))_  As a "
sql = sql & " Where RowNum >= " & r1 & " And RowNum <= " & r2
DataTables("VIP消费信息_VIP消费信息").SQLLoad(sql)

 

不过没有效果。

[此贴子已经被作者于2014-3-18 10:42:10编辑过]

--  作者:Bin
--  发布时间:2014/3/18 10:44:00
--  
双引号是没必要的, 而且在字符串里用双引号  2个才会转换为一个.

例如  As ""rjsytVIP消费信息 VIP客户名称""

--  作者:fubblyc
--  发布时间:2014/3/18 10:48:00
--  

我知道,Bin 老师,我去掉双引号之后也是一样不行。

 


--  作者:Bin
--  发布时间:2014/3/18 10:48:00
--  
上例子.
--  作者:fubblyc
--  发布时间:2014/3/18 11:05:00
--  

是不是有外部数据源就不让传啊,上传老是提示出错

 

Microsoft OLE DB Provider for SQL Server 错误 \'80040e57\'


--  作者:狐狸爸爸
--  发布时间:2014/3/18 11:06:00
--  

楼主先学一下sql语句吧:

http://www.foxtable.com/help/topics/0688.htm

 

不改列名,用那么多as做啥?

 

Dim sql As String = "Select * (Select Row_Number() Over(Order by rjsytVIP消费信息._Identify) As RowNum, ,rjsytVIP消费信息.VIP客户名称 , rjsytVIP基本信息.归属门店代号 "
sql = sql & "FROM dbo.rjsytVIP消费信息 INNER JOIN dbo.rjsytVIP基本信息  ON rjsytVIP基本信息._Identify = rjsytVIP消费信息._Identify)"
sql = sql & " Where RowNum >= " & r1 & " And RowNum <= " & r2
DataTables("VIP消费信息_VIP消费信息").SQLLoad(sql)