以文本方式查看主题 - 易表在线答疑 (http://egrid2000.com/dvbbs/index.asp) -- 精华分享 (http://egrid2000.com/dvbbs/list.asp?boardid=12) ---- 多条件筛选设置浅释(ylm原创) (http://egrid2000.com/dvbbs/dispbbs.asp?boardid=12&id=1003) |
-- 作者:喜爱易表 -- 发布时间:2006/8/16 18:55:00 -- 多条件筛选设置浅释(ylm原创) 多条件筛选设置浅释 因易友要求,匆匆忙忙写下(嘿嘿,对我来说,比写公式还难),供需要易友参考.如发现错误,请多多指正. 我们用易表设置查询窗口,常常变量结合FilterFor在当前表中筛选符合条件的行。虽说可以设置多个比较条 件,每三个参数组成一个比较条件。但筛选出来结果是同时满足多个条件行,而我们常常会一下找多个相互 不相干条件同时查找,有时也常常会查找一个范围.例如:在表中有列编号: 这个,用易表也可以解决(有多个方法可以办到),由于新版易表增加了循环执行指定的命令函数---LOOP,解决 起来就变得方便多了,下面我就简单的介绍一下用LOOP解决方法. ★我们先做一个表,其中第一列(字符型)写入编号如图1: ★完成后在表中增加二列:S(数值型),A(逻辑型)。 ★第一步:先做个单个筛选公式。【灵感之源】 2,设置查询窗口。 打开窗口菜单→设计录入窗台→建立新窗口。在设计录入窗口工具栏第一行左边第三个方框点点出选项中选中刚才加入变量%N%,在方框右边按扭设置工具上点击插入一个定义按扭并改名为查找,再插入一个自定义扭改名为全部。 双击自定义按扭全部,在跳出公式生成器中写入:ShowAllrows()意思是显示所有行。 同样方法在查找按扭里写入:Replacefor(GridName,"A",-1,"第一列", "Instr" ,[%N%])And FilterFor("A", "=" ,-1) 意思是把当前表中A列替换为-1,条件是第一列值包含有变量%N%,替换好后筛选A列为-1行。我们去试试看,保存录入窗口并保存文件后,【为什么要保存文件呢,因为有时如果公式设置错了,一试说不定文件出错会自动关闭,这时你如不保存的话就会前功尽弃,记得下次公式修改后保存哦,重大修改的话修改前最好先另存一个备份以防不测】,在窗口菜单中打开刚才设置好录入窗口,在方框中输入A00002点查找。找到了吗? 找到的话,再输入5,先点全部再点查找,是不是找到了包含5的所有数据了呢?【什么,没变化,按上面介绍的方法重新检查一遍看看吧!】 3,试了二次,你会发现,查完后再查找必须先点一下全部按扭,很是不方便,没关系公式改一改吧: 单个单个筛选到此已完成任务,【如果你只是做单个筛选,不用这么复杂设置公式,只要FilterFor("第一列", "Instr" ,[%N%])就OK了】,完成了这一步,接下来我们可以做多个筛选了。 ★第二步:分解录入的多个条件。【关键一步】 我们要达到的目的是多个条件查找,第一步只是单个条件查找,为了达到多个条件,必须对用户输入多个条件一一分解开了。 1,增加自定义变量,按上面我讲方法增加自定义变量:%B%(字符型) 2,在录入窗口设计中把自定义查找按扭公式修改成: 从上面公式中我们发现多了一条:SetVariable("%N%",Split([%B%],",",1))这一条意思是:将变量%N%的值设为变量%B%中用“,”分开的第一段。 也就是说,当我们在变量%B%中输入:A00001,A00027,A00105,时,变量%N%变成了第一个豆号点断前面的值:A00001,很显然,只要我们把公式中1改成2,得到的是A00027,改成3得到是A00105...如果我们不停的修改不同的数字会得到用户输入的每一段的值了. 因此,我们只要把SetVariable("%N%",Split([%B%],",",1))中数字1改成一个变量:[%X%]【按前面第一步方法再加一个数值型变量吧】变成:SetVariable("%N%",Split([%B%],",",[%X%]))不停的从1,2,3,4修改[%X%]变量,就会把用户输入的每一段的值了一次一次分开了.至此,数据分解完成任务,该我们的主角出场了!有请---- ★第三步:LOOP出场【成败在此一步】 1,加入变量%O%(数值型),他作用是导演,指挥LOOP工作还是停止. 2,查找按扭公式改为: |