| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1193 人关注过本帖
标题:各位大佬,什么方法最好,用时最少,盼赐教,谢谢。
只看楼主 加入收藏
laowan001
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:66
帖 子:1089
专家分:2682
注 册:2015-12-30
收藏
得分:0 
回复 10楼 凝聚双眼
1. 是需要完善function中...的那部分吧?
2. 函数返回是个分组后的表吗?
3. 结果如果是个表,是需要在原表中标识分组,还是通过新建字段实现分组?
2023-12-14 16:59
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1730
专家分:3324
注 册:2012-2-29
收藏
得分:0 
回复 7楼 凝聚双眼
先用总记录数除以100判断,需要多少页,再用奇偶数判断最后一页的左侧多少、右侧多少吧。不要见笑,仅供参考
2023-12-14 17:01
sych
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:317
专家分:448
注 册:2019-10-11
收藏
得分:0 
clea
CLOSE all
CREATE CURSOR 分组  (recn1 i,recn2 i)
use 表1 IN 0
SELECT 表1
SCAN
    if MOD(recn()-1,100)<50
        inse into 分组 (recn1) values(recn("表1"))
    ELSE
        go 50*INT((RECNO("表1")-1)/100)+MOD(RECNO("表1")-1,50)+1 IN 分组
        REPLACE recn2 WITH RECNO("表1") IN 分组
    ENDIF
ENDSCAN
SELECT 1
brow
2023-12-14 20:28
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
Replace All F1 With '序'+Padl(Recno(),6,[0]), F2 With [A]+Padl(Recno(),6,[0]), F3 With Recno()

坚守VFP最后的阵地
2023-12-14 21:11
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
只要把要求说清楚,楼主的问题应该不难吧 


坚守VFP最后的阵地
2023-12-14 21:19
凝聚双眼
Rank: 2
等 级:论坛游民
帖 子:36
专家分:32
注 册:2023-12-1
收藏
得分:0 
以下是引用laowan001在2023-12-14 16:59:58的发言:

1. 是需要完善function中...的那部分吧?
2. 函数返回是个分组后的表吗?
3. 结果如果是个表,是需要在原表中标识分组,还是通过新建字段实现分组?


对,返回表。
返 回 值:返回生成后的新表(返回表的字段数=分栏数*原字段)

假设原表字段为 f1f2f3,分3栏,新表字段则为9个字段。当然啦,各字段类型与原表一样。

[此贴子已经被作者于2023-12-14 23:04编辑过]

2023-12-14 22:05
sych
Rank: 6Rank: 6
等 级:侠之大者
威 望:7
帖 子:317
专家分:448
注 册:2019-10-11
收藏
得分:0 
clea
CLOSE all
CREATE CURSOR 分组  (recn1 i,recn2 i)
use 表1 IN 0
SELECT 表1
SCAN
    st=IIF(MOD(RECNO(),100)=1,RECNO(),st)
    fz=IIF(MOD(RECNO(),100)=1,IIF(RECCOUNT()-RECNO()<99,(RECCOUNT()-RECNO()-MOD(RECCOUNT()-RECNO(),2))/2+1,50),fz)
    if MOD(recn()-st,2*fz)<fz
        inse into 分组 (recn1) values(recn("表1"))
    ELSE
        go st/2+mod(RECNO("表1")-st-fz,2*fz)+1 IN 分组
        REPLACE recn2 WITH RECNO("表1") IN 分组
    ENDIF
ENDSCAN
SELECT 1
brow
2023-12-14 22:15
凝聚双眼
Rank: 2
等 级:论坛游民
帖 子:36
专家分:32
注 册:2023-12-1
收藏
得分:0 
以下是引用sdta在2023-12-14 21:19:45的发言:

只要把要求说清楚,楼主的问题应该不难吧 

因论坛时好时坏,当时已无法编辑一楼了。是没有描述完,见谅。




[此贴子已经被作者于2023-12-14 22:34编辑过]

2023-12-14 22:23
凝聚双眼
Rank: 2
等 级:论坛游民
帖 子:36
专家分:32
注 册:2023-12-1
收藏
得分:0 
回复 12楼 schtg
分栏数不固定的。道理大方向应该是对的。谢谢。
2023-12-14 22:33
凝聚双眼
Rank: 2
等 级:论坛游民
帖 子:36
专家分:32
注 册:2023-12-1
收藏
得分:0 
回复 14楼 sdta
一楼代码是给定测试数据,IO万条,3字段,只是举例。
当然啦,表字段数不固定,返回表的字段数=分栏数*原字段

是对给定数据表,实现动态分组与动态分页,每组最多50,分栏组数不固定。
如3栏,则每页最多 150,如2栏,则每页最多 100。
不足一页时,不一定是 50。

比如,有 65条,分2组,那么左组 33,右组 32,一页
如有 99条,分2组,那么左组50,右组 49,一页

如有 101条,分2组,第一页左 50,右50,第二页左1。

也不知道描述消楚没,谢谢大佬关注!


*===================================================================================
*作 用:对指定数据表分栏分组分页
*语 法:ColGroup_Convert(cTableMc,nNumber,cOutTableMc,nMaxColGroupRec)
*参数说明:cInTableMc 要转换的数据表,nNumber 分栏分组数,
*参数说明:cOutTableMc 分栏分组后的数据表,nMaxColGroupRec 每页每栏的最大记录数(默认为50)
*返 回 值:返回生成后的新表(返回表的字段数=分栏数*原字段)
*===================================================================================
Function ColGroup_Convert(cTableMc,nNumber,cOutTableMc,nMaxColGroupRec)  
    If Parameters()#4
        Messagebox('参数个数不对!',16,'错误')
        Return ''
    Endif
    If Vartype(cTableMc)#'C' Or Vartype(nNumber)#'N' Or Vartype(cOutTableMc)#'C' Or Vartype(nMaxColGroupRec)#'N'
        Messagebox('参数类型不对!',16,'错误')
        Return ''
    Endif
    Private All
    ....
    ....
    ....
    .....
Endfunc
2023-12-14 22:35
快速回复:各位大佬,什么方法最好,用时最少,盼赐教,谢谢。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025146 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved