以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  请教,关于SQL查询表的分页的问题【已解决】  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=28970)

--  作者:even0898
--  发布时间:2013/2/24 11:05:00
--  请教,关于SQL查询表的分页的问题【已解决】

在窗体中建立了一个SQLQuery型的table,然后在窗体的afterload事件里用FILL的方法从两张表里取数据生成查询数据

我想用按钮做分页控制(首页,上一页,下一页,总行数),另外用一个lable来显示这张查询表的总行数和总页数,这个要如何做呢?给个思路就好

我现在的做法是先FILL,然后用table.datatable来loadTOP等分页,但是只能显示第一页的数据,正确合理的方式应该是怎么样呢?以下是我的代码

 

Dim i As Integer =Tables("测试_table1").DataTable.DataRows.Count
Tables("测试_table1").Fill("Select 简称,{供应商资料表}.代码,名称,交易币种,结款条件,税率,地址,{供应商资料表}.电话,传真,Email,Website,简介,登记人,登记时间,联系人,职务,{供应商联络人}.电话 As [联系方式] From {供应商资料表} Inner JOIN {供应商联络人} ON {供应商联络人}.[代码] = {供应商资料表}.[代码]","ERP",True)
With Tables("测试_Table1").DataTable
    .LoadFilter = ""
    .LoadTop = 15
    .LoadPage = 0
    .Load()
    e.Form.Controls("页码信息").Text= "共[" & .TotalPages & "] 页 ,当前为第[" & .LoadPage+1 & "]页,共[" & i & "]行数据"
End With

页数和数据行数都显示不对..

==================================================================

感谢小林的指导,问题得到解决,因为目前FOX还不支持查询表的分页,只有曲线救国,高手就路过当看个笑话好了,一直索取,贡献一下如我一样没有任何程序基础又在苦苦学习FOX的人...

解决思路:

在SQL数据库里建立一个表视图,视图名为“供应商查询”,表视图的建立请百度..值得注意的是建立连接字段的时候,如果是用FOX建立的外部表的话,会自动把_Identify设置为连接字段,想修改的话要把主表的连接字段拖动到子表去(这里我卡了一中午,汗!)

后续代码如下:

 

Tables("测试_table1").DataTable.fill("Select * From {供应商查询表}","ERP",True)
Dim i As Integer =Tables("测试_table1").DataTable.DataRows.Count
With Tables("测试_Table1").DataTable
    .LoadFilter = ""
    .LoadTop = 15
    .LoadPage = 0
    .Load()
    e.Form.Controls("页码信息").Text= "共[" & .TotalPages & "] 页 ,当前为第[" & .LoadPage + 1 & "]页,共[" & i & "]行数据"
End With

 

上下页控制的话,i的值还是要用要用sqlcommand的命令去取得,我这个是在afterload里写的,就没改了

OVER

[此贴子已经被作者于2013-2-25 13:39:35编辑过]

--  作者:even0898
--  发布时间:2013/2/24 12:37:00
--  
顶起...
--  作者:lin_hailun
--  发布时间:2013/2/25 9:42:00
--  
 查询字段加入_Identify,代码如下。

Tables(" 测试_table1").Fill("Select
{供应商联络人}.[_Identify],简称,{供应商资料表}.代码,名称,交易币种,结款条件,税率,地址,{供应商资料表}.电话,传真,Email,Website,简介,登记人,登记 时间,联系人,职务,{供应商联络人}.电话 As [联系方式] From {供应商资料表} Inner JOIN {供应商联络人} ON {供应商联络人}.[代码] = {供应商资料表}.[代码]","ERP",True)

Dim i As Integer =Tables("测试_table1").DataTable.DataRows.Count
With Tables("测试_Table1").DataTable
    .LoadFilter = ""
    .LoadTop = 15
    .LoadPage = 0
    .Load()
    e.Form.Controls("页码信息").Text= "共[" & .TotalPages & "] 页 ,当前为第[" & .LoadPage+1 & "]页,共[" & i & "]行数据"
End With


--  作者:fox0001
--  发布时间:2013/2/25 10:06:00
--  
以下是引用lin_hailun在2013-2-25 9:42:00的发言:
 查询字段加入_Identify,代码如下。

Tables(" 测试_table1").Fill("Select
{供应商联络人}.[_Identify],简称,{供应商资料表}.代码,名称,交易币种,结款条件,税率,地址,{供应商资料表}.电话,传真,Email,Website,简介,登记人,登记 时间,联系人,职务,{供应商联络人}.电话 As [联系方式] From {供应商资料表} Inner JOIN {供应商联络人} ON {供应商联络人}.[代码] = {供应商资料表}.[代码]","ERP",True)

Dim i As Integer =Tables("测试_table1").DataTable.DataRows.Count
With Tables("测试_Table1").DataTable
    .LoadFilter = ""
    .LoadTop = 15
    .LoadPage = 0
    .Load()
    e.Form.Controls("页码信息").Text= "共[" & .TotalPages & "] 页 ,当前为第[" & .LoadPage+1 & "]页,共[" & i & "]行数据"
End With

这个貌似只是查Access,如果查SQL Server呢?SQL Server没有定义_Identify字段,只定义了id字段作为主键。


--  作者:even0898
--  发布时间:2013/2/25 10:14:00
--  

列名 \'_Identify\' 不明确。

原因和楼上说的是一样吧,昨天我查遍了论坛,貌似是说要分页的话SQL表里必须有主键,可这个表我是在FOXTABLE里建立到我的SQL数据库里的啊,应该有_Identify的啊


--  作者:lin_hailun
--  发布时间:2013/2/25 11:38:00
--  
 这个是狐表的一个缺陷。最好能支持查询表分页咯。要改一下内部合成的sql语句了。

 目前的话,楼主去数据库做一个视图吧,然后像表一样弄进来。

--  作者:even0898
--  发布时间:2013/2/25 13:40:00
--  
问题解决,鸣谢小林,UP