none
Como filtrar dados a partir de dois ranges de datas? RRS feed

  • Pergunta

  • Olá galera

    Tenho uma dúvida e nem sei por onde começar.

    Devo mostrar os dados em um grid de acordo com os limites 'de' e 'até' das datas de entrada e de término de uma operação. A parte de se escolher as datas tem +/- essa aparência:

    Data de Entrada: xx/xx/xxx         a: xx/xx/xxxx

    Data Fim operação: xx/xx/xxxx    a: xx/xx/xxxx

    Provavelmente resolvo isso com uma query, mas como sou novo neste mundo de SQL tbm, e no AX, ñ sei como resolver isso, ainda ñ compreendi o funcionamento das queries.

    Tenho um form que faz algo parecido mas com apenas um range de datas. Vou estudá-lo como base, ñ sei se estou no caminho certo.

    Se souberem como fazer, ou conhecerem algum site sobre essa questão, agradeço.

    T+

     

    quinta-feira, 6 de maio de 2010 14:54

Respostas

  • Da uma olhada nesse código, fiz agora até para testar se o que eu pensei ia funcionar e funciona!

     

    static void Job1(Args _args)
    {
      Query                query;
      QueryBuildDataSource        qbds;
      QueryBuildRange           qbr;
      QueryRun              qr;
      VendInvoiceJour           vendInvoiceJour;
      ;
      
      query    = new Query();
      qbds    = query.addDataSource(tableNum(VendInvoiceJour));
      qbr     = qbds.addRange(fieldNum(VendInvoiceJour, InvoiceDate));
      qbr.value("01012009..06052010");
      qr = new QueryRun(query);
      while(qr.next())
      {
        vendInvoiceJour = qr.get(tableNum(VendInvoiceJour));
        info(vendInvoiceJour.invoiceId);
      }
    }

    Isso ai funciona, basta alterar a query do seu form e pronto, ta resolvido.

     

    []s

    Pichler


    []s Pichler
    • Sugerido como Resposta Ricardo Pichler quinta-feira, 6 de maio de 2010 16:33
    • Marcado como Resposta ade10x100 quinta-feira, 6 de maio de 2010 17:32
    quinta-feira, 6 de maio de 2010 16:33

Todas as Respostas

  • Da uma olhada nesse código, fiz agora até para testar se o que eu pensei ia funcionar e funciona!

     

    static void Job1(Args _args)
    {
      Query                query;
      QueryBuildDataSource        qbds;
      QueryBuildRange           qbr;
      QueryRun              qr;
      VendInvoiceJour           vendInvoiceJour;
      ;
      
      query    = new Query();
      qbds    = query.addDataSource(tableNum(VendInvoiceJour));
      qbr     = qbds.addRange(fieldNum(VendInvoiceJour, InvoiceDate));
      qbr.value("01012009..06052010");
      qr = new QueryRun(query);
      while(qr.next())
      {
        vendInvoiceJour = qr.get(tableNum(VendInvoiceJour));
        info(vendInvoiceJour.invoiceId);
      }
    }

    Isso ai funciona, basta alterar a query do seu form e pronto, ta resolvido.

     

    []s

    Pichler


    []s Pichler
    • Sugerido como Resposta Ricardo Pichler quinta-feira, 6 de maio de 2010 16:33
    • Marcado como Resposta ade10x100 quinta-feira, 6 de maio de 2010 17:32
    quinta-feira, 6 de maio de 2010 16:33
  • Sim, vi que funciona.

    Eu já ia perguntar como fazer mais um range, q no caso eu precisava de dois pares de datas, mas decidi fazer um teste aqui e funcionou.

    Fiz este teste num AX com dados de exemplo da microsoft.

      qbr     = qbds.addRange(fieldNum(VendInvoiceJour, DueDate));
      qbr.value("07092008..07092008");
      qbr     = qbds.addRange(fieldNum(VendInvoiceJour, InvoiceDate));
      qbr.value("05242008..05252008");

    Comentando um dos ranges, o resultado mostrado no info será diferente do que quando uso os dois ranges. No caso é o que eu precisava, 2 ranges.

    Com isso já me viro.

    Valeu mais uma vez pela ajuda.

    T+

    quinta-feira, 6 de maio de 2010 17:31
  • Na verdade, você nem precisa usar o qbr, basta você adicionar os ranges direto no qbds, aldo do tipo:

     

    qbds.addRange(fieldNum(VendInvoiceJour, DueDate)).value("07092008..07092008");

    qbds.addRange(fieldNum(VendInvoiceJour, InvoiceDate)).value("05242008..05252008");

     

    Já resolveria seu caso, o qbr e outros são só para você ter o step by step e não ficar tão confuso.

    Abraço.


    []s Pichler
    quinta-feira, 6 de maio de 2010 17:39
  • É, essa parte eu sabia.

    E agora fuçando aqui naquele form q eu disse q tinha, e q só filtrava um range de datas, nele mesmo tinha outro range, mas era de campo enum.

    Valeu pela força.

    T+

    quinta-feira, 6 de maio de 2010 18:33