注册 登录
编程论坛 VFP论坛

不是来引战的。请大家看看我适合学VFP还是ACCESS

izhuce 发布于 2021-10-16 08:56, 4433 次点击
现在需要处理学生成绩,计算班优秀生、单科有效优秀生、班内部分学生的平均分等。
以前学过一点VFP的皮毛,觉得VFP编程语言还算好学,因为微软停更的原因,打算转学ACCESS,不知ACCESS从成绩表中提取各种数据也要编程吗?编程用的什么语言,直接用SQL吗?VBA看着就头疼。
28 回复
#2
独木星空2021-10-16 10:12
回复 楼主 izhuce
这就要看你对那个更感兴趣了。兴趣是最好的老师。我最早是接触的Excel,对于里面的函数应用较多,所以转化成vfp或许容易些。再就是对素数问题非常感兴趣,这就有了很好的编程素材。想解决问题,你就得沉下心来钻进去,只有那样你才可能打开未知世界的大门。如果一看就头疼,头大,干脆别进去,进去也是失望,拿最感兴趣的东西入手,会很快进入状态的。
    祝你好运!

[此贴子已经被作者于2021-10-16 10:13编辑过]

#3
sam_jiang2021-10-16 10:19
access也可以做数据库的应用程序,同样可以做得很漂亮,但是不可以脱离access运行。所以没有foxpor有成就感。
#4
xuminxz2021-10-16 12:47
如果学过VB可以用Access
#5
gs25367856782021-10-17 08:53
朋友请看一看,我就是经常用VFP处理成绩数据,然后把处理的结果,在EXCEL中表达
只有本站会员才能查看附件,请 登录

#6
xs5912222021-10-17 09:22
VFP与ACCESS都是工具,有哪个用哪个,哪个熟练用哪个嘛!
在这坛里混的人,大多是熟练VFP的,当然说是VFP方便些,对吧!
#7
xuminxz2021-10-17 20:36
回复 5楼 gs2536785678
你现在的数据是图片还要文字识别,而且是Excel的,最好把原始DFB数据拿出来,。
#8
xuminxz2021-10-17 22:18
回复 5楼 gs2536785678
不知道你的表结构是什么样的。猜了一个,要求名字与成绩之间至少有一个空格。
只有本站会员才能查看附件,请 登录

如果有原始学生成绩表反而好做。如果对Excel输出有要求可以做一个模板文件(不是图片)

[此贴子已经被作者于2021-10-17 22:22编辑过]

#9
hlizard12021-10-18 09:04
仅从你提的这些需求来看写sql就能解决了, 甚至excel公式也可以; 如果已经接触过vfp建议继续vfp做, 以后需求增加了也好扩展, 至于你说的微软已停更这个因素, 我觉得不是公司使用都不用考虑, 毕竟你也不用考虑招不到人接手.
#10
gs25367856782021-10-18 14:05
回复七楼 xuminxz
只有本站会员才能查看附件,请 登录

打开压缩文件,里面的EXCEL文件,从左到右,最左是原始数据
根据原始数据,通过自制的VFP程序产生产生另外两个页面
只有本站会员才能查看附件,请 登录

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

只有本站会员才能查看附件,请 登录
#11
izhuce2021-10-24 22:16
回复 10楼 gs2536785678
您是VFP的高手啊!下面这个链接是我发在ACCESS区的,请移步看一下,刚摸索了几天ACCESS,还没找到解决方法,不知VFP能实现吗?
https://bbs.bccn.net/thread-507280-1-1.html
#12
如歌岁月2021-10-25 08:24
#13
gs25367856782021-10-25 08:45
回复 izhuce
已经看过了,你上传的文件
只有本站会员才能查看附件,请 登录

版本太高,我这里无法打开。

这是用我的数据创作的程序,请收下
只有本站会员才能查看附件,请 登录

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


[此贴子已经被作者于2021-10-25 09:57编辑过]

