主题:小弟遇到了这样的问题 大哥 帮办忙 大姐姐也帮办我呀
wcwc5786
[专家分:0] 发布于 2009-05-14 12:45:00
由于工作需要,经常筛选一些油井的生产状况,最近油气特别多 ,于是自己写了一个程序想减轻点负担,就是采用 do case来满足条件的筛选 但是运行时候总是出现“操作符/操作数类型不匹配”找了好几天没有找到原因 望姐姐 哥哥能帮忙 代码如下
use D:\工况报表
do while not eof()
do case
case 沉没度>400 .and.泵效>60
repl 工况 with 潜力区
case 50=<沉没度=< 400 .and.泵效>=60
repl 工况 with 合理区
case 沉没度>400 .and.泵效< 60
repl 工况 with 断漏区
case 沉没度=< 200 .and.20=< 泵效< 60
repl 工况 with 供液不足区
case 沉没度=< 100 .and.泵效=< 20
repl 工况 with 严重供液不足区
otherwise
repl 工况 with 待落实区
endcase
skip
enddo
return
copy to D:\工况报表(已分析结果) type xls
delete file D:\工况报表
看看什么地方有问题 谢谢 谢谢[size=3][/size]
回复列表 (共11个回复)
沙发
狐说八道 [专家分:860] 发布于 2009-05-14 13:06:00
20=< 泵效< 60:
20=< 泵效 and 泵效< 60
板凳
sywzs [专家分:5650] 发布于 2009-05-14 13:18:00
case 50=<沉没度=< 400 .and.泵效>=60
应改为:case (沉没度>=50 and 沉没度<400 or 沉没度=400) and 泵效>=60
case 沉没度=< 200 .and.20=< 泵效< 60
应改为:case (沉没度<= 200 and 泵效>20 or 泵效=20) and 泵效< 60
以上更改增加了 OR 逻辑关系,考虑到数值可能存在小数。
3 楼
foxdb [专家分:1830] 发布于 2009-05-14 13:19:00
这句有问题!
case 50=<沉没度=< 400 .and.泵效>=60
应该这样:
case 沉没度>=50 and 沉没度<401 .and.泵效>=60
and 两边不能同时是=
50=<沉没度=< 400 逻辑表达是错的
4 楼
foxdb [专家分:1830] 发布于 2009-05-14 13:23:00
还有 case 沉没度=< 200 .and.20=< 泵效< 60 这一句
只能两边等 ,不能三边等,你这样做就是脚踏两条船,是要翻船的,开个玩笑,请别介意!
5 楼
wcwc5786 [专家分:0] 发布于 2009-05-14 13:28:00
谢谢
6 楼
wcwc5786 [专家分:0] 发布于 2009-05-14 13:29:00
我开始判断的也是这个的问题 但是改了没有好 不过现在好了 估计开始改的太粗心了
7 楼
foxdb [专家分:1830] 发布于 2009-05-14 13:35:00
2楼
应该为:case 沉没度>=50 .and. 沉没度=< 400 .and.泵效>=60 也是错的
8 楼
foxdb [专家分:1830] 发布于 2009-05-14 13:37:00
沉没度 同时等于 50 和 400 有可能吗?看来2楼也脚踏两条船了....
9 楼
oufeiwen [专家分:910] 发布于 2009-05-27 01:04:00
现在搞好没有?还没有吧!
如语句: repl 工况 with 潜力区
字段工况是什么数据类型?是字符型吧?
语句的本意是不是用字符串"潜力区"赋给字段工况,如真这样,就必须将语句改为如下:
repl 工况 with '潜力区'
其余的 repl 语句相应修改.
请试试!
10 楼
farwish [专家分:270] 发布于 2009-05-27 11:17:00
repl 工况 with "待落实区"
我来回复