Datasets são obrigatórios?

Em primeiro lugar, meu conhecimento de Fluig é pequeno e já intuo que meu conceito sobre datasets e constraints em Javascript estão errados, porque me parece absurda a proposição que acredito ter entendido.

Vamos lá:

Para acessar um banco de dados externo, tipo um Oracle, só é possível via Datasets? Não seria possível consultar um banco de dados através de um Serviço e, a partir dele, diretamente através de uma instrução SQL?

Minha dúvida decorre de um seguinte cenário: Por exemplo, eu posso pesquisar registros em tabelas de 1998. De lá para cá, os registros cresceram enormemente. Para reduzir a quantidade de registros, posso fazer um dataset que selecione apenas documentos daquele ano. A partir disto, pelos constraints em Javascript, posso filtrar dados dentro daquele ano.

Mas, se eu precisar fazer pesquisa no ano de 1999, terei de fazer outro dataset e outro código javascript.

Isto me parece absurdo, como afirmei inicialmente, mas creio que estou completamente enganado.

Mas, não sei como sair da situação de ter de fazer um dataset com tudo que existe numa tabela (select sem clásula where).

Depois, no javascript, através de constraints, filtrar o que preciso saber da massa de dados.

Mas isto, claro, traz uma custo enorme.

Minha sugestão para isso seria.

1º Cria um serviço no Fluig que irá consultar o banco de dados externo. (https://tdn.totvs.com/pages/releaseview.action?pageId=243660796)

2º Cria um Dataset Customizado para acessar um banco externo. Exemplo de criação do dataset no titulo "Construindo o Dataset para acesso à nova conexão"(https://tdn.totvs.com/display/public/fluig/Datasets+acessando+banco+de+dados+externo)

3º Cria uma sintaxe para o valor da Constraints para pegar a informação do ano.


    var cAno = "";

    if (constraints && constraints.length) {
        for (var i = 0; i < constraints.length; i++) {
           if (constraints[i].fieldName == "ANO") {
             cAno = constraints[i].initialValue;
           }
        }
    }

4º Ajusta o exemplo do dataset alterando as linhas.


   var dataSource = "/jdbc/MeuDataSet"; // Inclui no lugar do MeuDataset o nome do serviço criado no item 1

   var myQuery = "select * from pessoas"; // Altera o select de acordo com a busca que você fará no banco de dados, aqui você inclui a sintaxe no Where para filtrar o Ano. Exemplo "select * from faturamento where ANO = '"+cAno"' ";

5º Exporta o dataset e testa. Uma dica para efetuar o teste é uma um outro dataset que irá chamar esse dataset, dessa forma você conseguirá testar o dataset externo sem precisar colocar num form. Obs. No exemplo do link o dataset terá todas as informações retornadas na query, dessa forma, importante é colocar no select apenas os campos esperados.