标题:如何将vfp查询的结果逐行写入word文档中
只看楼主
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:40
帖 子:749
专家分:2475
注 册:2011-5-8
得分:0 
程序代码:
CLEAR
CREATE CURSOR kbtmp (jsmc c(10),skcs i,rw c(254))  &&如果内容太多可用CREATE CURSOR kb (jsmc c(10),skcs i,rw m)
*APPEND BLANK

SELECT jsmd
GOTO top
rkmc=""
SCAN
    cxm=ALLTRIM(xm)
    iskcs=0&&上课次数
*    ?cxm,
    rkmc=cxm+","
    SELECT jsrkb
    GOTO top
    SCAN
        FOR i=1 TO 18
            m=FIELD(i)
            xm2= &m.
            
            IF ALLTRIM(xm2)==cxm &&不用== alltr()意义不太
                rkmc=rkmc+FIELD(i)+nj+bj+',' 
                iskcs=iskcs+1           
            ENDIF
        NEXT i
    ENDSCAN
*    ?rkmc

 *   WAIT 
     IF iskcs>0  &&无课的不统计
         SELECT kbtmp
         APPEND BLANK 
         REPLACE jsmc WITH cxm,skcs WITH iskcs,rw WITH rkmc
     endif
    SELECT jsmd
ENDSCAN
SELECT kbtmp
REPLACE rw WITH ALLTRIM(STR(RECNO()))+''+rw ALL 
COPY TO 课表  FIELDS rw sdf


基本是这样了。
上面输入结果有多余空格和‘,’。下面这样就好了。
程序代码:
CLEAR
CREATE CURSOR kbtmp (rw m)
APPEND BLANK
IF !USED('jsmd')
    USE jsmd IN 0
ENDIF
IF !USED('jsrkb')
    USE jsrkb IN 0
ENDIF

SELECT jsmd
GOTO top
rkmc=""
xh=0
SCAN
    cxm=ALLTRIM(xm)
    iskcs=0&&上课次数

    rkmc=cxm+","
    SELECT jsrkb
    GOTO top
    SCAN
        FOR i=1 TO 18
            m=FIELD(i)
            xm2= &m.
            
            IF ALLTRIM(xm2)==cxm &&不用== alltr()意义不太
                rkmc=rkmc+FIELD(i)+nj+bj+',' 
                iskcs=iskcs+1           
            ENDIF
        NEXT i
    ENDSCAN
     IF iskcs>0  &&无课的不统计
         xh=xh+1
         rkmc= ALLTRIM(STR(xh))+''+LEFT(rkmc,RAT(',',rkmc)-1)+CHR(13)+CHR(10)
         SELECT kbtmp
         REPLACE rw WITH rw+rkmc
     endif
    SELECT jsmd
ENDSCAN
SELECT kbtmp
COPY MEMO rw TO 课表
CLEAR
CREATE CURSOR kbtmp (rw m)
APPEND BLANK
IF !USED('jsmd')
    USE jsmd IN 0
ENDIF
IF !USED('jsrkb')
    USE jsrkb IN 0
ENDIF

SELECT jsmd
GOTO top
rkmc=""
xh=0
SCAN
    cxm=ALLTRIM(xm)
    iskcs=0&&上课次数

    rkmc=cxm+","
    SELECT jsrkb
    GOTO top
    SCAN
        FOR i=1 TO 18
            m=FIELD(i)
            xm2= &m.
            
            IF ALLTRIM(xm2)==cxm &&不用== alltr()意义不太
                rkmc=rkmc+FIELD(i)+nj+bj+',' 
                iskcs=iskcs+1           
            ENDIF
        NEXT i
    ENDSCAN
     IF iskcs>0  &&无课的不统计
         xh=xh+1
         rkmc= ALLTRIM(STR(xh))+''+LEFT(rkmc,RAT(',',rkmc)-1)+CHR(13)+CHR(10)
         SELECT kbtmp
         REPLACE rw WITH rw+rkmc
     endif
    SELECT jsmd
ENDSCAN
SELECT kbtmp
COPY MEMO rw TO 课表


[此贴子已经被作者于2020-3-19 13:52编辑过]


