zoukankan      html  css  js  c++  java
  • 客户端动态条件

    有两种方法:

    一、首先要设置服务端的服务AllowWhereSQL为True;

    客户端

    with ClientDataModule.dtCustomers do begin 
    
        Close;
        // Prepares the custom WHERE clause
        Where.Clear;
        Where.AddConditions(['CustomerIdx','FirstName','LastName','City'],
     
                            [cEqual,cLike,cLike,cLike],
     
                            [eCode.Text,eFirstName.Text,eLastName.Text,
     
                             eCity.Text], opAnd);
         Close;
        Memo1.Text:=Where.Clause;
        if Where.Empty
          then stWhereClause.Caption := msg_NoCondition
          else stWhereClause.Caption := Where.Clause;
        MaxRecords := seMaxCustomers.Value;
        Open;
     end;

    说明:
    //一 复合条件
    //    Where.AddConditions(['CustomerID'],
    //                        [cEqual],
    //                        ['ALFKI'], opAnd);
    //二  增加一段条件
    //    Where.AddText('CustomerID = ''ALFKI''');
    //三  增加一个in条件
        Where.AddValueGroup('CustomerID',['ALFKI']);
    // OpenBraket 增加一个左括号,CloseBraket增加一个右括号
    //    Where.OpenBraket;
    //    Where.CloseBraket;


    二、首先要设置服务端的服务AllowDynamicWhere为True;

    Operations between atomic expressions can be:

      

    • comparison (less, less or equal, equal, greater or equal, greater, not equal).
    • likewise (like) for string types.
    • arithmetic (addition, substraction, multiplication, division).
    • occurrences (in) for list expressions.

    The value of the expression can be changed by unary operators (minus, not).

    Examples
    
      WHERE LastName LIKE '%in%'
    
    begin
      with ClientDataModule.tbl_Employees do
      begin
        Close;
        DynamicWhere.Clear;
        DynamicWhere.Expression := DynamicWhere.NewBinaryExpression
          (DynamicWhere.NewField('Employees', 'LastName'),
          DynamicWhere.NewConstant('%in%', datString), dboLike);
        Open();
      end;
    end;
    
    WHERE(LastName LIKE '%in%') OR (Not(EmployeeID = 5))
    
    begin
      with ClientDataModule.tbl_Employees do
      begin
        Close;
        DynamicWhere.Clear;
        DynamicWhere.Expression := DynamicWhere.NewBinaryExpression
          (DynamicWhere.NewBinaryExpression(DynamicWhere.NewField('Employees',
          'LastName'), DynamicWhere.NewConstant('%in%', datString), dboLike),
          DynamicWhere.NewUnaryExpression(DynamicWhere.NewBinaryExpression
          (DynamicWhere.NewField('Employees', 'EmployeeID'),
          DynamicWhere.NewConstant(5, datInteger), dboEqual), duoNot), dboOr);
        Open();
      end;
    end;
    
    WHERE((LastName LIKE '%in%') OR (Not(EmployeeID = 5))) AND
      (FirstName IN ('Nancy', 'Robert'))
    
    var
      lWhereExpression: TDAWhereExpression;
    
    begin
      with ClientDataModule.tbl_Employees do
      begin
        Close;
        DynamicWhere.Clear;
        lWhereExpression := DynamicWhere.NewBinaryExpression
          (DynamicWhere.NewBinaryExpression(DynamicWhere.NewBinaryExpression
          (DynamicWhere.NewField('Employees', 'LastName'),
          DynamicWhere.NewConstant('%in%', datString), dboLike),
          DynamicWhere.NewUnaryExpression(DynamicWhere.NewBinaryExpression
          (DynamicWhere.NewField('Employees', 'EmployeeID'),
          DynamicWhere.NewConstant(5, datInteger), dboEqual), duoNot), dboOr),
          DynamicWhere.NewBinaryExpression(DynamicWhere.NewField('Employees',
          'FirstName'), DynamicWhere.NewList([DynamicWhere.NewConstant('Robert',
          datString), DynamicWhere.NewConstant('Nancy', datString)]),
          dboIn), dboAnd);
        DynamicWhere.Expression := lWhereExpression;
        Open();
      end;
    end;
    
    WHERE(Upper(LastName)LIKE '%IN%')
    
    begin
      with ClientDataModule.tbl_Employees do
      begin
        Close;
        DynamicWhere.Clear;
        DynamicWhere.Expression := DynamicWhere.NewBinaryExpression
          (DynamicWhere.NewMacro('UpperCase(LastName)'),
          DynamicWhere.NewConstant('%IN%', datString), dboLike);
        Open();
      end;
    end;
    end;
  • 相关阅读:
    【cocos2d-x + Lua(2) C++和lua数据通讯之间的互调】
    【cocos2d-x + Lua(1) 绑定Lua并使用tolua++】
    【cocos2d-x 手游研发小技巧(6)聊天系统+字体高亮】
    【cocos2d-x 仙凡奇缘-网游研发(2) 角色换线系统】
    【cocos2d-x 仙凡奇缘-网游研发(1) 登录&注册】
    python数据分析---第04章 NumPy基础:数组和矢量计算
    python面向对象(一)
    python 常用模块之random,os,sys 模块
    (python数据分析)第03章 Python的数据结构、函数和文件
    python常用模块之时间模块
  • 原文地址:https://www.cnblogs.com/leonkin/p/3208699.html
Copyright © 2011-2022 走看看