Campos pai e filho no dataset

Gostaria de saber como buscar campos pai e filho do dataset de um formulário, não consegui localizar os campo da tabela pai e filho.

Olá Thiago,

Voce já tentou utilizar as constraint desse jeito?


 //Cria as constraints para buscar os campos filhos, passando o tablename, número do formulário e versão
        var c1 = DatasetFactory.createConstraint("tablename", "tbTelefone" ,"tbTelefone", ConstraintType.MUST);
        var c2 = DatasetFactory.createConstraint("metadata#id", documentId, documentId, ConstraintType.MUST);
        var c3 = DatasetFactory.createConstraint("metadata#version", documentVersion, documentVersion, ConstraintType.MUST);
        var constraintsFilhos = new Array(c1, c2, c3);

        //Busca o dataset
        var datasetFilhos = DatasetFactory.getDataset("dataset_formulario", null, constraintsFilhos, null);

        for (var j = 0; j < datasetFilhos.rowsCount; j++) {
            //Adiciona os valores nas colunas respectivamente.
            dataset.addRow(new Array(
                    documentId,                       
                    nr_solicitacao,                    
                    datasetFilhos.getValue(j, "ddi_fone"),
                    datasetFilhos.getValue(j, "ddd_fone"), 
                    datasetFilhos.getValue(j, "fone"),
                    datasetFilhos.getValue(j, "padrao_fone"),
                    datasetFilhos.getValue(j, "tipo_telefone")
                    ));
        }

Nesse exemplo, eu criei um dataset só para receber os campos da tabela pai-filho do formulario

Boa tarde! Tiago

Obrigado por responder, entendi seu exemplo, mais os campos da tabela pai e filho não encontrei no dataset do formulário quando fiz busca no dataset no TDS.

Esqueci de avisa que estou fazendo a consulta do dataset no zoom.

Você pode criar um outro dataset pra pegar os dados do Pai x Filho.

Segue exemplo abaixo:

  • tenho o dataset do meu formulário: dsFormChamadoAdmFinanceiro

  • o Pai x Filho do meu formulário está com esse tablename: tbNotasInternas


function createDataset(fields, constraints, sortFields) {
    //Cria as colunas
    var dataset = DatasetBuilder.newDataset();
    dataset.addColumn("NumProcesso");
    dataset.addColumn("NumFormulario");
    dataset.addColumn("Id");
    dataset.addColumn("txt_dataNotaInternaPaiFilho");
    dataset.addColumn("txt_descNotaInternaPaiFilho");

    //Cria a constraint para buscar os formulários ativos
    var constraints = new Array();
    constraints.push(DatasetFactory.createConstraint("metadata#active", true, true, ConstraintType.MUST));

    var datasetPrincipal = DatasetFactory.getDataset("dsFormChamadoAdmFinanceiro", null, constraints, null);

    for (var i = 0; i < datasetPrincipal.rowsCount; i++) {
        var WKNumProces     = datasetPrincipal.getValue(i, "WKNumProces");
        var documentId      = datasetPrincipal.getValue(i, "metadata#id");
        var documentVersion = datasetPrincipal.getValue(i, "metadata#version");

        //Cria as constraints para buscar os campos filhos, passando o tablename, número da formulário e versão
        var constraintsFilhos = new Array();
        constraintsFilhos.push(DatasetFactory.createConstraint("tablename", "tbNotasInternas" ,"tbNotasInternas", ConstraintType.MUST));
        constraintsFilhos.push(DatasetFactory.createConstraint("metadata#id", documentId, documentId, ConstraintType.MUST));
        constraintsFilhos.push(DatasetFactory.createConstraint("metadata#version", documentVersion, documentVersion, ConstraintType.MUST));

        //Busca o dataset
        var datasetFilhos = DatasetFactory.getDataset("dsFormChamadoAdmFinanceiro", null, constraintsFilhos, null);

        for (var j = 0; j < datasetFilhos.rowsCount; j++) {
            //Adiciona os valores nas colunas respectivamente.
            dataset.addRow(new Array(
                    WKNumProces,
                    documentId,
                    datasetFilhos.getValue(j, "wdk_sequence_id"),
                    datasetFilhos.getValue(j, "txt_dataNotaInternaPaiFilho"), 
                    datasetFilhos.getValue(j, "txt_descNotaInternaPaiFilho")));
        }
    }

    return dataset;
}

Boa tarde Gabriel Franco,
Estou usando seu exemplo, porém os dados que vem do paiFilho não gravam no dataset customizado. Quando removo o paiFilho e uso apenas Form Simples, grava em ambos os datasets.
Na linha → constraintsFilhos.push(DatasetFactory.createConstraint(“tablename”, “tbNotasInternas” ,“tbNotasInternas”, ConstraintType.MUST));
Em → tablename → passei o nome da tabela paiFilho, está correto?
Porém, por ser paiFilho o nome dela incrementa com → __1, _2 __3
Como proceder ?

Bom dia @Jean, em tablename não é o atributo name que você tem que passar, é o atributo tablename. Coloque aqui como está seu dataset.

meu aqui deu certo nao fico processando ate retorna o erro http 502

Boa tarde a todos.

Busquei o dataset do formulário via TDS (e via Eclipse também na perspectiva fluig) e não me apareceu lá o campo "tablename". Apareceu um campo "tableid". Coloquei no filtro esse campo "tableid" e comparei com o nome da minha tabela de formulário com o tipo MUST e não retornou nada. Alguma dica? Esse campo "tablename" realmente não aparece quando uso o "Visualização de Dataset" dentro do TDS ou Eclipse?

Obrigado a todos.

Esse campo tablename não aparece

Então neste caso eu só conseguirei obter essas informações criando um dataset customizado, é isso?

Boa tarde! isso mesmo só consegue criando um dataset.

1 curtida