标题:update 中不能使用宏替换的解决方案
只看楼主
hyz00001
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:168
专家分:137
注 册:2012-10-5
结帖率:100%
已结贴  问题点数:20 回复次数:5 
update 中不能使用宏替换的解决方案
下面是我自己的代码,其中&jiaquan_name 是一个宏替换,在这个更新语句中的宏替换没有办法使用,看看有没有办法解决的。谢谢。


    UPDATE  jiaquan SET mat = &jiaquan_name.mat*jiaquan.qty,lab =&jiaquan_name.lab* jiaquan.qty,burden =&jiaquan_name.burden*jiaquan.qty,sub=&jiaquan_name.sub* jiaquan.qty,amt =&jiaquan_name.price*jiaquan.qty,mei ='step4: 第一次更新生产领料、委外发出单价。' ;
    from &jiaquan_name WHERE jiaquan.pn =&jiaquan_name.pn AND jiaquan.type in ('生产领料单据','委外加工发出单据') AND (&jiaquan_name.qty>0 AND &jiaquan_name.mat>=0 AND &jiaquan_name.lab>=0 AND &jiaquan_name.burden >=0 AND &jiaquan_name.sub >=0 AND &jiaquan_name.price>=0) AND ISBLANK(jiaquan.mei) AND jiaquan.hs ='是'
搜索更多相关主题的帖子: 解决方案 update 领料单 外加工 
2014-06-26 15:17
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:5 
要想解决问题,贴出全部代码
关键代码要加注释

坚守VFP最后的阵地
2014-06-26 16:24
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:649
专家分:2156
注 册:2014-2-7
得分:0 
宏替换的使用格式有问题。应该将 &jiaquan_name.mat 改为 &jiaquan_name..mat,注意,宏替换后面的变量与字段之间是 2 个句点。

泉城飞狐
2014-06-26 16:42
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:649
专家分:2156
注 册:2014-2-7
得分:5 
不过,我很少这样使用。我一般都是先将整个命令赋予一个字符串变量,再宏替换。如:

* 第一步,先组合成一个命令字符串
cSql = 'Update jiquan Set mat=' + m.jiaquan_name + '.mat*jiaquan.qty,'+;
    'lab=' + m.jiaquan + '.lab*jiaquan.qty,'+;
    ......
* 第二步,再执行宏替换
&cSql

注意命令的书写格式,你的书写格式实在不敢恭维。

泉城飞狐
2014-06-26 16:54
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:5 
以下是引用hyz00001在2014-6-26 15:17:10的发言:

下面是我自己的代码,其中&jiaquan_name 是一个宏替换,在这个更新语句中的宏替换没有办法使用,看看有没有办法解决的。谢谢。
 
 
    UPDATE  jiaquan SET mat = &jiaquan_name.mat*jiaquan.qty,lab =&jiaquan_name.lab* jiaquan.qty,burden =&jiaquan_name.burden*jiaquan.qty,sub=&jiaquan_name.sub* jiaquan.qty,amt =&jiaquan_name.price*jiaquan.qty,mei ='step4: 第一次更新生产领料、委外发出单价。' ;
    from &jiaquan_name WHERE jiaquan.pn =&jiaquan_name.pn AND jiaquan.type in ('生产领料单据','委外加工发出单据') AND (&jiaquan_name.qty>0 AND &jiaquan_name.mat>=0 AND &jiaquan_name.lab>=0 AND &jiaquan_name.burden >=0 AND &jiaquan_name.sub >=0 AND &jiaquan_name.price>=0) AND ISBLANK(jiaquan.mei) AND jiaquan.hs ='是'
直接看不出问题 不好区分
2014-06-26 16:58
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
得分:5 
楼主,注意宏替换变量后面有字母时的使用方法,应该用两个句点:前一个作为宏替换变量的结束标志,后一个才作为表文件名与字段名的间隔标志。
2014-06-27 08:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-433378-1-1.html




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

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