| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 144 人关注过本帖
标题:请各位老师指点一下这个程序
只看楼主 加入收藏
yd1954
Rank: 2
来 自:辽宁沈阳
等 级:论坛游民
帖 子:146
专家分:21
注 册:2016-7-1
结帖率:100%
收藏
已结贴  问题点数:60 回复次数:5 
请各位老师指点一下这个程序
3d001.zip (35.33 KB)

我请豆包帮我写个程序:
连续统计
h1列、2002001行到2002015行中,0出现的的次数,并将统计结果放到h1_0列,2002015行的单元格。
h1列、2002002行到2002016行中,0出现的的次数,并将统计结果放到h1_0列,2002016行的单元格。
h1列、2002003行到2002017行中,0出现的的次数,并将统计结果放到h1_0列,2002017行的单元格。
h1列、2002004行到2002018行中,0出现的的次数,并将统计结果放到h1_0列,2002018行的单元格。
........

h1列、2024348行到2025010行中,0出现的的次数,并将统计结果放到h1_0列,2025010行的单元格。

如果统计结果为0,则在相应的单元格中记为0。

得到以下程序

USE YourTableName

FOR startRow = 2002001 TO 2024348
    endRow = startRow + 14
    COUNT FOR h1 = 0 AND RECNO() >= startRow AND RECNO() <= endRow TO countZero

    GO endRow
    REPLACE h1_0 WITH countZero
ENDFOR

USE

运行后,在GO ENDROE处显示“记录超出范围”。程序中“endrow=srartroe+14”已经限定了范围,请老师们指点帮助。谢谢。
3 天前 16:53
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1964
专家分:3849
注 册:2012-2-29
收藏
得分:30 
回复 楼主 yd1954
因为数据表3d001.dbf中的qihao数值有一些乱。从数值上看,好像是年份 + 3位数的序号,但其间有2026269、2029270……等数值。
最好使用序号来判断,可能会更好一些。
程序代码:
select recno() as xh,* from 3d001 into table _ls
select _ls 
for i = 1 to 8153
    count for h1 = 0 and xh >= m.i and xh <= 14 + m.i to countzero
    replace h1_0 with countzero for xh = 14 + m.i
endfor



程序代码:
USE YourTableName
FOR startRow = 1 TO 8153
    endRow = startRow + 14
    COUNT FOR h1 = 0 AND RECNO() >= startRow AND RECNO() <= endRow TO countZero
    GO endRow
    REPLACE h1_0 WITH countZero
ENDFOR
USE


说明:8153 = 总记录数 - 14,上面的计算方法是常规方法,略显慢了一些哈。



[此贴子已经被作者于2025-4-14 20:50编辑过]

3 天前 19:57
yd1954
Rank: 2
来 自:辽宁沈阳
等 级:论坛游民
帖 子:146
专家分:21
注 册:2016-7-1
收藏
得分:0 
非常感谢schtg老师的帮助。qihao确实是年份+序号。这其中每年的序号总量并不相同,也有我录入是错误。我改正了几个,还要再细致检查。再次感谢!
3 天前 21:33
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:777
专家分:3040
注 册:2018-3-13
收藏
得分:30 
程序代码:
Close Databases
Clear

Use (LocFile('3d001.dbf')) Exclusive Alias src
Select src
Index on qihao tag qihao
Set Order To

ns = 2002001
goto bottom
ne = qihao - 14

For ii = ns to ne
    jj = ii + 14
    Update src set h1_0 = ( ;
        select Count(*) from src where h1 = 0 and qihao between ii and jj) ;
        where qihao == jj
    Wait window ii nowait
EndFor

Set Order To qihao
Browse
Delete Tag qihao
*-- 显示可能有误的数据
Browse for !Between(qihao, ns, ne+14)



[此贴子已经被作者于2025-4-14 23:41编辑过]


这家伙很懒,啥也没留下
3 天前 21:42
schtg
Rank: 12Rank: 12Rank: 12
来 自:Usa
等 级:贵宾
威 望:67
帖 子:1964
专家分:3849
注 册:2012-2-29
收藏
得分:0 
回复 4楼 csyx
高!妙!
前天 06:46
yd1954
Rank: 2
来 自:辽宁沈阳
等 级:论坛游民
帖 子:146
专家分:21
注 册:2016-7-1
收藏
得分:0 
回复 4楼 csyx
非常感谢老师的指点。
前天 20:27
快速回复:请各位老师指点一下这个程序
数据加载中...
 
   



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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022750 second(s), 12 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved