知识大全 在PB中如何实现数据模糊查询(五)
Posted 条件
篇首语:莫道桑榆晚,为霞尚满天。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 在PB中如何实现数据模糊查询(五)相关的知识,希望对你有一定的参考价值。
在PB中如何实现数据模糊查询(五) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
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 end if rownum = dw_where RowCount() //去掉dw_where中MaxEditRow行以前所有中间为空或 //者输入不完整的行 并更新MaxEditRow i = delnum = DO WHILE i <= MaxEditRow l_status = dw_where GetItemStatus(i Primary!) if l_status <> New! then hzcol = GetItemString(i column ) sValue = GetItemString(i value ) if (hzcol = or isnull(hzcol)) or (sValue = or isnull(sValue)) then dw_where DeleteRow(i) delnum += MaxEditRow += Continue end if else dw_where DeleteRow(i) delnum += MaxEditRow += Continue end if i += LOOP For i = to DelNum dw_where InsertRow( ) Next //检查左右括号是否匹配 即其数量是否一样多 For i = to MaxEditRow l_status = dw_where GetItemStatus(i 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 <> then if i > then sValue = 查询条件中左括号比右括号多了 + String(i) + 个 else sValue = 查询条件中左括号比右括号少了 + String( i) + 个 end if if MessageBox( 综合查询输入错误 sValue + 请改正 + & ~r~n~r~n否则 所有查询条件将被忽略 None! OKCancel! )= then return else dw_where setfocus() return end if end if //形成WHERE子句 并更新语法框 sWhere = For i = to MaxEditRow hzcol = GetItemString(i column ) sOper = space( ) + GetItemString(i operator ) + space( ) // 去掉空格键 sValue = Trim(GetItemString(i value )) sLeft_kh = GetItemString(i precol ) //保存左括号 if isNull(sLeft_kh) then sLeft_kh = if Pos(sValue ) ) > then //保存右括号 sRight_kh = Right(sValue (Len(sValue) Pos(sValue ) ) + )) 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 ywcol = wf_getYwName(hzcol) //表名 列名 sType = lower(wf_getYwType(hzcol)) CHOOSE CASE sType CASE char character string nchar nvarchar varchar time if trim(sOper) = like or trim(sOper) = not like then sWhere += ( + sLeft_kh + ywcol + sOper + % + sValue + % ) + sRight_kh + sLog else sWhere += ( + sLeft_kh + ywcol + sOper + + sValue + ) + sRight_kh + sLog end if CASE numeric decimal decimaln dec double integer int smallint & number long real uint ulong unsignedint unsignedinteger unsignedlong if trim(sOper) = like or trim(sOper) = not like then if MessageBox( 提示信息 hzcol + 不是字符型 不能使用<含有>或<不含有>操作符 + & ~r~n~r~n请改正; 否则 所有查询条件将被忽略 None! OKCancel! )= then return else dw_where setfocus() return end if end if if isNumber(sValue) then sWhere += ( + sLeft_kh + ywcol + sOper + sValue + ) + sRight_kh + sLog else if MessageBox( 综合查询输入错误 hzcol + 的值应为数字型 请改正 + & ~r~n~r~n否则 所有查询条件将被忽略 None! OKCancel! )= then Return else dw_where setfocus() return end if end if CASE date datetime datetimn smalldatetime timestamp if trim(sOper) = like or trim(sOper) = not like then if MessageBox( 提示信息 hzcol + 不是字符型 不能使用<含有>或<不含有>操作符 + & ~r~n~r~n请改正; 否则 所有查询条件将被忽略 None! OKCancel! )= then return else dw_where setfocus() return end if end if if sType = date then if not isdate(sValue) then if MessageBox( 综合查询输入错误 hzcol + 的值应为日期型 请改正; + & ~r~n~r~n否则 所有查询条件将被忽略 None! OKCancel! )= then Return else dw_where setfocus() return end if end if sValue = wf_dateconvert(sValue) sWhere += ( + sLeft_kh + ywcol + sOper + + sValue + ) + sRight_kh + sLog else //datetime型的字段在sybase中转换为字符串的类型 sValue = wf_datetime(sValue) if sValue = error then if MessageBox( 综合查询输入错误 hzcol + 的值应为日期时间型 请改正 + & ~r~n~r~n否则 所有查询条件将被忽略 None! OKCancel! )= then Return else dw_where setfocus() return end if end if sWhere += ( + sLeft_kh + convert(varchar( ) +ywcol+ ) + sOper + +sValue+ ) + sRight_kh + sLog end if CASE ELSE beep( ) MessageBox( 综合查询 sType + 这个数据类型未在本模块中定义 ) Return END CHOOSE Next //去掉最后一个逻辑符 Long pok pp pp = DO WHILE True pok = pp pp = Pos(sWhere ) pp + ) if pp = then Exit LOOP if pok > then sWhere = Trim(Left(sWhere pok)) return //最后一个逻辑符去掉结束 //至此 用户的WHERE语句部分已经形成完毕于sWhere中
DataWindow: dw_where的 ue_mousemove 事件
功能 控制鼠标的移动
string s_object s_object = This GetObjectAtPointer() if left(s_object ) = value then MainWindow SetMicroHelp( 此时按鼠标右键可粘贴现有值 ) else MainWindow SetMicroHelp( 准备好 ) end if
DataWindow: dw_where的ue_retrieve事件
功能 对数据窗口进行查询 详细请见代码
cha138/Article/program/SQL/201311/16218相关参考
在PB中如何实现数据模糊查询(一) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb
在PB中如何实现数据模糊查询(二) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb
在PB中如何实现数据模糊查询(三) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb
PB在数据窗口中实现某一列的增量查询功能 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在PB的
用PB开发多媒体数据库管理系统(二) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 二查询系统的
在PB中使用FoxPro数据库的方法[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在PB
在PB中应用AutoCAD图形数据库 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! PowerB
在PB中使用FoxPro数据库的方法[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一利用
在PB中如何对ASA进行数据备份[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 命令行方式
在PB中如何对ASA进行数据备份[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一完全备份