组合条件查询的设计与实现

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:lokimi
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:文章提出在VFP数据库管理系统中实现组合条件查询数据的两种程序设计方法。该方法使VFP系统的条件查询功能大大增强,且操作简单,易实现。
  关键词:组合条件;IIF()函数;VFP
  中图分类号:TP311 文献标识码:A文章编号:1009-3044(2007)15-30626-01
  The Design And Implementation of Data Retrieval for Combined Search Conditions
  ZHU Xiao-zhong,LIU Xian-cheng
  (College of Computer & Information Engineering ,Hehai Univ.,Changzhou 213022,China)
  Abstract:Two programs design method for searching data retrieval at combined conditions in the VFP database management system are proposed in this paper,by means of which the condition searching function of the VFP system could be greatly enhanced,and the operation and realization is simple.
  Key words:combined conditions;iif() Function;VFP
  
  1 引言
  
  自20世纪70年代以来,数据库技术得到迅速发展,其应用已经深入到社会生活的各个领域。价格审计系统是为中国南方机车车辆集团下属某大型企业所开发。该系统使用计算机对物资采购信息进行管理,并完成价格审计工作。在该系统的开发研制过程中,用户有这样的检索要求:有多项检索条件,但在实际检索过程中,只能提供所掌握的多项条件中任意几项的条件值,可能是一项,也可能是多项甚至是所有项的条件值,进而要求检索同时满足所提供的几项条件值的数据记录。针对这种情况如何在Visual Foxpro简称VFP开发的软件中具体实现呢?本文介绍了两种实现多条件任意组合检索的具体方法。
  
  2 表单的设置
  
  将相关的数据表添加到该表单(图1)的数据环境中,其中包括审计表(合同号,物资名称,类别,采购单位,供货单位,日期)。设表单上关于日期的两个文本框名分别为rq1,rq2,合同号的下拉列表框名为hth,以此类推,类别,采购单位,供货单位,物资名称的下拉列表框名分别是:lb,cgdw,ghdw, wzmc。
  以下的程序设计在表单上“查询“按钮的”click”事件中进行。
   zxz01.tif图1
  
  3 两种程序设计的实现过程
  
  3.1 基于IF-ELSE判断的实现方法
  (1)用变量接收表单上文本框和下拉列表框的值。
  m_lb=allt(thisform.lb.displayvalue)
  m_cgdw=allt(thisform.cgdw.displayvalue)
  m_ghdw=allt(thisform.ghdw.displayvalue)
  m_hth=allt(thisform.hth.displayvalue)
  m_wzmc=allt(thisform.wzmc.displayvalue)
  m_d1=thisform.rq1.value
  m_d2=thisform.rq2.value
  (2)用if-else语句进行条件判断
  if len(m_lb)=0
  mc1=.T.
  else
  mc1=”m_lb$审计表.类别”
  endif
  if len(m_cgdw)=0
  mc2=.T.
  else
  mc2=”m_cgdw$审计表.采购单位”
  endif
  以此类推,若供货单位一项空白,则mc3=.T. 否则让变量mc3=”m_ghdw$审计表.供货单位”,同样的,可以用变量mc4,mc5,mc6分别完成对合同号,物资名称,日期的缺省与否的判断。
  (3)对审计表使用 set filter to &mc1..and..&mc2..and..&mc3..and..&mc4..and..&mc5..and..&mc6则可筛选出符合条件的记录。将这些记录放入一临时表,并将此临时表作为图1表单中“GRID”控件的数据源,刷新后表单上就显示出了查询到的记录。”&”是VFP语言中的宏运算符。
  3.2 基于IIF()函数的实现方法
  3.2.1 IIF() 函数的内容[1]
  iif() 函数是数据库类编程语言VFP 中的一个判断表达式并返回值的函数。iif() 函数的具体语法是iif(1Expression ,eExpression1 ,eExpression2) ,它计算逻辑表达式1Expression ,如果计算结果的值是“真”(.T.) ,则iif() 函数返回表达式eExpression1 ,如果计算结果的值是“假”(.F.) ,则iif() 函数返回表达式eExpression2。
  例如: iif(5 + 6 >10 ,3 + 4 ,5 - 2) 则返回‘7’。
  3.2.2 基于IIF()函数的方法设计
  (1)用变量接收表单上文本框和下拉列表框的值。
  m_lb=allt(thisform.lb.displayvalue)
  m_cgdw=allt(thisform.cgdw.displayvalue)
  m_ghdw=allt(thisform.ghdw.displayvalue)
  m_d1=thisform.rq1.value
  m_d2=thisform.rq2.value
  m_hth=allt(thisform.hth.displayvalue)
  m_wzmc=allt(thisform.wzmc.displayvalue)
  (2)用iif()函数判断(1)中变量的状态,根据其是否为空而将iif()函数的eExpression1 或eExpression2作为返回值赋给mc1,mc2,…,mc6。
  mc1=iif(empty(m_lb)," ","mlb$审计表.类别")
  mc2=iif(empty(m_cgdw)," ","mcgdw$审计表.采购单位")
  mc3=iif(empty(m_gydw)," ","mgydw$审计表.供货单位")
  mc4=iif(not empty(m_d1) and not empty(m_d2),"between(审计表.日期,md1,md2)"," ")
  mc5=iif(empty(m_hth)," ","mhth$审计表.合同号")
  mc6=iif(empty(m_wzmc)," ","mwzmc$审计表.物资名称")
  (3)反复使用iif()函数,对mc1变量进行迭代,使得所需的检索表达式最终保存在mc1变量中。
  mc1=iif(not empty(mc1) and not empty(mc2+mc3+mc4+mc5+mc6), mc1+" and " , mc1)
  mc1=iif(not empty(mc2) and not empty(mc3+mc4+mc5+mc6), mc1+mc2+" and " , mc1+mc2)
  mc1=iif(not empty(mc3) and not empty(mc4+mc5+mc6), mc1+mc3+" and " , mc1+mc3)
  mc1=iif(not empty(mc4) and not empty(mc5+mc6), mc1+mc4+" and " , mc1+mc4)
  mc1=iif(not empty(mc5) and not empty(mc6), mc1+mc5+" and ", mc1+mc5)
  mc1=mc1+mc6
  经过上面的三个步骤,变量mc1中保存了用户的检索条件。
  如图1中所输入的条件,此时执行 setfilter to &mc1 相当于执行 set filter to审计表.燃料$类别 and 物资处$审计表.采购单位 and between(审计表.日期,{01/01/02},{01/01/03})
  
  4 结束语
  
  以上两种方法均实现了组合条件查询。方法一简单易于理解;方法二条理性强,初看起来觉得比较复杂,但实际上还是一个按部就班的过程。按照这两种思路编程,可以在任何常见的数据库系统中实现组合条件查询,而且,当查询条件增加的时候程序的代码量不会增加太多。基于以上两种思路编写的程序在VFP 6.0中文版中均运行通过。
  
  参考文献:
  [1]焦敏杰.中文VISUAL FOXPRO 6.0函数与命令参考大全[M].北京:北京大学出版社,2002.
  [2]史济民,汤观全.Visual FoxPro及其应用系统开发[M].北京:清华大学出版社,2000.
  [3]吴迪,曲蒙.Visual FoxPro6.0程序设计指南[M].北京:清华大学出版社,1999.
