Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

在查询中是否可以按表(查询)中的记录字段内容不同而产生不同的表达式?

张保华  发表于:2008-05-31 09:57:39  
复制

例如:

供应商  分类  长 宽  高   表达式(价格)
 钦钦  纸箱  20  30  40  
 长风  纸箱  20  30  40  
 钦钦  衬板  16  50    
 长风  衬板  16  50    

如果  供应商=长风,分类=纸箱   那么   表达式(价格)=长*宽*高*5.1
如果  供应商=钦钦,分类=纸箱   那么   表达式(价格)=长*宽*高*4.9
如果  供应商=长风,分类=衬板   那么   表达式(价格)=(长+2)*(宽+2)*5.1
如果  供应商=钦钦,分类=衬板   那么   表达式(价格)=(长+2)*(宽+2)*4.9
请帮助!

 

Top
竹笛 发表于:2008-05-31 10:47:22
通过编写一个自定义函数可以实现,但是如何记录数过多,速度显得相当慢。

蒋元根 发表于:2008-05-31 10:59:52

 

价格: IIf([供应商]="长风" And [分类]="纸箱",表!长*表!宽*表!高*5.1,IIf([供应商]="钦钦" And [分类]="纸箱",表!长*表!宽*表!高*4.9,IIf([供应商]="长风" And [分类]="衬板",(表!长+2)*(表!宽+2)*5.1,IIf([供应商]="钦钦" And [分类]="衬板",(表!长+2)*(表!宽+2)*4.9,0))))

 

 

 

给你做了个样例,不知道十分符合你的要求,共同学习,共同进步

                                    hotgh2003

点击下载此附件

张保华 发表于:2008-05-31 12:33:44
编写一个自定义函数的方法如何???

pc高手 发表于:2008-06-02 08:39:42

我的意见, 不用自定义函数。 直接做一个该表全部记录的循环计算, 使用

DO CASE 语句, 将你的条件 IF .... 放在 CASE 句子里面。 循环一次后,

将结果存入表达式价格字段里。 无论时间长短, 都可以接受。 以后,

再增加新的记录, 当时就利用已知道的条件,立即计算, 不存在耗时长的问题。

再则, 如果客户增加判断条件, 只需添加 一个 case 语句就行了, 不用更改

其他句子.

仅供参考!



符鸿敏 发表于:2008-06-03 19:31:45
这个太复杂了点吧?而且还和所希望的要求有点差异,更有甚者,如工作中又增加了供应商或原料品种,那你的条件语句又得再改.

符鸿敏 发表于:2008-06-03 20:15:28

2楼的方法太复杂了点吧?而且还和所希望的要求有点出入,更有甚者,如工作中又增加了供应商或原料品种,那你的条件语句又得再改.

我这做了一个,或许更适合zhangbh的要求.因为积分不够,不能上传附件.如果需要,请用QQ和我联系.



总记录:6篇  页次:1/1 9 1 :