#14
izhuce2021-10-25 16:50
回复 13楼 gs2536785678
谢谢,我学习学习
#15
Bc_Newboy2021-10-25 17:05
个人觉得VFP毕竟是专门的数据库应用工具,比ACCESS好。我在用ACCESS的过程中,发现ACCESS部分数据类型,例如时间类型,和其他数据库不一样,转换是个问题。当然如果你基本只对excel数据源导入导出, 用ACCESS方便很多。
#16
xuminxz2021-10-25 22:07
回复 11楼 izhuce
按你提供的数据库,看不到班级信息。刚好和我以前在录取通知书中夹的成绩条类似,基本没改就是那个样子的。
现在看来,你的原始数据是区、市或学校统考下发的吧?
建议你提问题时,最好将你的最终目的说清楚。有可能最好,把原始数据放上来涉及到安全问题的信息可以改成无意义的,数据可以少,几条几十条就可以,但是数据结构要完整。
下面仅供参考。
只有本站会员才能查看附件,请 登录

程序代码:
CLOSE TABLES all
SET SAFETY OFF
SELECT distinct 班级,标签,考生号,姓名 FROM cjzb INTO CURSOR cjtmp WHERE .f. READWRITE
ALTER table cjtmp ADD km c(6)
ALTER table cjtmp ADD kmcj n(4,1)
ALTER table cjtmp ADD mc i
SELECT distinc 班级,考生号  FROM cjzb INTO CURSOR xstmp ORDER BY 班级,考生号
SCAN
    cksh=ALLTRIM(考生号)
    FOR i=0 TO 5
        SELECT 班级,标签,考生号,姓名,FIELD(2*i+4) km, EVALUATE(FIELD(2*i+4)) kmcj,EVALUATE(FIELD(2*i+5)) mc FROM cjzb  INTO dbf ls WHERE ALLTRIM(考生号)==cksh AND EVALUATE(FIELD(2*i+4))>0
        IF _tally=0
            LOOP
        ENDIF
    SELECT cjtmp
    APPEND FROM ls
    ENDFOR
ENDSCAN
SELECT DISTINCT 班级,km FROM cjtmp INTO CURSOR mpmp
SELECT  班级,标签,考生号,姓名,km 科目1,kmcj 成绩1,mc 名次1 FROM cjtmp INTO CURSOR cj1tmp WHERE MOD(RECNO(),3)=1
SELECT  考生号 ksh1,km 科目2,kmcj 成绩2,mc 名次2 FROM cjtmp INTO CURSOR cj2tmp WHERE MOD(RECNO(),3)=2
SELECT  考生号 ksh2,km 科目3,kmcj 成绩3,mc 名次3 FROM cjtmp INTO CURSOR cj3tmp WHERE MOD(RECNO(),3)=0
SELECT cj1tmp.*,科目2,成绩2,名次2,科目3,成绩3,名次3 FROM cj1tmp JOIN cj2tmp ON 考生号=ksh1 JOIN cj3tmp ON ksh1=ksh2 INTO CURSOR dccjtmp
COPY TO cj xl5



[此贴子已经被作者于2021-10-25 22:38编辑过]

#17
izhuce2021-10-26 02:23
回复 16楼 xuminxz
谢谢!也看了你在ACCESS区的回答,是不是处理学校成绩这种简单应用,VFP更灵活简单啊?ACCESS的编程要用 VBA 吧,处理数据来说,不知和VFP的编程哪个容易学?

本来以为不动原始数据表,只在创建报表时对数据处理进行就能达到目的,正好看到ACCESS的报表设计里可以对文本框的数据来源用函数和代码,就想着问一问。
再次感谢。

原始数据大体如下面文件,一般每个班级只有一种选科,但有的学生有中意的班级,所以3种选科,设了2个班级。
只有本站会员才能查看附件,请 登录

上面的代码最终生成的是EXCEL文件吧?我是想生成报表(报表也能用代码生成吧?感觉报表的打印格式更美观,更适合大量数据的分组打印),印发到每个班,格式大概如下(只打印学生考试的三科,其他不打印),图中的科目一、科目二等能不能根据实际显示相应科目
只有本站会员才能查看附件,请 登录



[此贴子已经被作者于2021-10-26 04:15编辑过]

