回 帖 发 新 帖 刷新版面

主题:请教:如何人员循环编程?

各位老师好:
我想编一个人员循环的表单,如:张三、李四、王五。如何点“录入”命令键后将这三个名字依次循环地出现在表单里。 1、姓名**   年龄*  地址**   学历*   档案管理:张三   2、姓名 **  年龄*  地址 **  学历*   档案管理:     李四   3、 姓名**   年龄*  地址**   学历*   档案管理:王五   4、姓名**   年龄*  地址**   学历*   档案管理:张三    依次循环。谢谢大家。

回复列表 (共23个回复)

沙发

如果你这三个档案管理人员的名单是放在文本框中的,可以在“录入”钮的Click事件中含这段代码:

APPEND BLANK  &&表文件增加一条空记录
档案员=IIF(RECNO()=1,"张三",Thisform.档案管理文本框.Value)
Thisform.档案管理文本框.Value=IIF(档案员="张三","李四",IIF(档案员="李四","王五","张三"))
... ...

上面第三条语句就是你要实现的功能,不知道我理解得对不对。你可以把该文本框的Enabled属性设置为.F.,以免误操作。

板凳

什么叫出现在表单里?
以什么样的形式出现?
在表单中显示浏览结果?

3 楼

。。

4 楼

哦,老师们,我没说清楚,2楼的老师说的对,在“录入”钮的Click事件中加代码,档案员出现在表单的档案管理文本框里,档案管理只有3个人,每个数据有一个档案员,三个人依次循环。

5 楼

taifu945老师好,我用你给的代码做到了,谢谢你。现在我想把这个提问变个方式:三个管理员假如有一个临时请假了,就两个人啦,如何做?我想用多选框,把档案员做成一个临时表,档案员都在就按三个人循环。一个请假啦,剩下两个了,按两个人循环。也谢谢其他老师关系。

6 楼

假设你这档案人员的表文件有两个字段:姓名 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 楼

不要做多选框,再用临时表,太复杂啦。直接把这仨人放入一个正式表文件中好了,然后有请假么就在“请假”字段“.T.”一下,回来了么就“.F.”一下。

8 楼

taifu945老师好,我试试,先谢谢你。另外老师我问一下:上个代码档案员=IIF(RECNO()=1,"张三",Thisform.档案管理文本框.Value)
Thisform.档案管理文本框.Value=IIF(档案员="张三","李四",IIF(档案员="李四","王五","张三"))
为什么用4个人就不能用啦呢?提示函数式)缺乏。

9 楼

四个人及以上数量人员的话建议用表文件形式存储,可参见上面请假的案例。因为IIF()函数嵌套过多以后对将来程序的维护不利,如果实在不想用表文件,建议用DO CASE结构代替IIF()函数。虽然IIF()函数的执行速度要快于DO CASE结构,但嵌套过多,影响视觉,影响维护效率。电脑硬件发展到现在,两者差距不明显了。
DO CASE
   CASE 档案员="张三"
      Thisform.档案管理文本框.Value="李四"
   CASE 档案员="李四"
      Thisform.档案管理文本框.Value="王五"
   CASE 档案员="王五"
      Thisform.档案管理文本框.Value="赵六"
   CASE 档案员="赵六"
      Thisform.档案管理文本框.Value="张三"
ENDCASE

你再试一下吧。

10 楼

taifu945老师好,你那段请假代码中, USE 档案人员表 ALIAS Daryb
提示找不到文件,本人才疏学浅,测试了一晚上也没法成功。 

套用4个人的更是无法做到。我以为三个和四个一样呢。现在我也做了一个表文件,。。。希望老师教我这个四个人可以请假的。谢谢 USE 档案人员表 ALIAS Daryb

我来回复

您尚未登录,请登录后再回复。点此登录或注册