求助关于如何得到最后记录的内容,并加其加1
不好意思,又来提问题了我的目的是在输入新的编号的时候,得到原来最末尾的编号再加一这里是主要还是我的编号是由英文和字母构成,是字符型
比如我现在表内最后的编号是HF1256
我用 select max(客户编号) into:c_number from customer;
得到的数据是HF999,并不是跳转到最末尾的值,而且好像也不能将字符型直接+1
这里主要有2个疑问
怎么跳转到末尾记录
第二,怎么将字符记录加1?
首先楼主的这种记录模式不是很好。最好标准化如HF0000999在记录前保留足够的位数,以方便处理,这样,在加的时候就省事了。
如果使用楼主的模式,可以测试一下:
select max(substr(客户编号,3,20)) into:c_number :i_number from customer ;
c_number = "HF" + c_number
测试一下看 HF1256和HF999这样的数据同时存在了确实是悲剧,截取掉前面的两个字母得到纯数字部分咯,不过你这样排序还是乱的。参考楼上意见在数字前面补足0。 有时候一个好的数据设计,可以避免一些“垃圾”代码 ehxz 发表于 2015-3-18 00:29
首先楼主的这种记录模式不是很好。最好标准化如HF0000999在记录前保留足够的位数,以方便处理,这样,在加 ...
真奇怪
select max(substr(客户编号,3,20)) into:i_number from customer ;
c_number="HF"+string(i_number)
还是返回HF999
我也想改啊
主要是几个表涉及的数据太多
现在改工程量太大了
研究出来了
用游标可以解决这个问题
declare c_n cursor for select "客户编号" from customer;
open c_n;
do While SQLCA.SqlCode = 0
fetch c_n into :c_number;
loop
close c_n;
c_bh="HF"+string(integer(right(c_number,4))+1)
dw_1.setitem(dw_1.rowcount(),"客户编号",c_bh)
不过这里对于客户编号的长度应该进行判断
如果是5位数,就取后面3位,6位就取后面4位,或者更多位数的延伸?这里要怎么写判断语句?
关于用游标得到最后记录的问题,还是有问题
AHA输入的数据老是出现不按编号排列的情况
比如新的编号是HF1666,输入后最后一条记录还是HF1665,我用PB打开表,HF1666跑到其他地方去了
真是一个很奇怪的事情
不知道有其他方法解决不? 有想出一种方法
long ll_count
select count(*) into :ll_count from customer ; //获得数据总额
c_bh="HF"+string(ll_count+1)//将数据+1前面+HF
dw_1.setitem(dw_1.rowcount(),"客户编号",c_bh)
不过这种方法只适用于产生的编号和我一样只递增,永远不删除记录的情况
希望能抛砖引玉
页:
[1]