#18
xuminxz2021-10-26 07:42
回复 17楼 izhuce
个人感觉VFP对数据库中的数据进行加工处理比较方便。打印我习惯用报表,Access与VFP都可做报表。VFP通过对打印条件的控制,可以作出适用多种情况的复杂报表。那个区里的是VFP报表。这个数据处理过了,用最后那个临时表,很容易作出报表。
如果只要报表,你这个问题,甚至可以直接用cjzb.dbf打印。思路如下:
报表按班级分组,细节区前面正常编写。后三门课根据组合(标签)种类,设置多层数据控件。根据标签决定打印哪一层就可以了。
最后说一下精细的报表作起来很费时间,也有很多技巧,需要自己练习。我几乎从不用Excel打印,最低要求也会复制到Word中,但我的一个同事,用各种技巧,在Excel可以做出很好看的报表。
#19
wengjl2021-10-26 08:08
我最爱EXCEL的打印时的自由缩放功能 ......
#20
gs25367856782021-10-26 09:12
我一般不用VFP自带的报表功能,而是把VFP程序运算的结果,输出到EXCEL
第一,输出的结果可以再次审核修改
第二,输出的结果方便携带保存。
#21
izhuce2021-10-26 09:12
回复 18楼 xuminxz
谢谢!
那我转头研究VFP去了
#22
izhuce2021-10-26 09:15
回复 19楼 wengjl
Excel也不是很熟,分组打印只知道用数据分类汇总。希望学好 VFP 或 ACCESS 能用程序自动完成一些操作。
#23
gs25367856782021-10-26 09:15
你还是那个熟悉用那个,不用听这听那的。群里很多人其实都是VFP研究很多年的大蟹,自然说VFP好。
#24
xuminxz2021-10-26 16:45
这个应该可以,数据表不需要改,报表用EVALUATE( ) 动态调用字段。用了vfp自带的foxtools.fll中的wordnum()。这个简单,也可以用其它的内部函数代替。
只有本站会员才能查看附件,请 登录
#25
xuminxz2021-10-26 16:53
如果原成绩没有排序,可以用下面的代码
程序代码:
CLOSE TABLES all
SET LIBRARY TO  "C:\Program Files (x86)\Microsoft Visual FoxPro 9\foxtools.fll"
SELECT 物理+化学+生物+历史+地理+政治 总成绩,* FROM cjzb INTO CURSOR dycjtmp ORDER BY 班级,考生号 READWRITE

REPLACE  选修科目 WITH '' all
DIMENSION kmzdh(6)
j=0
FOR i=1 TO FCOUNT()
    IF OCCURS(FIELD(i),'物理化学生物历史地理政治')>0
        j=j+1
        kmzdh(j)=FIELD(i)
    ENDIF
ENDFOR
FOR i=1 TO 6
    REPLACE 选修科目 WITH ALLTRIM(选修科目)+' '+kmzdh(i) for EVALUATE(kmzdh(i))>0
ENDFOR
REPLACE 选修科目 WITH ALLTRIM(选修科目) all
REPORT FORM 成绩分析表 TO PRINTER PROMPT  PREVIEW
#26
izhuce2021-10-27 10:35
回复 23楼 gs2536785678
毕业这么多年光修计算机去了,软件都荒废了,现在是哪个都不熟,最近看了7、8天ACCESS的视频,试着用ACCESS呢
#27
izhuce2021-10-27 10:40
回复 25楼 xuminxz
谢谢哦,还是VFP这边人气高,大家也热心。
昨天又研究了半天,终于在ACCESS里搞好了打印问题,排序还不会,正好参考下你的代码。再学一个月ACCESS,搞不好再来学VFP
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录
#28
sam_jiang2021-10-27 10:41
回复 26楼 izhuce
我觉得还是foxpro好过access,印象里access我身边就没有人用过。

---印象里access好像不能分发程序,只能在access里运行,不知道后来有没有改变?Foxpro应用程序可以脱离foxpro独自运行在没有FoxPro的电脑上。

[此贴子已经被作者于2021-10-27 10:43编辑过]

#29
izhuce2021-10-27 15:27
回复 28楼 sam_jiang
好像ACCESS确实不能脱离ACCESS软件运行,不过现在我想找个上手快的。觉得ACCESS发展这么多年了,对新手应该更友好。
1