主题:按钮的代码!
绝缘子2009
[专家分:50] 发布于 2009-04-05 20:07:00
有下表内容:
编号 序号 。。。。
1
1/1
1/2
2
2/1
2/2
请问我想写一个按钮的代码,功能是把编号的内容加上,现在编号是空的,但是如果序号为1或者2就不加编号,1/1。。。或者2/1.。。。。的时候就加上编号,依次类推循环。(序号的1或者2实际上是个大的号,而1/1或者2/1是小号,我只要求对小号进行编号,大号跳过而且编号是连续的),我想了很多办法都没成功,请高手指教!!
回复列表 (共16个回复)
11 楼
绝缘子2009 [专家分:50] 发布于 2009-04-08 20:36:00
这样吧,因为数据表不能上传我在这里写出来
序号 编号(需要的结果)
1
1/1 1
1/2 2
1/3 3
1/4 4
1/5 5
2 6
3 7
4 8
5 9
6
6/1 10
6/2 11
6/3 12
6/4 13
6/5 14
6/6 15
7 16
8 17
9 18
10 19
11 20
12
12/1
12/1-1 21
12/1-2 22
12/1-3 23
12/2
12/3 24
12/4 25
13 26
14 27
15 28
16 29
17 30
n n
以上出现3种情况都是我要涉及到得,分别是序号1.序号6.序号12和序号12/1,这4个序号都是下面有小号的情况,所以要跳过,不编号或者为0
12 楼
绝缘子2009 [专家分:50] 发布于 2009-04-08 20:44:00
序号12/2的编号应该是24,写错了,后面的都+上1。
再说下规律其中序号1/1.。。。1/5是序号1的小号,所有序号1为大号要跳过
序号6/1.。。。6/6是序号6的小号,所有序号6为大号要跳过
序号12/1-1.。。。12/1-3是序号12/1的小号,所有序号12/1为大号要跳过
序号12/2.。。。12/3是序号12的小号,所有序号12为大号要跳过
现在我说的清楚吗,请老师指点!
顺便再问下,在报表中为什么细节部分不能显示数据表中的关联字段(时间和页数能显示),但是在报表其他地方又能显示呢??
13 楼
zxl931 [专家分:3420] 发布于 2009-04-08 22:29:00
楼主的数据实际上类似与树状结构,还可以用TreeView控件直观显示出来,问题的实质是如何筛选出所有最终的子节点。
本人近期正在研究BOM物料清单(Bill of Material)的展开算法,其中遇到与楼主类似的问题。
代码如下,经测试成功:
*筛选出需要编号的数据,并生成临时表
SELECT 序号 FROM test ;
WHERE IIF(OCCURS("/",序号)=0,ALLTRIM(序号)+"/",ALLTRIM(序号)+"-") NOT IN ;
(SELECT 序号 FROM test) INTO CURSOR tempCursor
*更新编号字段
SCAN
UPDATE test SET test.编号=RECNO("tempCursor") WHERE test.序号=tempCursor.序号
ENDSCAN
注意:
1、将以上“test”改为你自己数据表名称,并注意字段名称
2、以上代码使用了子查询,可查阅相关资料
14 楼
qjbzjp [专家分:8830] 发布于 2009-04-09 10:00:00
再看是这样吗:
n=1
GO top
DO while .t.
REPLACE 编号 with n
storStr=ALLTRIM(序号)
IF EOF()
EXIT
ELSE
SKIP
ENDIF
n=n+1
IF LEFT(ALLTRIM(序号),AT("/",ALLTRIM(序号))-1)=storStr
SKIP -1
n=n-1
REPLACE 编号 with 0
SKIP
ENDIF
ENDDO
15 楼
绝缘子2009 [专家分:50] 发布于 2009-04-09 21:40:00
很高兴qjbzjp老师能继续指点,你写的代码我试验过了,能解决我前2中情况的问题,但是第3种问题还没有结局,我自己也试着做了下,都没成功,希望qjbzjp老师能继续指点。
序号12/1-1.。。。12/1-3是序号12/1的小号,所有序号12/1为大号要跳过
IF LEFT(ALLTRIM(序号),AT("/",ALLTRIM(序号))-1)=storStr 这句看的不是很明白,但大致意思还是明白,请老师讲解下。
16 楼
qjbzjp [专家分:8830] 发布于 2009-04-10 08:49:00
把IF LEFT(ALLTRIM(序号),AT("/",ALLTRIM(序号))-1)=storStr 改成:
IF LEFT(ALLTRIM(序号),AT("/",ALLTRIM(序号))-1)=storStr.or.LEFT(ALLTRIM(序号),AT("-",ALLTRIM(序号))-1)=storStr
我来回复