1
resposta

[Projeto] Erro ao coletar itens selecionados em combobox PowerApps

Estou criando um app no Power Apps e tenho um formulário com 3 caixas de combinação (RAMO, ASSUNTO e SUBASSUNTO), e elas são de múltiplas escolhas. O que preciso é que quando alguém selecione, por exemplo: RAMO = Auto; ASSUNTO = Apólice e Proposta; SUBASSUNTO = Cancelamento, ASE e Segunda via, seja criada uma matriz combinando as 3 opções e criar uma chave juntando essas opções escolhidas, como na tabela abaixo:

RAMOASSUNTOSUBASSUNTOCHAVE
AUTOApóliceCancelamentoAUTOApóliceCancelamento
AUTOApóliceASEAUTOApóliceASE
AUTOApóliceSegunda viaAUTOPropostaSegunda via
AUTOPropostaCancelamentoAUTOApóliceCancelamento
AUTOPropostaASEAUTOApóliceASE
AUTOPropostaSegunda viaAUTOPropostaSegunda via

Formula já usada:

ClearCollect( RamoSelecionado; DataCardValue7.SelectedItems );; ClearCollect( AssuntoSelecionado; DataCardValue2.SelectedItems );; ClearCollect( SubassuntoSelecionado; DataCardValue12.SelectedItems );;

ClearCollect( Combinacoestodas; ForAll( RamoSelecionado; ForAll( AssuntoSelecionado; ForAll( SubassuntoSelecionado; { RAMO:ThisRecord.Value; ASSUNTO:AssuntoSelecionado[@Value]; SUBASSUNTO:SubassuntoSelecionado[@Value]; CHAVE: ThisRecord.Value & "" & AssuntoSelecionado[@Value] & "" & SubassuntoSelecionado[@Value] } ) ) ) )

1 resposta

Matheus, o problema parece estar relacionado à forma como você está acessando os valores dentro dos ForAll. O uso de ThisRecord e [@Value] pode gerar conflitos ou resultados inesperados quando usado dessa forma aninhada. Uma sugestão corrigida para a sua fórmula, com nomes de variáveis mais explícitos dentro dos loops para evitar ambiguidade:

ClearCollect(RamoSelecionado, DataCardValue7.SelectedItems);
ClearCollect(AssuntoSelecionado, DataCardValue2.SelectedItems);
ClearCollect(SubassuntoSelecionado, DataCardValue12.SelectedItems);

ClearCollect(
    Combinacoestodas,
    ForAll(
        RamoSelecionado As ramo,
        ForAll(
            AssuntoSelecionado As assunto,
            ForAll(
                SubassuntoSelecionado As subassunto,
                {
                    RAMO: ramo.Value,
                    ASSUNTO: assunto.Value,
                    SUBASSUNTO: subassunto.Value,
                    CHAVE: ramo.Value & assunto.Value & subassunto.Value
                }
            )
        )
    )
);
  • Uso de aliases (As ramo, As assunto, As subassunto) permite que você acesse os valores de forma clara e sem conflito entre os ForAll.
  • Isso evita que ThisRecord aponte para o nível errado do loop.
  • A CHAVE está sendo criada corretamente como a concatenação das três escolhas.

Se ainda não funcionar, vale conferir se os campos Value realmente contêm os textos desejados. Em alguns casos, os ComboBox retornam objetos mais complexos (como registros com campos Title, Nome, etc.), e pode ser necessário usar outro campo além de Value.