dBase有人接盘了。
2020-03-19 13:39
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
得分:0 
谢谢你!是这样的数据,但美中不足的是:1、班主任要显示在所有学科前面;2、能否用word文档表示。
2020-03-19 13:44
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
得分:0 
如何统计每位老师每周上课节数
如何根据教师名单jsmd.dbf、学校日课总表rkzb201803.dbf和教师仼课表jsrkb.dbf自动统计出每位教师每周课时数,并生成到word文档打印输出,望高手不吝赐教,万分感谢!!!
scgrkb.rar (46.15 KB)
2020-03-20 09:22
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:40
帖 子:749
专家分:2475
注 册:2011-5-8
得分:15 
回复 12楼 王咸美
TXT用WORD可以打开啊。除非有格式要求,文本格式是最好的,通用性能好。如有打印格式要求,需要有模板格式说明。
班主任信息在哪?
是这样吗?
1、周爱华:一(1)班主任,一(1)道德,一(1)语文,一(1)语阅,一(1)自习1
2、陈文生:一(2)语文,一(2)语阅,一(2)自习1
3、方海娟:一(3)班主任,一(3)道德,一(3)语文,一(3)美术,一(3)语阅,一(3)自习1
4、葛苗苗:一(3)数学,一(3)自习2,一(4)班主任,一(4)数学,一(4)自习2
5、史长春:一(4)道德,一(4)语文,一(4)语阅,一(4)自习1,二(1)科学
6、施雨晗:一(5)班主任,一(5)道德,一(5)科学,一(5)语文,一(5)语阅,一(5)自习1
7、吴娟:二(1)班主任,二(1)语文,二(1)音乐,二(1)语阅,二(1)自习1

程序代码:
CLEAR
CREATE CURSOR kbtmp (rw m)
APPEND BLANK
IF !USED('jsmd')
    USE jsmd IN 0
ENDIF
IF !USED('jsrkb')
    USE jsrkb IN 0
ENDIF

SELECT jsmd
GOTO top
rkmc=""
xh=0
SCAN
    cxm=ALLTRIM(xm)
    iskcs=0&&上课次数

    rkmc=cxm+":"
    SELECT jsrkb
    GOTO top
    SCAN
        FOR i=1 TO 18
            m=FIELD(i)
            xm2= &m.
            
            IF ALLTRIM(xm2)==cxm &&不用== alltr()意义不太
*                rkmc[color=#808080]=rkmc+FIELD(i)+nj+bj+',' [/color]
                rkmc=rkmc+LEFTc(nj,1)+LEFT(bj,AT('',bj)-1)+FIELD(i)+',' 
                iskcs=iskcs+1           
            ENDIF
        NEXT i
    ENDSCAN
     IF iskcs>0  &&无课的不统计
         xh=xh+1
         rkmc= ALLTRIM(STR(xh))+''+LEFT(rkmc,RAT(',',rkmc)-1)+CHR(13)+CHR(10)
         SELECT kbtmp
         REPLACE rw WITH rw+rkmc
     endif
    SELECT jsmd
ENDSCAN
SELECT kbtmp
REPLACE rw WITH STRTRAN(rw,'班会','班主任')
COPY MEMO rw TO 课表


[此贴子已经被作者于2020-3-20 13:50编辑过]


dBase有人接盘了。
2020-03-20 13:30
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
得分:0 
谢谢你!完全符合要求。
2020-03-20 14:25
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:40
帖 子:749
专家分:2475
注 册:2011-5-8
得分:0 
回复 15楼 王咸美
你打印课表的代码太吓人了。比手写还慢。似乎先生成打印用数据表,再统一写入Word中效果高些。

dBase有人接盘了。
2020-03-20 15:47
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
得分:0 
@xuminx 能提供关键简化代码吗?十分期盼!
2020-03-20 23:21
王咸美
Rank: 1
等 级:新手上路
帖 子:569
专家分:0
注 册:2018-1-4
得分:0 
@xuminxz 恳请提供关键部分代码,十分期盼!万分感谢!
2020-03-22 21:11



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-500419-1-1.html




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

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