在窗体中建立了一个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编辑过]