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.
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.
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 3Como proceder ?
— Jean Varlet 01 de Dec de 2017Bom dia @Jean, em tablename não é o atributo name que você tem que passar, é o atributo tablename. Coloque aqui como está seu dataset.
— Gabriel Franco da Rocha Nascimento 04 de Dec de 2017meu aqui deu certo nao fico processando ate retorna o erro http 502
— Rodrigo Miranda 27 de Sep de 2021Olá 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.
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
— Gabriel Franco da Rocha Nascimento 08 de Nov de 2017Então neste caso eu só conseguirei obter essas informações criando um dataset customizado, é isso?
— Cassius 08 de Nov de 2017Boa tarde! isso mesmo só consegue criando um dataset.
— Thiago Batista da Silva 08 de Nov de 2017