注册 登录
编程论坛 VFP论坛

如何分组取整

chychychy 发布于 2024-05-07 18:23, 340 次点击
有34个组别,分别对应到8个候考室中,想前24组,每4组对应一个候考室,学习论坛的用如下方法
Replace 候考室 With Iif(Ceiling(组别/4) <=8,Ceiling(组别/4),8) FOR 组别<=24
后面10组想每5组对应一个候考室(25、26、27、28、29对应到7候考室,30、31、32、33、34对应到8候考室),没学会用Ceiling函数
Replace 候考室 With Iif(Ceiling(组别/5) <=8,Ceiling(组别/5),8) FOR 组别>24,用这一句不出现8候考室,如何修正?


[此贴子已经被作者于2024-5-7 18:24编辑过]

7 回复
#2
schtg2024-05-07 19:38
回复 楼主 chychychy
后一个,直接赋值候考室,可以吗?
试一试哈
Replace 候考室 With icase(组别 >24 AND 组别 < 30,7,组别>29 AND 组别<35,8) for 组别>24  && 少写了 for 组别>24

[此贴子已经被作者于2024-5-9 19:46编辑过]

#3
sdta2024-05-07 20:03
CREATE CURSOR test (ks n(2), fz n(2))
FOR ln = 1 TO 34
    INSERT INTO test (ks) VALUES (ln)
ENDFOR
REPLACE ALL fz WITH IIF(ks <= 24, CEILING(ks/4), 24/4+CEILING((ks-24)/5))
BROWSE
上述代码只针对楼主1楼的问题给予解决方案
#4
chychychy2024-05-07 21:36
回复 2楼 schtg
学习了,工作中,我是直接赋值,不过我比你复杂了,用了两句
Replace 候考室 WITH 7 FOR 组别>24 AND 组别<=29
Replace 候考室 WITH 8 FOR 组别>29 AND 组别<=34

[此贴子已经被作者于2024-5-8 08:08编辑过]

#5
chychychy2024-05-07 21:37
回复 3楼 sdta
谢谢,先拿来主义学习了。修改后使用完全正确

[此贴子已经被作者于2024-5-8 09:15编辑过]

#6
chychychy2024-05-08 09:15
回复 2楼 schtg
测试icase 语句不行,我查说明他意思只执行一个分支
#7
schtg2024-05-09 19:48
回复 6楼 chychychy
少写了条件 for 组别 > 24。楼上原贴已经更正。
三楼的很好的啊!
程序代码:

create cursor tt(组别 n(2),候考室 n(2))
for i = 1 to 34
    insert into tt(组别) value(m.i)
endfor
select tt
replace 候考室 with iif(ceiling(组别/4) <=8,ceiling(组别/4),8) for 组别<=24
replace 候考室 with icase(组别 >24 and 组别 < 30,7,组别>29 and 组别<35,8) for 组别>24

只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2024-5-9 19:52编辑过]

#8
chychychy2024-05-10 11:08
回复 7楼 schtg
这次完全正确,学习了,谢谢
1