注册 登录
编程论坛 VFP论坛

求教:下列代码无法将“考生号”和“姓名”写入gkcj.dbf中

王咸美 发布于 2023-05-17 08:25, 73 次点击
只有本站会员才能查看附件,请 登录

下列代码无法将“0122012200.txt”中的“考生号”和“姓名”写入gkcj.dbf中,请高手赐教(仅限修改),万分感谢!!!

[0122012200.txt]
2014年重庆市全国普通高考成绩通知单 (涪陵区)

考生号

报名区县: 涪陵区

14500122119000 蒋文丽

报 名 点: 涪陵区招办报名点

成绩

总分 65: 语文 26 数学 15 外语 14 综合 10


2014年重庆市全国普通高考成绩通知单 (涪陵区)

考生号

报名区县: 涪陵区

14500122119001 杨浬

报 名 点: 涪陵区招办报名点

成绩

总分 145: 语文 73 数学 40 外语 27 综合 5

[具体代码如下]
CLOSE DATABASES
CLEAR all
cPath= ADDBS(JUSTPATH(SYS(16,1)))
SET Default TO (cPath)
lcStr=FILETOSTR("0122012200.txt")
CRCL=CHR(13)+CHR(10)
CREATE CURSOR gkcj (考生号 C(14),姓名 C(10),报名区县 C(10),报名点 C(20),总分 I,语文 I,数学 I,外语 I,综合 I)
FOR I=1 TO occurs("考生号",lcStr)
    lc考生号=STREXTRACT(lcStr,"考生号"+CRCL+CRCL,CRCL,I) &&这一句有问题
    INSERT INTO gkcj values(lc考生号,;
    STREXTRACT(lcStr,lc考生号+CRCL+" ",CRCL),;
     STREXTRACT(lcStr,"报名区县:",CRCL,i),;
     STREXTRACT(lcStr,"报 名 点:",CRCL,i),;
     VAL(STREXTRACT(lcStr,"总分",":",i)),;
     VAL(STREXTRACT(lcStr,"语文",CRCL,i)),;
     VAL(STREXTRACT(lcStr,"数学",CRCL,i)),;
     VAL(STREXTRACT(lcStr,"外语",CRCL,i)),;
     VAL(STREXTRACT(lcStr,"综合",CRCL,i)))
ENDFOR
GO top
BROWSE
 





[此贴子已经被作者于2023-5-17 09:21编辑过]

4 回复
#2
sdta2023-05-17 09:53
程序代码:
CLEAR
TEXT TO lcStr NOSHOW
2014年重庆市全国普通高考成绩通知单 (涪陵区)

考生号

报名区县: 涪陵区

14500122119000 蒋文丽

报 名 点: 涪陵区招办报名点

成绩

总分 65: 语文 26 数学 15 外语 14 综合 10


2014年重庆市全国普通高考成绩通知单 (涪陵区)

考生号

报名区县: 涪陵区

14500122119001 杨浬

报 名 点: 涪陵区招办报名点

成绩

总分 145: 语文 73 数学 40 外语 27 综合 5

ENDTEXT

CRCL=CHR(13)+CHR(10)
CREATE CURSOR gkcj (考生号 C(14),姓名 C(10),报名区县 C(10),报名点 C(20),总分 I,语文 I,数学 I,外语 I,综合 I)
FOR I=1 TO occurs("考生号",lcStr)
    lc考生号=STREXTRACT(lcStr,"考生号"+CRCL+CRCL,CRCL,I)
    ? lc考生号 && 第1次变化
    lc考生号=STREXTRACT(lcStr,lc考生号+CRCL+CRCL,CRCL,I)
    ? lc考生号 && 第2次变化
    lc姓名 = SUBSTR(lc考生号, 16)
    ? lc姓名 && 结果
    INSERT INTO gkcj values(lc考生号,;
    lc姓名,;
    STREXTRACT(lcStr,"报名区县:",CRCL,i),;
    STREXTRACT(lcStr,"报 名 点:",CRCL,i),;
    VAL(STREXTRACT(lcStr,"总分",":",i)),; && 总分后面是半角冒号
    VAL(STREXTRACT(lcStr,"语文",CRCL,i)),;
    VAL(STREXTRACT(lcStr,"数学",CRCL,i)),;
    VAL(STREXTRACT(lcStr,"外语",CRCL,i)),;
    VAL(STREXTRACT(lcStr,"综合",CRCL,i)))
ENDFOR
GO top
BROWSE
#3
王咸美2023-05-17 10:18
@sdta 谢谢!问题完美解决。
#4
吹水佬2023-05-17 10:21
程序代码:
CREATE CURSOR gkcj (考生号 C(14),姓名 C(10),报名区县 C(10),报名点 C(20),总分 I,语文 I,数学 I,外语 I,综合 I)
ALINES(arr,FILETOSTR("0122012200.txt"),15,0h0D,0h0A,0h20)
DIMENSION arr[ALEN(arr)/22,22]
FOR i=1 TO ALEN(arr,1)
    INSERT INTO gkcj VALUES (arr[i,6],arr[i,7],arr[i,5],arr[i,11],VAL(arr[i,14]),VAL(arr[i,16]),VAL(arr[i,18]),VAL(arr[i,20]),VAL(arr[i,22]))
ENDFOR
SELECT * FROM gkcj
#5
王咸美2023-05-17 14:56
@吹水佬 谢谢!0h0D,0h0A,0h20分别表示什么意思?不太明白。盼指点!

[此贴子已经被作者于2023-5-17 15:50编辑过]

1