首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡課程 模擬考試 考友錄 實用文檔 繽紛校園 英語學習
2010考研 | 自學考試 | 成人高考 | 專 升 本 | 法律碩士 | MBA/MPA | 中 科 院
四六級 | 商務英語 | 公共英語 | 職稱日語 | 職稱英語 | 博思 | 口譯筆譯 | GRE GMAT | 日語 | 托福
雅思 | 專四專八 | 新概念 | 自考英語 | 零起點英、、、韓語 | 在職申碩英語
在職攻碩英語 | 成人英語三級
等級考試 | 水平考試 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證
公務員 | 報關員 | 報檢員 | 外銷員 | 司法考試 | 導游考試 | 教師資格 | 國際商務師 | 跟單員
單證員 | 物流師 | 價格鑒證師 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 人力資源管理師 | 管理咨詢師
期貨從業(yè)資格 | 社會工作者
會計職稱 | 注會CPA | 經濟師 | 統(tǒng)計師 | 注冊稅務師 | 評估師 | 精算師 | 高會 | ACCA | 審計師
法律顧問 | 會計證
一級建造師 | 二級建造師 | 造價師 | 監(jiān)理師 | 安全師 | 咨詢師 | 結構師 | 建筑師 | 安全評價師
房地產估價師 | 土地估價師 | 設備監(jiān)理師 | 巖土工程師 | 質量資格 | 房地產經紀人 | 造價員
投資項目管理 | 土地代理人 | 環(huán)保師 | 環(huán)境影響評價 | 物業(yè)管理師 | 城市規(guī)劃師 | 公路監(jiān)理師
公路造價工程師 | 招標師
執(zhí)業(yè)護士 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 衛(wèi)生資格
您現(xiàn)在的位置: 考試吧(Exam8.com) > 軟件水平考試 > 系統(tǒng)分析師 > 正文

在PB中如何實現(xiàn)數(shù)據(jù)模糊查詢(五)

   9.5 DataWindow: dw_where的 ue_where 事件

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

  string hzcol, ywcol, sValue, sType //, sWhere
  //sWhere 現(xiàn)為實例變量,在wroot_query中為局部變量.
  string sOper, sLog, sLeft_kh,sRight_kh, tmpsValue
  long left_kh,right_kh //左、右括號數(shù)
  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
  //檢查左右括號是否匹配, 即其數(shù)量是否一樣多.
  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中如何實現(xiàn)數(shù)據(jù)模糊查詢(五)網(wǎng)友評論網(wǎng)友評論
版權聲明 --------------------------------------------------------------------------------------
    如果軟件水平考試網(wǎng)所轉載內容不慎侵犯了您的權益,請與我們聯(lián)系,我們將會及時處理。如轉載本軟件水平考試網(wǎng)內容,請注明出處。
 gaoxiaoliang