| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 170 人关注过本帖, 1 人收藏
标题:下列代码如何修改?
只看楼主 加入收藏
王咸美
Rank: 1
等 级:新手上路
帖 子:734
专家分:3
注 册:2018-1-4
结帖率:97.75%
收藏(1)
已结贴  问题点数:20 回复次数:11 
下列代码如何修改?
下列代码如何修改?

原“课务分工.txt”格式如下:
001      曹文亮      一年级(2)班美术,四年级(3)班品社,计4节
 002      曹小虎      五年级(2)班科学,五年级(2)班数学,五年级(2)班信息,计8节
 003      曹艳      四年级(4)班科学,四年级(4)班数学,四年级(4)班体育,四年级(4)班信息,计10节
 004      陈杰      四年级(1)班英语,四年级(1)班劳动,四年级(1)班英阅,四年级(2)班英语,四年级(2)班劳动,四年级(2)班英阅,四年级(4)班英语,四年级(4)班劳动,四年级(4)班英阅,计15节
 005      陈金玉      四年级(6)班班会,四年级(6)班语文,四年级(6)班美术,四年级(6)班信息,四年级(6)班语阅,计11节

现“课务分工2025.txt”格式如下:
1     曹文亮:一(2)美术,四(3)品社,计4节
2     曹小虎:五(2)科学,五(2)数学,五(2)信息,计8节
3     曹艳:四(4)科学,四(4)数学,四(4)体育,四(4)信息,计10节
4     陈杰:四(1)英语,四(1)劳动,四(1)英阅,四(2)英语,四(2)劳动,四(2)英阅,四(4)英语,四(4)劳动,四(4)英阅,计15节
5     陈金玉:四(6)班会,四(6)语文,四(6)美术,四(6)信息,四(6)语阅,计11节

如何修改下列代码,由“课务分工2025.txt”生成各班教师任课表(jsrkb.dbf)?请高手赐教,万分感谢!!!

Local cc, ii
Local c科目, c班级, c分工, c教师
Local array a字段[1], a科目[1], aTemp[1]

Close Databases
Create cursor 任课表 (序号 I, 班级 V(20))
c科目 = '班会,道法,品社,科学,语文,数学,英语,体育,音乐,美术,劳动,信息,综合,语阅,英阅,自习1,自习2'
For ii = 1 to ALines(m.a科目, m.c科目, 1+4, ',')
    m.c科目 = m.a科目[m.ii]
    Alter table 任课表 add column &c科目 V(10)
EndFor
Index on 班级 tag 班级

Create Cursor 课务分工 (序号 V(3), 教师 V(10), 分工 V(254))
Append From 课务分工.txt DELIMITED with tab
Scan all
    m.c教师 = 教师
    m.c分工 = Strtran(分工, ',', ',')
    For ii = 1 to ALines(aTemp, m.c分工, 1+4, ',')
        m.cc = aTemp[m.ii]
        If Like('??年级(*)班*', m.cc)
            m.c班级 = StrExtract(m.cc, '', '班', 1, 4)
            m.c科目 = Strtran(m.cc, m.c班级, '')
            If !Seek(m.c班级, '任课表')
                Insert into 任课表 (班级) Values (m.c班级)
            EndIf
            Replace next 1 (m.c科目) with m.c教师 in 任课表
        EndIf
    EndFor
EndScan
Use in 课务分工

Update 任课表 set 序号 = Val(Chrtranc(Leftc(班级,1), '一二三四五六', '123456'))*1000 ;
                        + Val(StrExtract(班级,'(',')'))
Select * from 任课表 order by 序号 into dbf jsrkb
Use in 任课表
Alter table jsrkb alter column 序号 V(3)
Update jsrkb set 序号 = Padl(Recno(), 3, '0')
Locate
Browse nowait



4 天前 16:27
王咸美
Rank: 1
等 级:新手上路
帖 子:734
专家分:3
注 册:2018-1-4
收藏
得分:0 
关键是这几行代码如何修改
      If Like('??年级(*)班*', m.cc)
            m.c班级 = StrExtract(m.cc, '', '班', 1, 4)
            m.c科目 = Strtran(m.cc, m.c班级, '')
4 天前 17:19
王咸美
Rank: 1
等 级:新手上路
帖 子:734
专家分:3
注 册:2018-1-4
收藏
得分:0 
代码修改为下列语句(不起作用)

      If Like('*(*)*', m.cc)
            m.c班级 = StrExtract(m.cc, '', ' )',1, 4)
            m.c科目 = Strtran(m.cc, m.c班级, '')
