注册 登录
编程论坛 VFP论坛

如何将 课务分工20190101.txt文件写入jsrkb1.dbf中

王咸美 发布于 2022-03-02 12:07, 2301 次点击
现有 课务分工20190101.txt文件和jsrkb1.dbf(空表),如何将 课务分工20190101.txt文件写入jsrkb1.dbf中,请高手赐教,万分感谢!!!
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录
13 回复
#2
wengjl2022-03-02 14:34
王老师:
一、感觉很奇怪,制作分工表的时候,为什么不用EXCEL?

二、我能想到的思路:
1、将文本文件中的复制到EXCEL中,成为3列,1列序号,2列姓名,3列是年级及学科名
2、在DBF中,将第3列的内容,依据规律分3列,一列年级、一列班级、一列学科,多条记录
3、再转移到你的jsrkb1.dbf上
第1步在EXCEL2003中只要手工另存为 DBF 即可,简单
第2步、第3步需要各写一段PRG代码,有一点难度。
#3
fyyylyl2022-03-02 16:07
代码可能不完美,但结果应该是你要的吧?
只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2022-3-2 16:19编辑过]

#4
wengjl2022-03-02 16:56
@fyyylyl 你给了鱼,而“王咸美”想要的是 渔。把你的 渔 ,贴上来吧
#5
wengjl2022-03-02 20:03
只有本站会员才能查看附件,请 登录

LS.DBF里存放着从TXT-EXCEL-另存过来的信息
依次执行“程序1.PRG”、“程序2.PRG”,后看结果
代码是按2楼的思路来写的
#6
sdta2022-03-02 22:38
程序代码:
CLOSE DATABASES
USE jsrkb1
ZAP
INDEX ON nj + bj TAG njbj
lcStr = FILETOSTR("课务分工20190101.txt")
ALINES(laStr, lcStr, 4 + 1)
FOR ln1 = 1 TO ALEN(laStr, 1)
    FOR ln2 = 3 TO ALINES(la, laStr[ln1], 4 + 1, ",", CHR(9)) - 1
        lcnj = STREXTRACT(la[ln2], "", "(")
        lcbj = "(" + STREXTRACT(la[ln2], "(", "班") + "班"
        lckc = STREXTRACT(la[ln2],"班", "")
        IF SEEK(lcnj + lcbj, "jsrkb1") = .T.
            REPLACE (lckc) WITH la[2]
        ELSE
            APPEND BLANK
            REPLACE nj WITH lcnj, bj WITH lcbj, (lckc) WITH la[2]
        ENDIF
    ENDFOR
ENDFOR
SELECT *, 0 xh FROM jsrkb1 INTO CURSOR lsb READWRITE
REPLACE xh WITH ICASE(LEFT(nj, 2) == "一", 1,LEFT(nj, 2) == "二", 2, LEFT(nj, 2) == "三", 3, LEFT(nj, 2) == "四", 4,LEFT(nj, 2) == "五", 5, 6) ALL
SELECT * FROM lsb ORDER BY xh, nj, bj


#7
王咸美2022-03-03 06:04
谢谢各位老师的鼎力相助!抽空认真学习。如能在关键处加上注释就更完美了。

[此贴子已经被作者于2022-3-3 06:07编辑过]

#8
王咸美2022-03-03 09:12
@sdta 非常感谢指点!!!美中不足的是生成的jsrkb1.dbf未能按nj和bj排序,显得有点乱。能否按nj和bj进行排序,还请帮忙解决。
#9
laowan0012022-03-03 10:49
有了结果,按需要order by 即可
#10
sdta2022-03-03 12:14
以下是引用王咸美在2022-3-3 09:12:01的发言:

@sdta 非常感谢指点!!!美中不足的是生成的jsrkb1.dbf未能按nj和bj排序,显得有点乱。能否按nj和bj进行排序,还请帮忙解决。

只有本站会员才能查看附件,请 登录
#11
王咸美2022-03-03 12:56
如果是下图所示的“课程分工20190101.txt”代码又如何写呢?望高手赐教!不胜感谢!!!
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录
#12
sdta2022-03-03 18:18
回复 11楼 王咸美
举一凡三,触类旁通。
#13
王咸美2022-03-03 19:05
@Sdta 是否只要改动这一句代码?如何改?望赐教!

FOR ln2 = 3 TO ALINES(la, laStr[ln1], 4 + 1, ",", CHR(9)) - 1
#14
wengjl2022-03-05 20:25
应当是先改改试试,看一下结果,实现了就不用再来问了,或者把改试实现结果的过程发上来,共享,共同进步!
1