zoukankan      html  css  js  c++  java
  • 获取Range并添加到QueryRun

    系统的Query可能没办法做到这样的需求:根据不同的情况用不同的表进行关联,形成DataSource
    比如要做一张杂项收费的报表,需要查看销售订单的杂项收费情况以及对应的订单号.杂项收费可能关联到客户发票的主表CustInvoiceJour,也可能关联到明细表CustInvoceTrans.
    这种情况下就必须分别构造两个不同的Query
    1.如果杂项收费是关联到主表的,则只需要将MarkUpTrans和CustInvoiceJournal关联,
    2.如果杂项收费是关联到从表的,则需要将MarkUpTrans,CustInvoiceTrans和CustInvoiceJournal三个表关联.
    由于是自己构造的Query,用户在Dialog处用select选择的Range的值不会加到Query上,必须写代码关联过来,下面的代码显示了关联的过程,DataSource按照情况2构造.
    QueryRun BuildDetailQueryRun()
    {
        QueryRun qrDetail;
        QueryRun qrOriginal;
        Query q;
        QueryBuildDataSource qbdsMarkUpTransOriginal;
        QueryBuildDataSource qbdsInvoiceJournalOriginal;
        QueryBuildDataSource qbdsInvoiceTransOriginal;

        QueryBuildDataSource qbdsMarkUpTrans;
        QueryBuildDataSource qbdsInvoiceJournal;
        QueryBuildDataSource qbdsInvoiceTrans;
        
    int i;
        ;
        q 
    = new Query();
        qbdsMarkUpTrans 
    = q.addDataSource(tableNum(markUpTrans));
        qbdsInvoiceTrans 
    = qbdsMarkUpTrans.addDataSource(tableNum(CustInvoiceTrans));
        qbdsInvoiceTrans.relations(
    true);

        qbdsInvoiceJournal 
    = qbdsInvoiceTrans.addDataSource(tableNum(CustInvoiceJour));
        qbdsInvoiceJournal.relations(
    true);

        qrOriginal 
    = new QueryRun(this);

        qbdsMarkUpTransOriginal 
    = qrOriginal.query().dataSourceTable(tableNum(markUpTrans));
        
    for( i = 1; i <= qbdsMarkUpTransOriginal.rangeCount();i++)
              qbdsMarkUpTrans.addRange(fieldName2Id(tableNum(markUpTrans),qbdsMarkUpTransOriginal.range(i).name())).value(qbdsMarkUpTransOriginal.range(i).value());

        qbdsInvoiceJournalOriginal 
    = qrOriginal.query().dataSourceTable(tableNum(CustInvoiceJour));
        
    for( i =1 ;i<= qbdsInvoiceJournalOriginal.rangeCount();i++)
              qbdsInvoiceJournal.addRange(fieldName2Id(tableNum(custInvoiceJour),qbdsInvoiceJournalOriginal.range(i).name())).value(qbdsInvoiceJournalOriginal.range(i).value());

        qbdsInvoiceTransOriginal 
    = qrOriginal.query().dataSourceTable(tableNum(CustInvoiceTrans));
        
    for( i = 1; i<=qbdsInvoiceTransOriginal.rangeCount();i++)
              qbdsInvoiceTrans.addRange(fieldName2Id(tableNum(custInvoiceTrans),qbdsInvoiceTransOriginal.range(i).name())).value(qbdsInvoiceTransOriginal.range(i).value());


        qrDetail 
    = new QueryRun(q);
        
    return qrDetail;
    }

    代码很简单也就不解释了.
  • 相关阅读:
    报错:Failed to create BuildConfig class
    emulator control无法使用问题
    the import android cannot be resolved
    报错:init: Could not find wglGetExtensionsStringARB!
    Android SDK升级后报错error when loading the sdk 发现了元素 d:skin 开头无效内容
    Eclipse Android环境搭建
    android中导入低版本project可能会遇到的编译问题(转自: Victor@Beijing)
    22.9
    GIT文档
    机器学习的几个问题探讨
  • 原文地址:https://www.cnblogs.com/Farseer1215/p/507100.html
Copyright © 2011-2022 走看看