Versão atual:

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;
}

Versão (1):

Ver a versão formatada

Dataset com condição.

Comentário

new question