首页 考试吧论坛 Exam8视线 考试商城 网络课程 模拟考试 考友录 实用文档 缤纷校园 英语学习
2010考研 | 自学考试 | 成人高考 | 专 升 本 | 法律硕士 | MBA/MPA | 中 科 院
四六级 | 商务英语 | 公共英语 | 职称日语 | 职称英语 | 博思 | 口译笔译 | GRE GMAT | 日语 | 托福
雅思 | 专四专八 | 新概念 | 自考英语 | 零起点英韩语 | 在职申硕英语
在职攻硕英语 | 成人英语三级
等级考试 | 水平考试 | 微软认证 | 思科认证 | Oracle认证 | Linux认证
公务员 | 报关员 | 报检员 | 外销员 | 司法考试 | 导游考试 | 教师资格 | 国际商务师 | 跟单员
单证员 | 物流师 | 价格鉴证师 | 银行从业资格 | 证券从业资格 | 人力资源管理师 | 管理咨询师
期货从业资格 | 社会工作者
会计职称 | 注会CPA | 经济师 | 统计师 | 注册税务师 | 评估师 | 精算师 | 高会 | ACCA | 审计师
法律顾问 | 会计证
一级建造师 | 二级建造师 | 造价师 | 监理师 | 安全师 | 咨询师 | 结构师 | 建筑师 | 安全评价师
房地产估价师 | 土地估价师 | 设备监理师 | 岩土工程师 | 质量资格 | 房地产经纪人 | 造价员
投资项目管理 | 土地代理人 | 环保师 | 环境影响评价 | 物业管理师 | 城市规划师 | 公路监理师
公路造价工程师 | 招标师
执业护士 | 执业医师 | 执业药师 | 卫生资格
您现在的位置: 考试吧(Exam8.com) > 软件水平考试 > 系统分析师 > 正文

在PB中如何实现数据模糊查询(五)

   9.5 DataWindow: dw_where的 ue_where 事件

  功能:形成WHERE子句,并更新语法框。

  string hzcol, ywcol, sValue, sType //, sWhere
  //sWhere 现为实例变量,在wroot_query中为局部变量.
  string sOper, sLog, sLeft_kh,sRight_kh, tmpsValue
  long left_kh,right_kh //左、右括号数
  integer i, rownum, delnum //, typenum
  dwItemStatus l_status
  if ib_changed = true then
  ib_changed = false
  else
  return 0
  end if
  rownum = dw_where.RowCount()
  //去掉dw_where中MaxEditRow行以前所有中间为空或
  //者输入不完整的行, 并更新MaxEditRow.
  i = 1
  delnum = 0
  DO WHILE i <= MaxEditRow
  l_status = dw_where.GetItemStatus(i,0, Primary!)
  if l_status <> New! then
  hzcol = GetItemString(i,"column1")
  sValue = GetItemString(i,"value")
  if (hzcol = "" or isnull(hzcol)) or (sValue = "" or isnull(sValue)) then
  dw_where.DeleteRow(i)
  delnum += 1
  MaxEditRow += -1
  Continue
  end if
  else
  dw_where.DeleteRow(i)
  delnum += 1
  MaxEditRow += -1
  Continue
  end if
  i += 1
  LOOP
  For i = 1 to DelNum
  dw_where.InsertRow(0)
  Next
  //检查左右括号是否匹配, 即其数量是否一样多.
  For i = 1 to MaxEditRow
  l_status = dw_where.GetItemStatus(i,0, Primary!)
  if l_status <> New! then
  left_kh += inv_string.of_countoccurrences(GetItemString(i,"precol"),"(")
  right_kh += inv_string.of_countoccurrences(GetItemString(i,"value"),")")
  end if
  Next
  i = left_kh - right_kh
  if i <> 0 then
  if i > 0 then
  sValue = "查询条件中左括号比右括号多了" + String(i) + "个"
  else
  sValue = "查询条件中左括号比右括号少了" + String(-i) + "个"
  end if
  if MessageBox("综合查询输入错误",sValue + ",请改正;" + &
  "~r~n~r~n否则,所有查询条件将被忽略。",None!,OKCancel!,2)=1 then
  return 1
  else
  dw_where.setfocus()
  return 0
  end if
  end if
  //形成WHERE子句,并更新语法框。
  sWhere = ""
  For i = 1 to MaxEditRow
  hzcol = GetItemString(i,"column1")
  sOper = space(1) + GetItemString(i,"operator") + space(1)
  // 去掉空格键
  sValue = Trim(GetItemString(i,"value"))
  sLeft_kh = GetItemString(i,"precol") //保存左括号
  if isNull(sLeft_kh) then sLeft_kh = ""
  if Pos(sValue,")",1) > 0 then //保存右括号
  sRight_kh = Right(sValue,(Len(sValue) - Pos(sValue,")",1) + 1))
  else
  sRight_kh = ""
  end if
  sValue = inv_string.of_globalreplace(sValue,"‘","") //去掉sValue中的单引号.
  sValue = inv_string.of_globalreplace(sValue,‘"‘,‘‘) //去掉sValue中的双引号.
  sValue = inv_string.of_globalreplace(sValue,")","") //去掉sValue中的右括号.
  sLog = GetItemString(i,"logical")
  if sLog = "" or isNull(sLog) then
  sLog = "and"
  dw_where.SetItem(i,"logical","and")
  end if

转帖于:软件水平考试_考试吧
文章搜索
在PB中如何实现数据模糊查询(五)网友评论网友评论
版权声明 --------------------------------------------------------------------------------------
    如果软件水平考试网所转载内容不慎侵犯了您的权益,请与我们联系,我们将会及时处理。如转载本软件水平考试网内容,请注明出处。
 gaoxiaoliang