主题:请教:如何人员循环编程?
yin710
[专家分:0] 发布于 2012-05-08 11:44:00
各位老师好:
我想编一个人员循环的表单,如:张三、李四、王五。如何点“录入”命令键后将这三个名字依次循环地出现在表单里。 1、姓名** 年龄* 地址** 学历* 档案管理:张三 2、姓名 ** 年龄* 地址 ** 学历* 档案管理: 李四 3、 姓名** 年龄* 地址** 学历* 档案管理:王五 4、姓名** 年龄* 地址** 学历* 档案管理:张三 依次循环。谢谢大家。
回复列表 (共23个回复)
沙发
taifu945 [专家分:240] 发布于 2012-05-08 16:54:00
如果你这三个档案管理人员的名单是放在文本框中的,可以在“录入”钮的Click事件中含这段代码:
APPEND BLANK &&表文件增加一条空记录
档案员=IIF(RECNO()=1,"张三",Thisform.档案管理文本框.Value)
Thisform.档案管理文本框.Value=IIF(档案员="张三","李四",IIF(档案员="李四","王五","张三"))
... ...
上面第三条语句就是你要实现的功能,不知道我理解得对不对。你可以把该文本框的Enabled属性设置为.F.,以免误操作。
板凳
sdta [专家分:570] 发布于 2012-05-09 07:38:00
什么叫出现在表单里?
以什么样的形式出现?
在表单中显示浏览结果?
3 楼
agt澳 [专家分:840] 发布于 2012-05-09 09:44:00
。。
4 楼
yin710 [专家分:0] 发布于 2012-05-09 11:25:00
哦,老师们,我没说清楚,2楼的老师说的对,在“录入”钮的Click事件中加代码,档案员出现在表单的档案管理文本框里,档案管理只有3个人,每个数据有一个档案员,三个人依次循环。
5 楼
yin710 [专家分:0] 发布于 2012-05-09 12:24:00
taifu945老师好,我用你给的代码做到了,谢谢你。现在我想把这个提问变个方式:三个管理员假如有一个临时请假了,就两个人啦,如何做?我想用多选框,把档案员做成一个临时表,档案员都在就按三个人循环。一个请假啦,剩下两个了,按两个人循环。也谢谢其他老师关系。
6 楼
taifu945 [专家分:240] 发布于 2012-05-09 14:21:00
假设你这档案人员的表文件有两个字段:姓名 C、请假 L。那么如果有人请假,势必他所在记录的“请假”字段会设为.T.。
那么,依此规律,除第一条APPEND语句不动外,后面的语句可以改为:
IF !USED('Daryb') &&如果是第一次进入“录入”钮
SELECT 0
USE 档案人员表 ALIAS Daryb
LOCATE FOR !请假 &&寻找第一个未请假的档案员
记录号=RECNO() &&记下他的记录号,后面备用
ELSE
SELECT Daryb
IF !EOF()
CONTINUE &&继续寻找下一个未请假的档案员
ENDIF
IF !FOUND()
GO 记录号 &&若没找到后面未请假的档案员,则回到第一个未请假的档案员记录
ENDIF
ENDIF
Thisform.档案管理文本框.Value=Daryb.姓名
声明:
1、本段代码未经测试,只是人工大脑模拟运行了一下。若有错误,只能请你自己去改正;
2、这段代码要保证档案员表中至少有一个未请假的人员,所有人都请假就会出错;
3、这段代码把当前工作区切换到了档案人员表,若在同一个Click事件代码中还要用到其它表,请在这段代码后再用SELECT切换回那个表;
4、全部录入完毕后,不要忘记关闭档案人员表。最好在表单的Unload事件代码中放入USE IN Daryb语句。
7 楼
taifu945 [专家分:240] 发布于 2012-05-09 14:23:00
不要做多选框,再用临时表,太复杂啦。直接把这仨人放入一个正式表文件中好了,然后有请假么就在“请假”字段“.T.”一下,回来了么就“.F.”一下。
8 楼
yin710 [专家分:0] 发布于 2012-05-10 08:32:00
taifu945老师好,我试试,先谢谢你。另外老师我问一下:上个代码档案员=IIF(RECNO()=1,"张三",Thisform.档案管理文本框.Value)
Thisform.档案管理文本框.Value=IIF(档案员="张三","李四",IIF(档案员="李四","王五","张三"))
为什么用4个人就不能用啦呢?提示函数式)缺乏。
9 楼
taifu945 [专家分:240] 发布于 2012-05-10 09:02:00
四个人及以上数量人员的话建议用表文件形式存储,可参见上面请假的案例。因为IIF()函数嵌套过多以后对将来程序的维护不利,如果实在不想用表文件,建议用DO CASE结构代替IIF()函数。虽然IIF()函数的执行速度要快于DO CASE结构,但嵌套过多,影响视觉,影响维护效率。电脑硬件发展到现在,两者差距不明显了。
DO CASE
CASE 档案员="张三"
Thisform.档案管理文本框.Value="李四"
CASE 档案员="李四"
Thisform.档案管理文本框.Value="王五"
CASE 档案员="王五"
Thisform.档案管理文本框.Value="赵六"
CASE 档案员="赵六"
Thisform.档案管理文本框.Value="张三"
ENDCASE
你再试一下吧。
10 楼
yin710 [专家分:0] 发布于 2012-05-11 08:12:00
taifu945老师好,你那段请假代码中, USE 档案人员表 ALIAS Daryb
提示找不到文件,本人才疏学浅,测试了一晚上也没法成功。
套用4个人的更是无法做到。我以为三个和四个一样呢。现在我也做了一个表文件,。。。希望老师教我这个四个人可以请假的。谢谢 USE 档案人员表 ALIAS Daryb
我来回复