3 天前 16:58
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:780
专家分:3058
注 册:2018-3-13
收藏
得分:0 
现在你的 txt 变了,原来是 tab 分隔的三列,现在教师与分工合并了,只有两列,append from ... with tab 导入时当然会丢数据

这家伙很懒,啥也没留下
3 天前 19:59
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:780
专家分:3058
注 册:2018-3-13
收藏
得分:0 
以下是引用王咸美在2025-4-16 16:58:43的发言:
      If Like('*(*)*', m.cc)
            m.c班级 = StrExtract(m.cc, '', ' )',1, 4)
            m.c科目 = Strtran(m.cc, m.c班级, '')
这里没错

但是你的 txt 格式变了,原来是 tab 分隔的三列,现在教师与分工合并了,只有两列
从 append from ... with tab 这里开始,导入就丢数据了

这家伙很懒,啥也没留下
3 天前 20:15
王咸美
Rank: 1
等 级:新手上路
帖 子:734
专家分:3
注 册:2018-1-4
收藏
得分:0 
怎么改?盼指点!谢谢!
3 天前 20:57
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:780
专家分:3058
注 册:2018-3-13
收藏
得分:18 
程序代码:
Local ii
Local c科目, c分工, c班级, c教师
Local array a科目[1], a分工[1]

Close Databases

Create cursor 任课表 (序号 I, 班级 V(15))
c科目 = '班会,道法,品社,科学,语文,数学,英语,体育,音乐,美术,劳动,信息,综合,语阅,英阅,自习1,自习2'
For ii = 1 to ALines(m.a科目, m.c科目, 1+4, ',')
    m.c科目 = m.a科目[m.ii]
    Alter table 任课表 add column &c科目 V(8)
EndFor
Index on 班级 tag 班级

Create Cursor 课务分工 (序号 V(3), 分工 V(254), 教师 V(8))
Append From 课务分工2025.txt delimited with tab
Update 课务分工 set 分工 = Strtran(分工, '', ':')
Update 课务分工 set 教师 = GetWordNum(分工, 1, ':'), 分工 = GetWordNum(分工, 2, ':')

Scan all for !Empty(教师)
    m.c教师 = 教师
    m.c分工 = Strtran(分工, '', ',')
    For ii = 1 to ALines(m.a分工, m.c分工, 1+4, ',')
        m.c分工 = m.a分工[m.ii]
        If Like('??(*)*', m.c分工)
            m.c班级 = StrExtract(m.c分工, '', '', 1, 4)
            m.c科目 = Strtran(m.c分工, m.c班级, '')
            If !Seek(m.c班级, '任课表')
                Insert into 任课表 (班级) Values (m.c班级)
            EndIf
            Replace next 1 (m.c科目) with m.c教师 in 任课表
        EndIf
    EndFor
EndScan
Use in 课务分工

Update 任课表 set 序号 = Val(Chrtranc(Leftc(班级,1), '一二三四五六', '123456'))*1000 ;
                        + Val(StrExtract(班级,'',''))
Update 任课表 set 班级 = Transform(班级+Space(2), '@R XX年级XXXXX班')
Select * from 任课表 order by 序号 into dbf jsrkb
Use in 任课表
Update jsrkb set 序号 = Recno()
Locate
Browse nowait

这家伙很懒,啥也没留下
前天 12:48
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:109
帖 子:2279
专家分:4091
注 册:2007-4-27
收藏
得分:2 
以下是引用王咸美在2025-4-16 16:58:43的发言:

代码修改为下列语句(不起作用)

      If Like('*(*)*', m.cc)
            m.c班级 = StrExtract(m.cc, '', ' )',1, 4)
            m.c科目 = Strtran(m.cc, m.c班级, '')


关键是你没理解  *(*)*       ??(*)*    二者的区别

只求每天有一丁点儿的进步就可以了
前天 12:53
王咸美
Rank: 1
等 级:新手上路
帖 子:734
专家分:3
注 册:2018-1-4
收藏
得分:0 
谢谢!非常感谢!!!
前天 13:59
王咸美
Rank: 1
等 级:新手上路
帖 子:734
专家分:3
注 册:2018-1-4
收藏
得分:0 
如果将原“班级”字段拆分成两个字段:年级、班级,格式如下
年级    班级
一年级 (1)班

代码如何变通?请予指点!谢谢!
前天 16:13
快速回复:下列代码如何修改?
数据加载中...
 
   



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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032667 second(s), 10 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved