VFP分页显示数据 *-------------- 十豆三 2010.04 此例是每页显示3条记录(每条记录只有一个字段),用 Label 显示 注:如果表有索引,显示的顺序为索引顺序而不是物理顺序 在表单加3个 Label ,分别命名为:Label1 Label2 Label3 在表单加一个按钮:如其 Name 为 Command100 (或用表单方法也可以),其 Visible 属为 .F.,其 Click 事件代码为: Select Name,Recno() As jlh Into Cursor T2 From T1 Where Between(Recno(),3*gnPage-2,3*gnPage) Order By 2 Desc Store '' To Thisform.Label1.Caption,Thisform.Label2.Caption,Thisform.Label3.Caption Select T2 Scan m.lnJ=Transform(3-Recno()+1) Thisform.Label&lnJ..Caption=Name Endscan 在表单的 Init 事件加代码: Public gnPage Create Cursor T1 (Name C(10)) For m.lnI=1 To 20 Insert Into T1 Values (Transform(m.lnI)) Endfor gnPage=1 &&初始1 表示第一页 This.Command100.Click() 上一页按钮 的 Click 事件代码: gnPage=Max(gnPage-1,1) Thisform.Command100.Click() 下一页按钮 的 Click 事件代码: gnPage=Min(gnPage+1,Ceiling(Reccount('T1')/3)) Thisform.Command100.Click() ------------------------------------------------------- 用 Grid 分页显示 注:如果表有索引,显示的顺序为索引顺序而不是物理顺序 在表单加一个 Grid 控件 在表单加一个按钮:如其 Name 为 Command100 (或用表单方法也可以),其 Visible 属为 .F.,其 Click 事件代码为: Thisform.Grid1.recordsource=Null Thisform.Grid1.ColumnCount=-1 Select Recno() As jlh,* Into Cursor T2 From "&gnTableName." Where Between(Recno(),gnPageRows*gnPage-(gnPageRows-1),gnPageRows*gnPage) Order By 1 Thisform.Grid1.recordsource="T2" Thisform.Grid1.DeleteColumn(1) && 如果是VFP6,此句改为:Thisform.Grid1.Columns(1).Width=0 Thisform.Grid1.Refresh 在表单的 Load 事件加代码: Public gnPage,gnPageRows,gnTableName *--- 生成测试数据 Create Cursor T1 (ID I,Name C(10),Department C(20)) For m.lnI=1 To 23 Insert Into T1 Values (m.lnI,"XM"+Transform(m.lnI),"BM"+Transform(m.lnI)) Endfor *--- gnPage=1 && 初始1 表示第一页 gnPageRows=5 && 每页显示记录数 gnTableName="T1" && 分页显示记录的表名 在表单的 Unload 事件加代码: Release gnPage,gnPageRows,gnTableName 在表单的 Init 事件加代码: This.Command100.Click() 上一页按钮 的 Click 事件代码: gnPage=Max(gnPage-1,1) Thisform.Command100.Click() 下一页按钮 的 Click 事件代码: gnPage=Min(gnPage+1,Ceiling(Reccount(gnTableName)/gnPageRows)) Thisform.Command100.Click() |
|
来自: lygcw9603 > 《Grid(表格)》