Office中国论坛/Access中国论坛

标题: 请各位老师看看如何在查询中使用循环: [打印本页]

作者: yanwei82123300    时间: 2015-8-18 16:20
标题: 请各位老师看看如何在查询中使用循环:
请各位老师看看如何在查询中使用循环:
例子是公司的四班系统(FOURTH SHIFT SYSTEM)中制作的BOM,其中在字段level中如何使用循环函数,依据字段level的值,来添加一个新字段EVEL_ID,它的值使在值的前面添加".",例如值为1时 .1;值为2时..2;值为3时...3
由于字段leve的值不固定(1~n)
下面是我利用Iif函数做的例子,但是不完整。请大家看看


LEVEL_ID: IIf([LEVEL]=1,"." & [LEVEL],IIf([LEVEL]=2,".." & [LEVEL],IIf([LEVEL]=3,"..." & [LEVEL],IIf([LEVEL]=4,"...." & [LEVEL],IIf([LEVEL]=5,"....." & [LEVEL],IIf([LEVEL]=6,"......" & [LEVEL],IIf([LEVEL]=7,"......." & [LEVEL])))))))

见例子:
我将数据导出到EXCEL中,但是我想在ACCESS中实现这个循环,请看看,谢谢

作者: roych    时间: 2015-8-18 16:43
本帖最后由 roych 于 2015-8-18 16:49 编辑

使用自定义函数:
  1. function getNewId(byval LngID as Long)
  2. dim str as string
  3. dim i as long
  4. for i=1 to lngID
  5. str=str&"."
  6. next
  7. getNewId=str&lngID
  8. end function
复制代码
详见附件:[attach]57088[/attach]

作者: zpy2    时间: 2015-8-18 16:46
SELECT Switch(level=1,".1",level=2,"..2") AS level_ID
作者: yanwei82123300    时间: 2015-8-18 16:50
roych 发表于 2015-8-18 16:43
使用自定义函数:
详见附件:

roych 显示编译错误,请看看,谢谢
作者: 风中漫步    时间: 2015-8-18 17:13
加点是何意呢?
作者: zpy2    时间: 2015-8-19 05:16
应是BOM,加点,可显示为缩进的树形结构吧?
作者: 风中漫步    时间: 2015-8-19 13:25
zpy2 发表于 2015-8-19 05:16
应是BOM,加点,可显示为缩进的树形结构吧?

{:soso_e183:}

作者: koutx    时间: 2015-8-19 15:24
一个笨办法,但最简单:
level_ID : Left("....................................................................",[level]) & [level]
前提是引号中的.....多的足够你用即可
作者: zpy2    时间: 2015-8-20 06:15
koutx 发表于 2015-8-19 15:24
一个笨办法,但最简单:
level_ID : Left("........................................................... ...

强,赞一个,有创意
作者: yanwei82123300    时间: 2015-8-20 12:33
roych 发表于 2015-8-18 16:43
使用自定义函数:
详见附件:

老师您好!请您解释一下这个函数可以吗?谢谢
作者: roych    时间: 2015-8-20 14:09
yanwei82123300 发表于 2015-8-20 12:33
老师您好!请您解释一下这个函数可以吗?谢谢

没什么好解释的。就是根据值的大小增加点号的个数,再拼出结果而已。
作者: yanwei82123300    时间: 2015-8-20 14:15
roych 发表于 2015-8-20 14:09
没什么好解释的。就是根据值的大小增加点号的个数,再拼出结果而已。

老师这句不明白 byval LngID as Long请指导,谢谢
作者: 轻风    时间: 2015-8-20 14:25
本帖最后由 轻风 于 2015-8-20 14:29 编辑

这个根本不需要代码,有现成的函数可用。
8楼的方法很有创意啊!{:soso_e179:}
还有一个方法我觉得最适用,用String函数:
  1. level_ID : String([level],".") & [level]
复制代码


作者: yanwei82123300    时间: 2015-8-20 14:48
轻风 发表于 2015-8-20 14:25
这个根本不需要代码,有现成的函数可用。
8楼的方法很有创意啊!
还有一个方法我觉得最适用 ...

谢谢老师帮助1!
作者: roych    时间: 2015-8-20 17:30
yanwei82123300 发表于 2015-8-20 14:15
老师这句不明白 byval LngID as Long请指导,谢谢

传值过程。请自行搜索“传值过程”。我写过例子的,除非你不太上心。
作者: zpy2    时间: 2015-8-21 05:01
轻风 发表于 2015-8-20 14:25
这个根本不需要代码,有现成的函数可用。
8楼的方法很有创意啊!
还有一个方法我觉得最适用 ...

嗯嗯,智慧,赞一个,




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3