zoukankan      html  css  js  c++  java
  • 关于AX中的Query是如何查询记录

      Query不用来单独查询数据,常用于创建QueryRun对象,Query是静态的

     Query query = new Query();  如果构造Query时不指定参数则创建一个临时的Query,那就就不会储存到AOT中
        // 使用query构造QueryRun对象
        QueryRun qr = new QueryRun (query);
        ;
     Qyery创建之后就可以调用addDataSource方法用于向Query中添加一个数据源
    queryBuildDataSource = query.addDataSource(TableNum(CustTable));  //TableNum获取一个表的ID
    有了数据源就可以构建一个 queryBuildRange  对象,调用queryBuildDataSource 的addRange方法构建,addRange()的参数是fieldID,需用FieldNum来获得,FieldNum有两个参数,一个是表名一个是字段名。
    queryBuildRange = queryBuildDataSource.addRange(FieldNum(CustTable,AccountNum));

    现在queryBuildRange构造之后就可以添加匹配条件了,调用queryBuildRange的 value方法,参数是str类型,返回值也是str,这个value返回什么内容目前不清楚,看MSDN说明好像是存储一个字符串用。

    queryBuildRange.value("4000..5000");        // 这里的意思是在AccountNum字段上设置一个匹配条件为4000至5000 

    经过以上操作之后,现在query中有了数据源,也有了匹配条件,那么接下来就是运行这个query了

    要运行query需用queryRun对象

    queryRun = new queryRun(query);
    QueryRun的Next方法与Get方法通常于循环取出Query中的记录
    如:
    {
        queryRun qr;
        CustTable ct;
        // ...
        if (qr.prompt())
        {
            while (qr.next())
            {
                if (qr.Changed(tableNum(CustTable)))  //确定指定的数据源获取了一个新的值
                {
                    ct = qr.Get (tableNum(CustTable)); // 从queryrun中获取记录
                    print ct.AccountNum;
                }
            }
        }
    }

     

    查询包含一个或多个数据源对应的数据库表中。 指定的数据源使用 QueryBuildDataSource 对象

    指定范围使用 queryBuildRange 对象

    static void PrintCustTrans(Args _args)

    {    CustTable   tmpCust,selTbl; 

      Query   query; 

      QueryBuildDataSource    queryBuildDataSource; 

      QueryBuildRange     queryBuildRange;

        QueryRun    queryRun; 

      ; 

       if ( hasSecurityKeyAccess(securityKeyNum(SysDevelopment),        AccessType::Edit) ) 

      {  

      //select * from custTable where custTable.AccountNum == '1000001'; 

      query = new Query();

          queryBuildDataSource = query.addDataSource(tablenum(CustTable)); 

          queryBuildRange = queryBuildDataSource.addRange(fieldnum(CustTable,AccountNum));

        queryBuildRange.value("1000001..1000006");

        queryRun = new QueryRun(query); 

      if (queryRun.prompt())   

    {   

    while (queryRun.next())   

    {       

    if (queryRun.changed(tableNum(Custtable)))       

    {           

    tmpCust = queryRun.get(tablenum(Custtable)); 

             print tmpCust.AccountNum;     

      }        

      }   

    }     

      }   

    pause;}

  • 相关阅读:
    杭电1005
    幂运算
    oj题目分类
    js判断手机或Pc端登陆.并跳转到相应的页面
    sessionStorage或localStorage实现注册登录demo
    html5手机端定位
    微信小程序开发基础知识总结
    eCharts.js使用心得
    前端性能优化--图片懒加载(lazyload image)
    19 款仿 Bootstrap 后台管理主题下载,finrUI控件,好用的ui框架
  • 原文地址:https://www.cnblogs.com/perock/p/1997309.html
Copyright © 2011-2022 走看看