| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4811 人关注过本帖
标题:VFP如何调用个人课表模板文件,一页纸上生成两张个人课表
只看楼主 加入收藏
王咸美
Rank: 1
等 级:新手上路
帖 子:665
专家分:3
注 册:2018-1-4
结帖率:97.48%
收藏
已结贴  问题点数:20 回复次数:25 
VFP如何调用个人课表模板文件,一页纸上生成两张个人课表
VFP如何调用个人课表模板文件,一页纸上生成两张个人课表?
下列代码一页纸上只能生成一张个人课表,如何修改下列代码实现一页纸上生成两张个人课表?请高手赐教,万分感谢!!!
课表文件.zip (10.46 KB)


  SET TALK OFF
  SET SAFETY OFF
  CLOSE ALL
  CLEAR

  wjm=SYS(5)+SYS(2003)+"\grkbmb1.doc"
  WordApp=CREATEOBJECT("word.application")
  USE jsmd20180912 ALIAS jsmd20180912 IN 0
  USE jsrkb20190101 ALIAS jsrkb20190101 IN 0
  USE kb20190101 ALIAS kb20190101 IN 0

  SELECT jsmd20180912
  GOTO top
  rkmc=""
  SCAN
      xm=ALLTRIM(姓名)
      rkmc=xm+","
      WordTable=WordApp.Application.Documents.Open(wjm)
      WordApp.Visible =.t.
      SELECT jsrkb20190101
      GOTO top
      SCAN
          FOR i=1 TO fcount()
              m=FIELD(i)
              xm2= &m.
              IF ALLTRIM(xm2)=ALLTRIM(xm) then
                 rkmc=rkmc+FIELD(i)+nj+bj+','
                 zk( m,nj,bj)
              ENDIF
         NEXT i
      ENDSCAN
      WORDAPP.ActiveDocument.Content.Find.Execute('ABCDEF',.F.,.F.,.F.,.F.,.F.,.F.,.F.,.F.,'&xm',2)
      oFile=SYS(5)+SYS(2003)+"\"+ALLTRIM(xm)+"_课程表.doc"
      WordApp.Documents(1).SaveAs(oFile)
      WordApp.ActiveDocument.Close      
      SELECT jsmd20180912
  ENDSCAN
  WORDAPP.quit
  WORDAPP=.NULL.
  CLOSE ALL
  QUIT
   
  PROCEDURE zk
      LPARAMETERS kcm,lnj,lbj
      LOCAL j,zkm,xq,jc,zkkm  
      SELECT kb20190101
     
 GOTO top
      LOCATE FOR ALLTRIM(nj)=ALLTRIM(lnj) AND ALLTRIM(bj)=ALLTRIM(lbj)
      IF NOT EOF() THEN
         FOR j=3 TO FCOUNT()
             zkm=FIELD(j)
             zkkm= &zkm.
             IF ALLTRIM(zkkm)=ALLTRIM(kcm) then
                xq=VAL(SUBSTR(zkm,5,1))
                jc=VAL(SUBSTR(zkm,6,1))
                scsz=ALLTRIM(nj)+ALLTRIM(bj)+ALLTRIM(kcm)
                WordTable.Tables.item(1).Cell(jc+1,xq+2).Range.Text="&scsz"
             ENDIF
         NEXT j
      ENDIF
      SELECT kb20190101
      RETURN
搜索更多相关主题的帖子: VFP 模板 文件 生成 SELECT 
2019-05-05 10:02
gs2536785678
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:45
帖 子:610
专家分:1784
注 册:2017-7-16
收藏
得分:0 
估计没有人理你,因为你考虑深刻了,一般地讲,弄出来已经不容易的了。。。


你创造程序,自动排出课程表,这样就生动了!

[此贴子已经被作者于2019-5-5 14:42编辑过]

2019-05-05 14:30
gs2536785678
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:45
帖 子:610
专家分:1784
注 册:2017-7-16
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
2019-05-05 14:41
星光悠蓝
Rank: 9Rank: 9Rank: 9
来 自:山水甲天下
等 级:贵宾
威 望:52
帖 子:525
专家分:1278
注 册:2010-1-11
收藏
得分:0 
表格是一式两份吗
2019-05-05 16:23
王咸美
Rank: 1
等 级:新手上路
帖 子:665
专家分:3
注 册:2018-1-4
收藏
得分:0 
不是,就是想在一页纸上生成两位不同教师的个人课表(调用模板文件grkbmb1.doc,生成所有教师的个人课表,每页纸上显示两个人课表)
2019-05-05 16:40
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2214
专家分:3882
注 册:2007-4-27
收藏
得分:19 
              WordTable.Tables.item(1).Cell(jc+1,xq+2).Range.Text="&scsz"

把模板上的 ABCDEF 换成ABCDEF1 和ABCDEF2 以避免上下二个表的老师姓名,替换为同一个老师。把上句中的item(1) 中的括号里1换成2 ,体验一下,可以看到姓名在上半页,课名在下半页。


对老师循环时,要以2名老师为一组,加一个判断,记录号奇数的写到上半页,记录号偶数写到下关页,写完2个(即一小组)后,才保存WORD文档一次。

以上变通思路,供参考。

[此贴子已经被作者于2019-5-5 16:55编辑过]


