| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 759 人关注过本帖
标题:[求助]代码编写
只看楼主 加入收藏
TZTJ
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:737
专家分:115
注 册:2008-1-15
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:14 
[求助]代码编写
请教各位高手,自己编写以下一段代码,一般运行没问题,但现在遇到一些特殊情况,思考了很久都无法解决.
SCAN FOR  EMPTY(kmname) AND bjname=b(k) AND xq=ALLTRIM(thisform.optiongroup1.Buttons(t).caption) AND between(jb,5,8)
如果没有找到一个记录满足以上条件,怎样用代码表示?
IF k=6
m=jb
replace kmname WITH ALLTRIM(thisform.list2.Value) while xq=ALLTRIM(thisform.optiongroup1.Buttons(t).caption) AND jb=m
exit
ELSE
以上代码没有运行,经常出现找不到m 的值,这个问题怎样妥善处理它?
IF jb=m
LOOP
ELSE
IF k=7
n=jb
replace kmname WITH alltrim(thisform.list2.Value) while  xq=ALLTRIM(thisform.optiongroup1.Buttons(t).caption)AND jb=n
EXIT
ELSE

IF jb=n OR jb=n+1      与第二个问题一样
LOOP
ELSE
IF k=1
h=jb
replace kmname WITH alltrim(thisform.list2.Value) while  xq=ALLTRIM(thisform.optiongroup1.Buttons(t).caption)AND jb=h
EXIT
ENDIF
ENDIF
ENDIF
endif
ENDIF
endif
ENDSCAN
搜索更多相关主题的帖子: 记录 between 
2011-08-05 09:59
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:2 
你平时写代码都是这种格式的吗?

授人以渔,不授人以鱼。
2011-08-05 10:05
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你平时写代码都是这种格式的吗?

授人以渔,不授人以鱼。
2011-08-05 10:05
TZTJ
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:737
专家分:115
注 册:2008-1-15
收藏
得分:0 
我们都是来学习的,有什么不妥请直言不讳
2011-08-05 16:25
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:2 
用缩进的格式更容易看的出程序结构。
收到的鲜花
  • TonyDeng2011-08-05 17:42 送鲜花  10朵  

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2011-08-05 17:32
寻H不得
Rank: 4
等 级:业余侠客
威 望:1
帖 子:181
专家分:222
注 册:2010-10-9
收藏
得分:2 
嘿嘿嘿 你这个是弄得复杂了些
数了数你最后有六个ENDIF,中间有3个EXIT
如楼上所言这种格式书写方式不容易看清楚的
给你两个建议:
1.改进书写方式
 IF k=6
    ...
 ELSE
    IF ...
       ...
    ELSE
      ...  
    ENDIF
 ENDIF
2.考虑程序进程中的构架:
 (1)先考虑可能出现要中止运行的条件出现,一旦出现程序将中止运行,后面不运行,返回。建议可以用以下方式:
   IF (EMPTY(kmname) AND bjname=b(k) AND xq=ALLTRIM(thisform.optiongroup1.Buttons(t).caption) AND between(jb,5,8))=.F.  &&对不住,这句我没测试过
     retu
   ENDIF
   IF ..
     RETU
   ENDIF
 (2)弄清要运行程序可能出现的不同条件,可以考虑用 do case ...endcase格式 这个格式只在符合列举的几种条件下运行指令
 
对不住,没详细研究你的程序本身,以上仅作参考。

[ 本帖最后由 寻H不得 于 2011-8-5 20:02 编辑 ]
2011-08-05 20:01
TZTJ
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:737
专家分:115
注 册:2008-1-15
收藏
得分:0 
首先感谢同行们关注!这段代码是有关自动排课的代码一部分,几年前我思考过这个问题,觉得很复杂就放弃.近来论坛上有人提起,我在重新思考,经过不断尝试,终于成功解决!但不是很完美,就是我上面所提到了问题.对于代码的格式、代码的简化不是我目前重点考虑的问题。功能完成后才考虑修改。
 SCAN FOR  EMPTY(kmname) AND bjname=b(k) AND xq=ALLTRIM(thisform.optiongroup1.Buttons(t).caption) AND between(jb,5,8)
 我想如果在表中没有找到满足以上条件,退出后面的代码运行,用代码怎样表示它?第一个if 不满足而满足后面条件,又怎样表示?

2011-08-06 10:03
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
问题是别人不容易看明白你程序的结构,也无法提出合适的建议。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2011-08-06 10:49
TZTJ
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:737
专家分:115
注 册:2008-1-15
收藏
得分:0 
我可以把问题简单为这样:
for k=1 to  10
SCAN  FOR  EMPTY(kmname) AND bjname=b(k)AND between(jb,5,8)
如果在表中没有找到满足条件记录,怎样退出后面的代码运行
if k=1

 ````````
  else
如果在表中没有找到满足条件记录,怎样退出后面的代码运行

     if k=2
``````
 endif
 endif``````
endscan
endfor

[ 本帖最后由 TZTJ 于 2011-8-6 11:09 编辑 ]
2011-08-06 11:07
qingfameng
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:35
帖 子:964
专家分:3019
注 册:2010-2-6
收藏
得分:2 
注意 scan ... endscan 的一个特点。会将全部符合条件的记录搜出。之后,表记录指针在 eof 。程序继续执行endscan 后面的代码。楼上的红字部分意义不大.scan 查找不到,不会执行中间的判定语句。不建议用 scan 来查询某条符合条件的记录。

[ 本帖最后由 qingfameng 于 2011-8-6 11:55 编辑 ]
2011-08-06 11:26
快速回复:[求助]代码编写
数据加载中...
 
   



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

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