Usuário com melhor resposta
Como filtrar dados a partir de dois ranges de datas?

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+
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
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
-
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+
-
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 -