标题:不是来引战的。请大家看看我适合学VFP还是ACCESS
只看楼主
izhuce
Rank: 2
等 级:论坛游民
帖 子:25
专家分:12
注 册:2014-3-20
得分:0 
回复 10楼 gs2536785678
您是VFP的高手啊!下面这个链接是我发在ACCESS区的,请移步看一下,刚摸索了几天ACCESS,还没找到解决方法,不知VFP能实现吗?
https://bbs.bccn.net/thread-507280-1-1.html
2021-10-24 22:16
如歌岁月
Rank: 1
等 级:新手上路
帖 子:28
专家分:4
注 册:2021-9-13
得分:0 
2021-10-25 08:24
gs2536785678
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:45
帖 子:565
专家分:1668
注 册:2017-7-16
得分:0 
回复 izhuce
已经看过了,你上传的文件

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

这是用我的数据创作的程序,请收下
选择性打印字段.rar (43.45 KB)



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

2021-10-25 08:45
izhuce
Rank: 2
等 级:论坛游民
帖 子:25
专家分:12
注 册:2014-3-20
得分:0 
回复 13楼 gs2536785678
谢谢,我学习学习
2021-10-25 16:50
Bc_Newboy
Rank: 2
等 级:论坛游民
帖 子:72
专家分:99
注 册:2019-4-14
得分:0 
个人觉得VFP毕竟是专门的数据库应用工具,比ACCESS好。我在用ACCESS的过程中,发现ACCESS部分数据类型,例如时间类型,和其他数据库不一样,转换是个问题。当然如果你基本只对excel数据源导入导出, 用ACCESS方便很多。
2021-10-25 17:05
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:40
帖 子:749
专家分:2475
注 册:2011-5-8
得分:0 
回复 11楼 izhuce
按你提供的数据库,看不到班级信息。刚好和我以前在录取通知书中夹的成绩条类似,基本没改就是那个样子的。
现在看来,你的原始数据是区、市或学校统考下发的吧?
建议你提问题时,最好将你的最终目的说清楚。有可能最好,把原始数据放上来涉及到安全问题的信息可以改成无意义的,数据可以少,几条几十条就可以,但是数据结构要完整。
下面仅供参考。
cjzb.rar (482 Bytes)

程序代码:
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编辑过]


dBase有人接盘了。
2021-10-25 22:07
izhuce
Rank: 2
等 级:论坛游民
帖 子:25
专家分:12
注 册:2014-3-20
得分:0 
回复 16楼 xuminxz
谢谢!也看了你在ACCESS区的回答,是不是处理学校成绩这种简单应用,VFP更灵活简单啊?ACCESS的编程要用 VBA 吧,处理数据来说,不知和VFP的编程哪个容易学?

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

原始数据大体如下面文件,一般每个班级只有一种选科,但有的学生有中意的班级,所以3种选科,设了2个班级。
考生成绩测试.zip (3.75 KB)

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



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

2021-10-26 02:23
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:40
帖 子:749
专家分:2475
注 册:2011-5-8
得分:0 
回复 17楼 izhuce
个人感觉VFP对数据库中的数据进行加工处理比较方便。打印我习惯用报表,Access与VFP都可做报表。VFP通过对打印条件的控制,可以作出适用多种情况的复杂报表。那个区里的是VFP报表。这个数据处理过了,用最后那个临时表,很容易作出报表。
如果只要报表,你这个问题,甚至可以直接用cjzb.dbf打印。思路如下:
报表按班级分组,细节区前面正常编写。后三门课根据组合(标签)种类,设置多层数据控件。根据标签决定打印哪一层就可以了。
最后说一下精细的报表作起来很费时间,也有很多技巧,需要自己练习。我几乎从不用Excel打印,最低要求也会复制到Word中,但我的一个同事,用各种技巧,在Excel可以做出很好看的报表。

dBase有人接盘了。
2021-10-26 07:42
wengjl
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:108
帖 子:2175
专家分:3785
注 册:2007-4-27
得分:0 
我最爱EXCEL的打印时的自由缩放功能 ......

只求每天有一丁点儿的进步就可以了
2021-10-26 08:08
gs2536785678
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:45
帖 子:565
专家分:1668
注 册:2017-7-16
得分:0 
我一般不用VFP自带的报表功能,而是把VFP程序运算的结果,输出到EXCEL
第一,输出的结果可以再次审核修改
第二,输出的结果方便携带保存。
2021-10-26 09:12



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




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

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