| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1181 人关注过本帖
标题:急 修改代码
只看楼主 加入收藏
久久旺达
Rank: 2
等 级:论坛游民
威 望:1
帖 子:201
专家分:12
注 册:2013-4-10
结帖率:88.14%
收藏
已结贴  问题点数:18 回复次数:17 
急 修改代码
LOCAL query_tmp1
query_tmp1=thisform.grid1.RecordSource
IF EOF(query_tmp1)
    RETURN
ENDIF
SELECT (query_tmp1)
SCATTER memv
SELECT 报名数据库
LOCATE FOR ALLTRIM(学生姓名)==ALLTRIM(M.学生姓名) AND ALLTRIM(身份证)==ALLTRIM(m.身份证)
IF FOUND()
    m.学生代码=学生代码
ELSE
    APPEND BLANK
    m.学生代码=PADL(CEILING(RECCOUNT()/50),2,'30')+PADL(iif(RECCOUNT()%50=0,50,RECNO()%50),2,'0')
ENDIF
GATHER memv
SELECT (query_tmp1)
REPLACE 学生代码 WITH m.学生代码
REPORT FORM 报表1  RECORD RECNO()  preview
GO TOP IN (query_tmp1)
    这一个代码在打印的时候是从30场开始打印的 当打印到39考场的时候就又从1001开始打印了 不知道那里出现问题了请老师们看看)
搜索更多相关主题的帖子: 身份证 数据库 报名 姓名 
2014-05-10 09:49
久久旺达
Rank: 2
等 级:论坛游民
威 望:1
帖 子:201
专家分:12
注 册:2013-4-10
收藏
得分:0 
这一个代码在打印的时候是从31场开始打印的 当打印到39考场的时候就又从1001开始打印了 不知道那里出现问题了请老师们看看
2014-05-10 09:49
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:9 
以楼主的代码:m.学生代码=PADL(CEILING(RECCOUNT()/50),2,'30')+PADL(iif(RECCOUNT()%50=0,50,RECNO()%50),2,'0') 为例,分析如下:

1. 若当前表的记录数 reccount()=450 时
   ceiling(recc()/50)=9
   padl(9,2,'30')='39'
   后半部分的 PADL(iif(RECCOUNT()%50=0,50,RECNO()%50),2,'0')='50'
   则:m.学生代码 = '3950'

2. 当表的记录数增加到 451 时
   ceiling(recc()/50)=10
   padl(10,2,'30')='10'
   后半部分的 PADL(iif(RECCOUNT()%50=0,50,RECNO()%50),2,'0')='01'
   m.学生代码='1001'

不知道楼主是否看清了问题所在?

泉城飞狐
2014-05-10 10:42
久久旺达
Rank: 2
等 级:论坛游民
威 望:1
帖 子:201
专家分:12
注 册:2013-4-10
收藏
得分:0 
本来是50人一考场的数据  从0101开始到0150  满50人就顺延到第二考场0201开始到0250 以此类推  因为需要多台机器一块报名 所以就把 源代码里面的 m.学生代码=PADL(CEILING(RECCOUNT()/50),2,'0')+PADL(iif(RECCOUNT()%50=0,50,RECNO()%50),2,'0')   红色的0 改成30了 打印是从3101开始的  结果当打印到39场3950号码以后再打印的时候就成1001了,从40场就不能顺延打印了,老师能否给帮忙修改一下具体的代码,直接把这一句代码修改一下。谢谢
2014-05-10 11:46
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:0 
将 m.学生代码=PADL(CEILING(RECCOUNT()/50),2,'30')+PADL(iif(RECCOUNT()%50=0,50,RECNO()%50),2,'0')
改为:m.学生代码=STR(CEILING(RECCOUNT()/50)+30,2)+PADL(iif(RECCOUNT()%50=0,50,RECNO()%50),2,'0') 可适应 3450 以内的考生

泉城飞狐
2014-05-10 12:37
久久旺达
Rank: 2
等 级:论坛游民
威 望:1
帖 子:201
专家分:12
注 册:2013-4-10
收藏
得分:0 
我现在的报名已经从40场开始了(4001---), 按照你上边的方法改过代码 是不是打上几场以后就又不能打印了,还要再修改代码吗
谢谢
2014-05-10 13:20
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:0 
这和你的编码规则有关。对于一个 4 位长度的编码,前 2 位表示考场号,考场号又是从 31 开始的,所以最多只能编到 9949,可对 3450 名考生进行编号。若要再编号,需要增加编码长度,或用字母与数字的结合来编码,比如:对于第 3451 个考生,其编码可以是 A101。

泉城飞狐
2014-05-10 13:29
久久旺达
Rank: 2
等 级:论坛游民
威 望:1
帖 子:201
专家分:12
注 册:2013-4-10
收藏
得分:0 
m.学生代码=STR(CEILING(RECCOUNT()/50)+39,2)+PADL(iif(RECCOUNT()%50=0,50,RECNO()%50),2,'0')   现在我是从40场开始 就目前这个编码 能不能先打印到第60场50个学生也就是6050这个号码呀 ,主要是现在正在招生 出现问题了 ,以后再慢慢调吧
2014-05-10 13:43
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:9 
先说下这段代码要达到的功能

[ 本帖最后由 sdta 于 2014-5-10 13:48 编辑 ]

坚守VFP最后的阵地
2014-05-10 13:46
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
m.学生代码=PADL(CEILING(RECCOUNT()/50),2,'30')+PADL(iif(RECCOUNT()%50=0,50,RECNO()%50),2,'0')
编码规则是什么,下面代码是什么意思
PADL(CEILING(RECCOUNT()/50),2,'30')
PADL(iif(RECCOUNT()%50=0,50,RECNO()%50),2,'0')

坚守VFP最后的阵地
2014-05-10 13:50
快速回复:急 修改代码
数据加载中...
 
   



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

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