| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2069 人关注过本帖
标题:关于自动编号的问题?
取消只看楼主 加入收藏
caolp
Rank: 1
等 级:新手上路
帖 子:160
专家分:5
注 册:2014-7-12
结帖率:92.31%
收藏
已结贴  问题点数:20 回复次数:10 
关于自动编号的问题?
请教老师一个问题,我想在每输入居民一条信息时,序号(XH)会自动增加1,序号(XH)设5位,我用下面的一段代码,每条记录序号(XH)的结果始终都是01000,请老师帮我分析一下。
IF EMPTY(序号)
SELECT MAX(序号) FROM 居民信息 INTO ARRA A
CEND=VAL(SUBSTR(A(1),1))+1
XH=ALLT(PADL(ALLT(STR(CEND,5)),5,'0'))
endif
repl 序号 with XH
搜索更多相关主题的帖子: 记录 信息 
2014-08-09 16:40
caolp
Rank: 1
等 级:新手上路
帖 子:160
专家分:5
注 册:2014-7-12
收藏
得分:0 
老师,还是不行,运行结果还是01000,是不是和数据类型有关系?我的序号是字符型的。
2014-08-09 17:14
caolp
Rank: 1
等 级:新手上路
帖 子:160
专家分:5
注 册:2014-7-12
收藏
得分:0 
尾数为什么不加1呢?
2014-08-09 17:29
caolp
Rank: 1
等 级:新手上路
帖 子:160
专家分:5
注 册:2014-7-12
收藏
得分:0 
以下是引用sdta在2014-8-9 19:11:04的发言:

CLOSE TABLES
USE 居民信息
APPEND BLAN
IF EMPTY(序号)
    SELECT MAX(序号) FROM 居民信息 INTO ARRA A
    CEND=INT(VAL(A)+1)
ENDIF
REPLACE 序号 WITH PADL(CEND,5,'0')
BROWSE
 
PADL(eExpression, nResultSize [, cPadCharacter])
参数eExpression指定需填充的表达式。除了逻辑表达式、通用字段或图片字段,这个表达式可以是任何类型的表达式。
因此在使用某个函数时,对其中参数的含义要弄明白。
谢谢老师帮忙,按您的方法,还是不行。代码没有错,问题出在那,我还是没有查出来。我把表传上来,麻烦老师帮我看看。
居民信息.rar (9.35 KB)
2014-08-09 20:25
caolp
Rank: 1
等 级:新手上路
帖 子:160
专家分:5
注 册:2014-7-12
收藏
得分:0 
以下是引用tlliqi在2014-8-9 20:42:01的发言:

一句即可
先把“序号”宽度设为5
UPDATE 居民信息 SET 序号=PADL(ALLT(STR(recno())),5,'0')
谢谢老师,按你的一句话,终于得到解决,再次谢谢!
2014-08-09 20:57
caolp
Rank: 1
等 级:新手上路
帖 子:160
专家分:5
注 册:2014-7-12
收藏
得分:0 
以下是引用sdta在2014-8-9 21:10:05的发言:

VFP中字符串比较,是根据其每个字符的ASC()返回值决定的
如:"078"->"0100"
            左边 关系 右边
第一个字符   0    =    0
第二个字符   7    >    0   
上述字符串比较到第二个字符时(比较到第N个字符不同),就能看出两边的字符的大小了,到此也就决出了胜负,所以"078">"0100"。
从上传的第二个表中可以看出,序号的最大值为[078],而不是[0101]。
为什么TONGDENG版主和我反复强调,让提问题的朋友上传原始文件,而不让其上传虚拟文件,因为只有通过原始文件才能看到存在的问题。希望大家引以为戒。
在此也感谢sdta老师的热心帮助!
2014-08-09 23:07
caolp
Rank: 1
等 级:新手上路
帖 子:160
专家分:5
注 册:2014-7-12
收藏
得分:0 
以下是引用tlliqi在2014-8-9 20:42:01的发言:

一句即可
先把“序号”宽度设为5
UPDATE 居民信息 SET 序号=PADL(ALLT(STR(recno())),5,'0')
    根据tlliqi老师的一句代码,实现了自动编号。但后来发现自动编号把以前的原有序号打乱了,又重新编上了新号。我的意思是原来序号不变,随着新增记录的逐条增加,序号也相应增大。是否需要增加条件判断语句,怎样增加,还请老师指点,新增序号最好也在表单文本框中显示,如:thisform.txt序号.value=序号。
2014-08-10 01:24
caolp
Rank: 1
等 级:新手上路
帖 子:160
专家分:5
注 册:2014-7-12
收藏
得分:0 
SELECT MAX(序号) FROM 居民信息 INTO ARRA A
IF 序号=A(1)
序号=PADL(ALLT(STR(recno())),6,'0')
repl 序号 with 序号+1
thisform.txt序号.value=序号
endif
以上代码不知错在哪?
2014-08-10 02:12
caolp
Rank: 1
等 级:新手上路
帖 子:160
专家分:5
注 册:2014-7-12
收藏
得分:0 
以下是引用sdta在2014-8-10 02:32:58的发言:

SELECT MAX(序号) AS XH FROM 居民信息 INTO ARRA A
IF VARTYPE(A)=="O"
   XH=PADL(INT(VAL(XH))+1,5,"0")
   REPLACE 序号 WITH XH
   thisform.txt序号.value=XH
ENDIF
运行老师的这段代码,序号字段里成了空白,不知什么原因?
2014-08-10 03:24
caolp
Rank: 1
等 级:新手上路
帖 子:160
专家分:5
注 册:2014-7-12
收藏
得分:0 
我把实例发上来,请老师帮我看一看。
居民信息.rar (15.25 KB)
2014-08-11 17:00
快速回复:关于自动编号的问题?
数据加载中...
 
   



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

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