Criar Dataset Novo Copiando Dataset de Formulario

Boa tarde,

Pessoal estou com uma dificuldade em criar um Novo dataset copiando um Dataset (Interno) criado por um formulário, porém sem os campos de "metadata#" que o Dataset (Interno) criados por formulário possuem. Gostaria de criar esse novo Dataset apenas trazendo as outras colunas (sem os metadatas).

function createDataset(fields, constraints, sortFields) { //Cria as colunas var dataset = DatasetBuilder.newDataset(); dataset.addColumn("Empresa"); dataset.addColumn("Fornecedor"); dataset.addColumn("NotaFiscal"); dataset.addColumn("DataLancamento");

var constraintInterno = new Array(); constraintInterno.push(DatasetFactory.createConstraint("drop_emp", null, null, null)); constraintInterno.push(DatasetFactory.createConstraint("numfornecedor", null, null, null)); constraintInterno.push(DatasetFactory.createConstraint("numnf", null, null, null)); constraintInterno.push(DatasetFactory.createConstraint("datalancFiltro", null, null, null));

var sortingFieldsInterno = new Array("drop_emp", "numfornecedor", "numnf", "datalancFiltro");

var datasetInterno = DatasetFactory.getDataset("ds_form_Lancamento_NF", sortingFieldsInterno, constraintInterno, null);

for (var i = 0; i < datasetInterno.rowsCount; i++) {

//Adiciona os valores nas colunas respectivamente. dataset.addRow(new Array( datasetInterno.getValue(j, "Empresa"), datasetInterno.getValue(j, "Fornecedor"), datasetInterno.getValue(j, "NotaFiscal"), datasetInterno.getValue(j, "DataLancamento"))); }

return dataset; }

Att.

Pode compartilhar o código do seu dataset, por favor?

Marcos, Codigo Copiado.

Apenas para avisar no codigo os ultimos valores estão com “j”, mas mesmo alterando para “i”, não funciona…

Carlos,

ali no final pra alimentar o seu dataset vc tem que dar o getValue() usando o nome dos campos do formulário e não da sua nova coluna:


function createDataset(fields, constraints, sortFields) { 

    var dataset = DatasetBuilder.newDataset(); 
    dataset.addColumn("Empresa"); 
    dataset.addColumn("Fornecedor"); 
    dataset.addColumn("NotaFiscal"); 
    dataset.addColumn("DataLancamento");

    var returnFields = new Array("drop_emp", "numfornecedor", "numnf", "datalancFiltro");

    var datasetInterno = DatasetFactory.getDataset("ds_form_Lancamento_NF", returnFields, null, null);

    for (var i = 0; i < datasetInterno.rowsCount; i++) {

        dataset.addRow(new Array( datasetInterno.getValue(i, "drop_emp"), datasetInterno.getValue(i, "numfornecedor"), datasetInterno.getValue(i, "numnf"), datasetInterno.getValue(i, "datalancFiltro"))); }

    return dataset; 

}

Caso você queira todos os campos do formulário só tirando os metadatas, você pode tentar algo assim:


function createDataset(fields, constraints, sortFields) {

    var dataset = DatasetBuilder.newDataset();

    var form = DatasetFactory.getDataset("ds_form_Lancamento_NF", null, null, null);

    var allColumns = form.getColumnsName();

    for (var i = 0; i < allColumns.length; i++) {
        if (allColumns[i].startsWith('metadata#')) {
            continue;
        }
        dataset.addColumn(allColumns[i]);
    }

    var selectedColumns = dataset.getColumnsName(); 

    for(var i = 0; i < form.rowsCount; i++) {
            var newRow = new Array();
            for (var j = 0; j < selectedColumns.length; j++) {
                newRow.push(form.getValue(i, selectedColumns[j]));
            }
            dataset.addRow(newRow);
        }

        return dataset;

}

Muitissimo Agradecido, os dois codigos funcionaram perfeitamente.

Att.