Olá pessoal!
Preciso de uma ajuda com o uso da ferramenta "multi-row formula" sem usar o delimitador para dividir pois o arquivo tem diferentes estruturas.
Necessito alterar sempre a linha seguinte do arquivo quando encontrar o seguinte parâmetro:
Se |A100| e conter |908| então alerar a linha de baixo se for |A170| ,modificando os últimos caracteres
Regra: substituir de |52300|| para |42630||
Abaixo, um trecho do código que já tentei e não consegui (lembrando que no uso da tool não estou criando um new field e sim mantendo a configuração como "Update Existing Field")
[Usando a tool Multi-Row Formula]
IF Left([Field_1], 6) = "|A100|" AND Contains([Field_1], "|908|")
AND [Row+1:Field_1] = "|A170|" AND (Right([Field_1], 8)= "|52300||")
THEN Replace([Field_1], "|52300||", "|42630||")
ELSE [Field_1]
ENDIF
OBS: em uma das outras tentativas que fiz com uso da tool Multi-Row Formula (usando outra tentativa de código), no arquivo original houve divergência no tamanho do arquivo em relação ao original após salvar, notando o aumento de alguns kbs.
=====================
Se possuir também um método para usar a tool "fórmula", aceito a dica bem como também alguma outra tool ou linha de código.
Obrigado.
Segue em anexo um pequeno Sample
Solucionado! Ir para Solução.
Boa tarde @Andymesmo
Testa essa aqui:
IF ((Left([Row-1:Field_1], 6) = "|A100|" AND Contains([Row-1:Field_1], "|908|")) and (contains([Field_1],"|A170|") AND (Contains([Field_1],"|52300||"))))
THEN Replace([Field_1], "|52300||", "|42630||")
ELSE [Field_1] ENDIF
Acho que deu certo
Abraços
Muito obrigado pela instrução que tem passado.
Vi que eu estava usando a sintaxe de uma outra forma e que do modo o qual sugeriu deu tudo certo como esperado.
Poderia por favor só esclarecer por que inicia com Left([Row-1:Field_1], 6) = "|A100|" e não com Left([Field_1], 6) = "|A100|" ?
Obrigado.
Fala @Andymesmo tudo bem? Por nada.
Cara na verdade, quando estava olhando sua fórmula apenas resolvi inverte a lógica de olhar a linha de baixo primeiro (Row+1) e olhar a de cima (Row-1), como os dados começam sempre com uma linha nula, pois a anterior a primeira é nula, eu resolvi testar a lógica assim e funcionou. Só tentei pensar um pouco diferente.
Abraços
Perfeito @carlosteixeira
Eu insisti de outras formas mas sempre colocar o row+1 primeiro.
Que bom deu certo ao inverter para ler o row-1 primeiro hahaa.....
Agradeço novamente.