Estou com dúvidas para fazer uma gambiarra em um código. Dentro de um campo de observação tenho as seguintes informações: "PEDIDO 4500533864 NF 8525 LOTE DE RETORNO 0022307440" Preciso pegar somente o número do lote, pra isso pensei em pegar a posição da palavra "retorno", somar as casas decimais e dar substring. Porém não sei qual a melhor forma para fazer isso.
Da seguinte forma funciona, mas acredito que deva ter alguma forma mais simples HTML: def var c-observacao as char no-undo. for each ped-venda where ped-venda.nr-pedcli = "0021859340" no-lock. if (ped-venda.observacoes matches("*" + "RETORNO" + "*") ) then do: assign c-observacao = replace(ped-venda.observacoes," ",","). assign c-observacao = replace(c-observacao,chr(10),","). MESSAGE entry((lookup("RETORNO",c-observacao) + 1), c-observacao) VIEW-AS ALERT-BOX INFORMATION BUTTONS OK. end. end.
Eu recomendaria você fazer um replace removendo as quebras de linha e pegar pelo ENTRY. Exemplo: Código: DEF VAR texto AS CHAR. DEF VAR xi AS INTEGER. texto = "PEDIDO 4500533864" + CHR(13) + "NF 8525" + CHR(13) + "LOTE DE RETORNO 0022307440". texto = REPLACE(texto,CHR(13)," "). texto = REPLACE(texto,CHR(10)," "). texto = REPLACE(texto," "," "). /* remove espaços extras */ DO xi = 1 TO NUM-ENTRIES(texto," "). IF TRIM(ENTRY(xi,texto," ")) = "RETORNO" THEN DO: xi = xi + 1. MESSAGE ENTRY(xi,texto," ") VIEW-AS ALERT-BOX INFO BUTTONS OK. END. END.