| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 715 人关注过本帖
标题:!!!!select * from 的问题,宏的使用!!!!
只看楼主 加入收藏
dochjp
Rank: 2
来 自:福州
等 级:论坛游民
帖 子:80
专家分:20
注 册:2011-4-20
结帖率:78.26%
收藏
已结贴  问题点数:10 回复次数:4 
!!!!select * from 的问题,宏的使用!!!!
我用select 命令对一个表“学生成绩表”进行如下操作:

               学生成绩表.dbf
姓名     学号     英语      数学
张三    050405     87        95
李四    050403     80        65
王五    050404     65        55
小三    050401     75        85

     select * from 学生成绩表;
     where 姓名 like "%"+allt(thisform.text1.value)+"%".and. 学号 like "%"+allt(thisform.text2.value)+"%";
     .and.英语>=val(allt(thisform.text3.value)).and.数学>=val(allt(thisform.text4.value))
     order by 学号 into dbf 临时表.dbf
     thisform.grid1.recordsourcetype=1
     thisform.grid1.recordsource="临时表"
当然实际进行模糊查找时,查找条件比这些多很多,我想用“宏”命令替换上述的命令,请教下各位前辈,应该如何进行呢?给我个指示吧。
比如:
public s
s=''
xh=allt(thisform.text1.value)
xm=allt(thisform.text2.value)
yy=val(allt(thisform.text3.value))
sx=val(allt(thisform.text4.value))
if len(xh)>0
  s=s+"%"+xh+"%"
endif
if len(xm)>0
  s=s+".and."+"%"+xm+"%"
endif
if !empty(allt(thisform.text3.value))>0
  s=s+".and."+"英语>=yy"
endif
if !empty(allt(thisform.text4.value))>0
  s=s+".and."+"数学>=sx"
endif
Do while left(s,5)='.AND.'.or.left(s,5)='.and.'  &&去掉 '.AND.'/'.and.'
  s=substr(s,6)   &&SUBSTR(S,I,N)在S字符串中的第I个字符起取N个字符,SUBSTR('TECHNOLO',3,3)=CHN
Enddo

???     select * from 学生成绩表 where XXXXX
这样可不可以实现呢?上面这句话应该如何表述呢?





搜索更多相关主题的帖子: like 姓名 成绩表 where 小三 
2011-12-04 21:26
qingfameng
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:35
帖 子:964
专家分:3019
注 册:2010-2-6
收藏
得分:2 
一般情况,一条完整的句子可以用一个宏,多条需要多个宏。执行时,每个宏占一行。
&宏1
&宏2
...
2011-12-05 02:44
dochjp
Rank: 2
来 自:福州
等 级:论坛游民
帖 子:80
专家分:20
注 册:2011-4-20
收藏
得分:0 
回复 2楼 qingfameng
嗯,好的,那用select 怎么把宏 联接起来呢,即最后那条select 命令怎么表述?
2011-12-05 08:35
qingfameng
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:35
帖 子:964
专家分:3019
注 册:2010-2-6
收藏
得分:8 
回复楼主:其实,某些情况下,用宏执行语句也不省劲的。你所举得例子中,
第1段程序:
ch=" where 姓名 like "%"+allt(thisform.text1.value)+"%".and. 学号 like "%"+allt(thisform.text2.value)+"%".and.英语>=val(allt(thisform.text3.value)).and.数学>=val(allt(thisform.text4.value))"
select * from 学生成绩表 where &ch

或者在第2段程序基础上:表示姓名和学号的 s 值,改成:
s=s+"学号 like %"+xh+"%"
s=s+".and.姓名 like %"+xm+"%"
ch='where '+alltrim(s)
select * from 学生成绩表 where &ch

也执行。但不算简练。因为程序段没有少写。我觉得,把程序段改造的简练一点,是主要的。



[ 本帖最后由 qingfameng 于 2011-12-5 13:03 编辑 ]
2011-12-05 12:49
dochjp
Rank: 2
来 自:福州
等 级:论坛游民
帖 子:80
专家分:20
注 册:2011-4-20
收藏
得分:0 
回复 4楼 qingfameng
OK。好的
2011-12-05 15:16
快速回复:!!!!select * from 的问题,宏的使用!!!!
数据加载中...
 
   



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

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