知识大全 在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中如何实现数据模糊查询(一)

在PB中如何实现数据模糊查询(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb

知识大全 在PB中如何实现数据模糊查询(二)

在PB中如何实现数据模糊查询(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb

知识大全 在PB中如何实现数据模糊查询(三)

在PB中如何实现数据模糊查询(三)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb

知识大全 PB在数据窗口中实现某一列的增量查询功能

PB在数据窗口中实现某一列的增量查询功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在PB的

知识大全 用PB开发多媒体数据库管理系统(二)

用PB开发多媒体数据库管理系统(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  二查询系统的

知识大全 在PB中使用FoxPro数据库的方法[2]

在PB中使用FoxPro数据库的方法[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在PB

知识大全 在PB中应用AutoCAD图形数据库

在PB中应用AutoCAD图形数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  PowerB

知识大全 在PB中使用FoxPro数据库的方法[1]

在PB中使用FoxPro数据库的方法[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一利用

知识大全 在PB中如何对ASA进行数据备份[2]

在PB中如何对ASA进行数据备份[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  命令行方式

知识大全 在PB中如何对ASA进行数据备份[1]

在PB中如何对ASA进行数据备份[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一完全备份