回复 8楼 wengjl
有思路了,在对接好里的表中删除甲、乙都是男的,剩上的随机筛选出7场
回复 11楼 bcly0808
思想是有了,测试没通过
*!* 表及字段说明 *!* jsmd-监考教师名单,XM-姓名,XB-性别,FZ-分组,1代表甲组-监考1,2代表乙-监考2 ; 如果不想让1组始终是主监考,可以在排好后,同组对调一下。 *!* jkap-安排表,课程名称(也可以考试场次),姓名、性别 *!* kskc-考试课程,kcmc 课程名称,kcs 考场数,wp1,wp2 未安排场次 Close Tables All Use jsmd Use jkap In 0 Zap In jkap Use kskc In 0 Replace wp1 With 0,wp2 With 0 All In kskc ikskc=Reccount('kskc') Count For fz='1' To rs1 Count For fz='2' To rs2 If rs1<>rs2 Then yorn=Messagebox('两组监考人数不相等,1组'+Alltrim(Str(rs1))+'人,2组'+Alltrim(Str(rs2))+'人。'+Chr(13)+'是否继续?',4+32+256,"提示") If yorn<>6 Then Return Else irs=rs1 && ?max(rs1,rs2) ?min(rs1,rs2)均可 Endif Endi Select jkap For i=1 To ikskc Go i In kskc _kcmc=Alltrim(kskc.kcmc) _kcs=kskc.kcs For j=1 To _kcs Insert Into jkap (kcmc ) Values (_kcmc) Replace xlh With Rand() In jsmd All Select Top 1 xm,xb From jsmd Order By xlh Desc Where fz='1' And Not( xm In (Select xm1 From jkap Where Alltrim(kcmc)==_kcmc) )Into Curs tmp If Reccount('tmp')=0 Replace xm1 With "NO" In jkap Replace wp1 With wp1+1 In kskc ** loop Else _js1=Alltrim(tmp.xm) _xbn=(Alltrim(tmp.xb)='男') Replace xb1 With tmp.xb,xm1 With _js1 In jkap Endif **下面第二个老师 Select Top 1 xm,xb From jsmd Order By xb,xlh Where fz='2' And !(xm In (Select xm2 From jkap Where Alltrim(kcmc)==_kcmc)) And !(xm In (Select xm2 From jkap Where Alltrim(xm1)==_js1)) AND !(xb='男' AND _xbn) Into Curs tmp * _xbn[color=#808080]=(ALLTRIM(tmp.xb)='男'),(xb='女')=_xbn 性别不能相同[/color] *_xbn=(ALLTRIM(tmp.xb)='男'),!((xb='男')and_xbn) 性别不能同为男 If Reccount('tmp')=0 Replace xm2 With "NO" In jkap Replace wp2 With wp2+1 In kskc ** loop Else Replace xm2 With tmp.xm,xb2 With tmp.xb In jkap Endif Endfor Endfor