关于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;}

转载于:https://www.cnblogs.com/perock/archive/2011/03/27/1997309.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值