Dataset com condição.

Boa tarde. Estou com dificuldade na seguinte questão.? Tenho um Zoom no qual pego o "tipo" e outro que pego a "conta contabil". Tabela Conta_Contabil existe o campo "Tipo" porem nem todos estão informados.

fluig 1.png

Meu dataset do segundo zoom que recebe como constraints o "tipo" deve seguir a seguinte regra.

Recebe constraints e retorna dataset Caso o retorno seja nulo | branco "não venha informação nenhuma. Refazer a consulta sem a constraints ai trara todas as informações.

Será que isso é possivel.

Dataset

function createDataset(fields, constraints, sortFields) {

    var fonteDados = retornarEmpresaTabela();

    var sqlStr = "SELECT TOP 50 RTRIM(LTRIM(CT1_CONTA)) AS CT1_CONTA," +
                 " RTRIM(LTRIM(CT1_CONTA)) + ' - ' + RTRIM(LTRIM(CT1_DESC01)) AS CT1_DESC01, CT1_CLASSE, CT1_TPPROD" + 
                 " FROM " + fonteDados.banco + "CT10" + fonteDados.tabela + "0" + 
                 " WHERE CT1_CLASSE = '2' AND D_E_L_E_T_ <> '*' "

    if (constraints != null) {
        for (var i = 0; i < constraints.length; i++) {
            if (constraints[i].fieldName == "CT1_TPPROD") {
                sqlStr = sqlStr + " AND (CT1_TPPROD LIKE '%" + constraints[i].initialValue + "%')"                
            }else if (constraints[i].fieldName == "CT1_DESC01") {
                sqlStr = sqlStr + " AND (RTRIM(LTRIM(CT1_TPPROD)) + ' - ' + RTRIM(LTRIM(CT1_DESC01)) LIKE '%" + constraints[i].initialValue + "%')"
            }
        }
    }

    var cst1 = DatasetFactory.createConstraint("SQL", sqlStr, sqlStr, ConstraintType.MUST);
    var filtro = new Array(cst1);
    var dataset = DatasetFactory.getDataset("dsSQL", null, filtro, null);
    log.info("###### DATASET: " + dataset);
    return dataset;

}
function createDataset(fields, constraints, sortFields) {

    var minhaQuery = "SELECT * FROM PREFER_PASTA ";

    if (constraints != null) {
        for (var i = 0; i < constraints.length; i++) {
            if (constraints[i].fieldName == "SQL") { 
                minhaQuery = constraints[i].initialValue;
            }
        }
     }

    if(fields != null){
        minhaQuery = fields[0];
    }
    var dataSource = "jdbc/FluigDS";
    log.info("###### SQL: " + minhaQuery);
    var newDataset = DatasetBuilder.newDataset();
    var ic = new javax.naming.InitialContext();
    var ds = ic.lookup(dataSource);
    var created = false;
    try {
       var conn = ds.getConnection();
       var stmt = conn.createStatement();
       var rs = stmt.executeQuery(minhaQuery);
       var columnCount = rs.getMetaData().getColumnCount();
       while(rs.next()) {
           if(!created) {
               for(var i=1;i<=columnCount; i++) {
                   newDataset.addColumn(rs.getMetaData().getColumnName(i));
               }
               created = true;
           }
           var Arr = new Array();
           for(var i=1;i<=columnCount; i++) {
               var obj = rs.getObject(rs.getMetaData().getColumnName(i));
               if(null!=obj){
                   Arr[i-1] = rs.getObject(rs.getMetaData().getColumnName(i)).toString();
               }
               else {
                   Arr[i-1] = "null";
               }
           }
           newDataset.addRow(Arr);
       }
    } catch(e) {
       log.info(" ####### ERRO==============> " + e.message);
    } finally {
       if(stmt != null) stmt.close();
       if(conn != null) conn.close();                     
    }
    return newDataset;
}
compartilhar
  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do fluig Forum!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags datasets zoom sql ou faça a sua própria pergunta.