只求每天有一丁点儿的进步就可以了
2019-05-05 16:49
王咸美
Rank: 1
等 级:新手上路
帖 子:665
专家分:3
注 册:2018-1-4
收藏
得分:0 
思路很好!就是不知道上述代码如何修改,方能实现以上功能?还望各位大侠不吝赐教!
2019-05-05 17:12
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2214
专家分:3882
注 册:2007-4-27
收藏
得分:0 
程序代码:

  SET TALK OFF
  SET SAFETY OFF
  CLOSE ALL
  CLEAR

  wjm=SYS(5)+SYS(2003)+"\grkbmb1.doc"
  WordApp=CREATEOBJECT("word.application")
  USE jsmd20180912 ALIAS jsmd IN 0
  USE jsrkb20190101 ALIAS jsrk IN 0
  USE kb20190101 ALIAS kb IN 0

  SELECT jsmd
  GOTO top  
  DO while not EOF()
      rkmc=""
      xm=ALLTRIM(姓名)
      rkmc=xm+","
      WordTable=WordApp.Application.Documents.Open(wjm)
      WordApp.Visible =.t.
      SELECT jsrk
      GOTO top
      SCAN
          FOR i=1 TO fcount()
              m=FIELD(i)
              xm2= &m.
              IF ALLTRIM(xm2)=ALLTRIM(xm) then
                 rkmc=rkmc+FIELD(i)+nj+bj+','
                 zk( m,nj,bj)
              ENDIF
         NEXT i
      ENDSCAN
      WORDAPP.ActiveDocument.Content.Find.Execute('ABCDEF1',.F.,.F.,.F.,.F.,.F.,.F.,.F.,.F.,'&xm',2)
    SELECT jsmd
    SKIP 1
      rkmc=""
      xm=ALLTRIM(姓名)
      rkmc=xm+","
      *WordTable=WordApp.Application.Documents.Open(wjm)
      *WordApp.Visible =.t.
      SELECT jsrk
      GOTO top
      SCAN
          FOR i=1 TO fcount()
              m=FIELD(i)
              xm2= &m.
              IF ALLTRIM(xm2)=ALLTRIM(xm) then
                 rkmc=rkmc+FIELD(i)+nj+bj+','
                 zk2( m,nj,bj)
              ENDIF
         NEXT i
      ENDSCAN
      WORDAPP.ActiveDocument.Content.Find.Execute('ABCDEF2',.F.,.F.,.F.,.F.,.F.,.F.,.F.,.F.,'&xm',2)
      
      oFile=SYS(5)+SYS(2003)+"\"+ALLTRIM(xm)+"_课程表.doc"
      WordApp.Documents(1).SaveAs(oFile)
      WordApp.ActiveDocument.Close  
           
      SELECT jsmd
      SKIP 1
  ENDDO 
  
  WORDAPP.quit
  WORDAPP=.NULL.
  CLOSE ALL
  QUIT
  
   
  PROCEDURE zk
      LPARAMETERS kcm,lnj,lbj
      LOCAL j,zkm,xq,jc,zkkm  
      SELECT kb
      GOTO top
      LOCATE FOR ALLTRIM(nj)=ALLTRIM(lnj) AND ALLTRIM(bj)=ALLTRIM(lbj)
      IF NOT EOF() THEN 
         FOR j=3 TO FCOUNT()
             zkm=FIELD(j)
             zkkm= &zkm.
             IF ALLTRIM(zkkm)=ALLTRIM(kcm) then
                xq=VAL(SUBSTR(zkm,5,1))
                jc=VAL(SUBSTR(zkm,6,1))
                scsz=ALLTRIM(nj)+ALLTRIM(bj)+ALLTRIM(kcm)
                WordTable.Tables.item(1).Cell(jc+1,xq+2).Range.Text="&scsz"
             ENDIF
         NEXT j
      ENDIF
      SELECT kb
      RETURN
  ENDPROC 
  
     
  PROCEDURE zk2
      LPARAMETERS kcm,lnj,lbj
      LOCAL j,zkm,xq,jc,zkkm  
      SELECT kb
      GOTO top
      LOCATE FOR ALLTRIM(nj)=ALLTRIM(lnj) AND ALLTRIM(bj)=ALLTRIM(lbj)
      IF NOT EOF() THEN 
         FOR j=3 TO FCOUNT()
             zkm=FIELD(j)
             zkkm= &zkm.
             IF ALLTRIM(zkkm)=ALLTRIM(kcm) then
                xq=VAL(SUBSTR(zkm,5,1))
                jc=VAL(SUBSTR(zkm,6,1))
                scsz=ALLTRIM(nj)+ALLTRIM(bj)+ALLTRIM(kcm)
                WordTable.Tables.item(2).Cell(jc+1,xq+2).Range.Text="&scsz"
             ENDIF
         NEXT j
      ENDIF
      SELECT kb
      RETURN
  ENDPROC     


简单改了下,有一个小问题,你自己处理下

只求每天有一丁点儿的进步就可以了
2019-05-05 17:45
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
寫一個生成單個教師的過程,調用2次不就好了,自找麻煩幹什麽。本來就不需要在一頁上設計2個相同的表格,直接按記錄循環一個一個表格生成即可,每生成兩個就插入一個分頁符,它自己分頁。對表格來説,優先使用Excel,勝於用Word。

[此贴子已经被作者于2019-5-5 21:03编辑过]


授人以渔,不授人以鱼。
2019-05-05 20:46
王咸美
Rank: 1
等 级:新手上路
帖 子:665
专家分:3
注 册:2018-1-4
收藏
得分:0 
@wengjl 非常感谢!但程序仍有一点问题,一是生成的个人课表课未排全,二是课程有张冠李戴现象,三是程序运行到最后提示已到文件尾(skip 1)。
2019-05-05 21:00
快速回复:VFP如何调用个人课表模板文件,一页纸上生成两张个人课表
数据加载中...
 
   



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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021103 second(s), 11 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved