Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Srs. Bom dia!
Alguém pode me ajudar com a função While?
Vou fazer uma carga onde tenho os campos numero do contrato e numero do ponto
Para um numero do contrato eu posso ter um ou mais numero do ponto
Preciso criar um terceiro campo que vai ser tipo um contador iniciado em 0 e agrupado por contrato,
Então um contrato com duas linhas preciso ter um campo qualquer com uma linha 0 e uma linha 1 e assim por diante.
Acredito que com While é possível fazer, mas não tenho afinidade com a utilização do mesmo.
Alguém pode me ajudar com o entendimento ou com algum exemplo.
Obrigado.
Boa tarde, Antônio!
Pelo que entendi, não será necessário usar While.
O código abaixo vai contar as linhas de cada NUMERO_CONTRATO, começando do zero, ordenado pelo campo NUMERO_PONTO:
[DOCUMENT_LINES]:
LOAD
NUMERO_CONTRATO,
NUMERO_PONTO,
'BO' AS IDENTIFICADOR,
If(NUMERO_CONTRATO = Peek(NUMERO_CONTRATO), Peek(LINENUM)+1, 0) as LINENUM
RESIDENT BASE
Order By
NUMERO_CONTRATO asc,
NUMERO_PONTO asc
;
Resultado:
NUMERO_CONTRATO | NUMERO_PONTO | LINENUM |
---|---|---|
43 | 32 | 0 |
58 | 2 | 0 |
58 | 6 | 1 |
100 | 50 | 0 |
103 | 3 | 0 |
103 | 5 | 1 |
103 | 7 | 2 |
104 | 9 | 0 |
Abs,
Felipe
Você poderia postar seu código?
Minha duvida é justamente em como criar esse código.
Este é o Load
[DOCUMENT_LINES]:
LOAD
NUMERO_CONTRATO
NUMERO_PONTO
'BO' AS IDENTIFICADOR
LINENUM // Aqui precisa ser um contator iniciando em Zero
RESIDENT
BASE;
Antonio
Tenho um código de exemplo que percorre uma tabela:
FOR X = 0 to FieldValueCount('Caminho')-1;
LET vCaminho = Peek('Caminho', $(X), 'Lista de Caminho');
LET vArquivo = Peek('Arquivo', $(X), 'Lista de Caminho');
LET vAmbiente = Peek('Ambiente',$(X), 'Lista de Caminho');
IF Len('$(vCaminho)') > 1 then
->ADD SEU LOAD AQUI <-
ENDIF
NEXT X;
Essa não é a solução, más talvez seja o caminho das pedras.
Atenciosamente,
Tiago Ferrucio
Boa tarde, Antônio!
Pelo que entendi, não será necessário usar While.
O código abaixo vai contar as linhas de cada NUMERO_CONTRATO, começando do zero, ordenado pelo campo NUMERO_PONTO:
[DOCUMENT_LINES]:
LOAD
NUMERO_CONTRATO,
NUMERO_PONTO,
'BO' AS IDENTIFICADOR,
If(NUMERO_CONTRATO = Peek(NUMERO_CONTRATO), Peek(LINENUM)+1, 0) as LINENUM
RESIDENT BASE
Order By
NUMERO_CONTRATO asc,
NUMERO_PONTO asc
;
Resultado:
NUMERO_CONTRATO | NUMERO_PONTO | LINENUM |
---|---|---|
43 | 32 | 0 |
58 | 2 | 0 |
58 | 6 | 1 |
100 | 50 | 0 |
103 | 3 | 0 |
103 | 5 | 1 |
103 | 7 | 2 |
104 | 9 | 0 |
Abs,
Felipe
Felipe,
Simples assim ?
E eu estava pensando num código gigante com While......
Funcionou exatamente do jeito que eu precisava.
Muito Obrigado pela ajuda!
Atte.
Mercadante
Olá Felipe,
sei que já se passou algum tempo da sua resposta, mas encontrei-a nesse momento e gostaria de deixar registrado que me ajudou muito também!!
Att.
Gilberto