| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 697 人关注过本帖
标题:不用循环能解决吗
只看楼主 加入收藏
fdqzy
Rank: 1
等 级:新手上路
帖 子:183
专家分:0
注 册:2016-8-15
结帖率:94.12%
收藏
已结贴  问题点数:20 回复次数:31 
不用循环能解决吗
程序代码:
create cursor b1 (m c(3),m1 n(3), m2 n(3))
insert into b1 values ("10",59,0)
insert into b1 values ("",10,0)
insert into b1 values ("011",82,0)
insert into b1 values ("01",75,0)
insert into b1 values ("",56,0)
SCAN
  p1=LEN(ALLTRIM(m))
  REPLACE m2 WITH IIF(p1>0,m1,0)
ENDSCAN
brow

由于数据量大,此问题能否不用循环以提高效率。
谢谢!
搜索更多相关主题的帖子: values 循环 insert into 数据 
2020-09-22 19:31
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:270
帖 子:7573
专家分:33888
注 册:2014-5-20
收藏
得分:7 
REPLACE ALL m2 WITH IIF(!EMPTY(m),m1,0)
2020-09-22 20:02
fdqzy
Rank: 1
等 级:新手上路
帖 子:183
专家分:0
注 册:2016-8-15
收藏
得分:0 
谢谢!
下面给一个动态的替换

[此贴子已经被作者于2020-9-22 20:58编辑过]

2020-09-22 20:53
fdqzy
Rank: 1
等 级:新手上路
帖 子:183
专家分:0
注 册:2016-8-15
收藏
得分:0 
请教:
下面是动态返回相应字段的值,能否也用 REPLACE ALL进行或其他效率高的代码
程序代码:
create cursor b1 (m c(3),m1 n(3), m2 n(3),m3 n(3))
insert into b1 values ("10",59,40,0)
insert into b1 values ("",10,50,0)
insert into b1 values ("01",82,48,0)
insert into b1 values ("1",75,35,0)
insert into b1 values ("0",56,46,0)

scan
p1=ALLTRIM('m')+ALLTRIM(STR(LEN(ALLTRIM(m))))
REPLACE  m3 WITH IIF(LEN(ALLTRIM(m))>0,&p1,0)
endscan
BROWSE

根据m的长度返回以"m+m的长度"对应字段的值,如m=10,长度为2,m3返回m2的值,m=0,长度为1,m3返回m1的值
谢谢

[此贴子已经被作者于2020-9-22 21:19编辑过]

2020-09-22 21:05
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:270
帖 子:7573
专家分:33888
注 册:2014-5-20
收藏
得分:0 
REPLACE ALL m3 WITH IIF(!EMPTY(m), EVALUATE("m"+TRANSFORM(LEN(ALLTRIM(m)))), 0)
2020-09-22 21:22
fdqzy
Rank: 1
等 级:新手上路
帖 子:183
专家分:0
注 册:2016-8-15
收藏
得分:0 
以下是引用吹水佬在2020-9-22 21:22:48的发言:

REPLACE ALL m3 WITH IIF(!EMPTY(m), EVALUATE("m"+TRANSFORM(LEN(ALLTRIM(m)))), 0)

多谢,效率高多了!
我对函数的理解太差了,多多学习。
2020-09-22 21:48
fdqzy
Rank: 1
等 级:新手上路
帖 子:183
专家分:0
注 册:2016-8-15
收藏
得分:0 
以下是引用吹水佬在2020-9-22 21:22:48的发言:

REPLACE ALL m3 WITH IIF(!EMPTY(m), EVALUATE("m"+TRANSFORM(LEN(ALLTRIM(m)))), 0)

我曾用以下:
p1="m"+TRANSFORM(LEN(ALLTRIM(m)))
REPLACE ALL  m3 WITH IIF(!EMPTY(m),&p1,0)
但却用m1替换m3,不知何原因?
2020-09-23 13:53
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:270
帖 子:7573
专家分:33888
注 册:2014-5-20
收藏
得分:0 
以下是引用fdqzy在2020-9-23 13:53:17的发言:


我曾用以下:
p1="m"+TRANSFORM(LEN(ALLTRIM(m)))
REPLACE ALL  m3 WITH IIF(!EMPTY(m),&p1,0)
但却用m1替换m3,不知何原因?

先看看p1是什么就清楚
估计就是
p1="m1"
REPLACE ALL  m3 WITH IIF(!EMPTY(m),&p1,0)
相当于
REPLACE ALL  m3 WITH IIF(!EMPTY(m),m1,0)
2020-09-23 15:18
fdqzy
Rank: 1
等 级:新手上路
帖 子:183
专家分:0
注 册:2016-8-15
收藏
得分:0 
以下是引用吹水佬在2020-9-23 15:18:29的发言:


先看看p1是什么就清楚
估计就是
p1="m1"
REPLACE ALL  m3 WITH IIF(!EMPTY(m),&p1,0)
相当于
REPLACE ALL  m3 WITH IIF(!EMPTY(m),m1,0)

哦,而EVALUATE("m"+TRANSFORM(LEN(ALLTRIM(m))))是动态的。
2020-09-23 16:07
fdqzy
Rank: 1
等 级:新手上路
帖 子:183
专家分:0
注 册:2016-8-15
收藏
得分:0 
老师:
再请教关于自定义的问题.
我要用:
      kk1=OCCURS("M", m1 + m2 + m3 + m4 + m5)
      kk2=OCCURS("P", P1 + P2 + P3 )
      kk3=OCCURS("_", _1D + _2D + _3D + _4D )
      .....
      的kk1,kk2,kk3...统计数个数,能否一次性把他们用自定义过程,以便在后面的代码中逐一调用这些参数?
怎样做(我不懂),谢谢!
     

[此贴子已经被作者于2020-9-23 16:49编辑过]

2020-09-23 16:48
快速回复:不用循环能解决吗
数据加载中...
 
   



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

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