其他文献
本文运用唯物辩证法,并通过对航海技术史的考察,对各时期航海技术以展的主要矛盾作了深入的探讨文章认为,航海技术发展的主要矛盾经历了“避航—定位—避航”这一否定之否定
“中国不会驱赶农民到城里来,要改善农民生产生活条件,均衡城镇化的压力,避免贫困的城镇化。”21日晚上,住建部副部长仇保兴在中国发展高层论坛上提出,中国的城市化要走绿色发展道
目的探讨超声造影(VUS)检查对微小肝细胞癌的诊断价值。方法选取莆田学院附属医院2019年3月—2020年3月收治的高度疑似为微小肝细胞癌患者84例为研究对象,均行二维超声以及超
辽中县县级领导班子、领导干部“三讲”教育结束后,为真正使“三讲”教育不走过场,收到实效,坚决克服松劲情绪,不断提高县级领导班子成员对整改工作重要性和紧迫性的认识,加强对整
IP2022是一款高速网络微处理器,可以方便地实现以太网通讯,本文介绍了IP2022系列的整体结构和功能,及其在以太网数据传输,高速数据采集,编解码方面的优点和特性。并举例说明了此型号处理器在射频设备系统中的应用和注意事项,可供工程研发人员参考。
我省是大豆的生产区,大豆面积占全国大豆的30%~35%,为提高大豆的品质和产量,适时施肥是一个重要措施。大豆一生分为3个时期,种子萌发到始花之前为前期,始花至终花为中期,终花至成熟为后期。大豆吸氮高峰在开花盛期,吸磷高峰在开花到结荚期,但幼苗期对磷十分敏感,吸收钾的高峰在结荚期。大豆整个生育期对氮肥的吸收是“少、多、少”,而对磷的吸收是“多、少、多”。因此,必须重视花期供氮,而磷肥以作基肥和种肥为
灰霉病是目光温室大棚生产中常见的病害,易引起大量叶片脱落、果实腐烂,降低了产品的产量和品质,减产率达20%以上,有的高达50—70%,成为目前棚室蔬菜早春茬栽培的主要障碍。笔者通过
看到一则新闻,心里很是感动。
目的探讨重度牙周炎采取牙周牙髓联合半导体激光治疗的价值。方法简单随机抽样法选取2017年6月至2019年6月本院86例重度牙周炎患者,共86颗患牙。抽签法分为两组,每组43例。对
<正> 近三年以来,海城市委采取一系列措施,加强对个体私营企业党员的管理教育,注重发挥个体私营企业党员的先锋模范作用,使许多个体私营企业,特别是非党的个体私营企业主