Boa tarde,
Segue abaixo o código da minha rotina.
Antes, quero dizer para desculparem o estilo arcaico do meu código. Acontece que não sou um profissional da área, nunca tive tempo para me aprofundar no assunto. Sempre desenvolví pequenas rotinas em clipper para meu próprio uso que me atenderam bem.
Após enviar o pedido de ajuda ao forum, dei umas mexidas e alguma coisa mudou. Mesmo assim, envio o código pois o mesmo está com um erro de lógica e talvez vcs possam me dar uma ajuda.
Trata-se de um arquivo <TotForne> com os campos (pgttCodi, pgttData e pgttValo), rescpectivamente C, D e N.
A partir de uma data entrada em uma variável, monto mais 06 datas, formando, então, 07 datas,
Quero pesquisar no arquivo se estas datas constam no mesmo para cada <pgttCodi>, pois, se constarem é pq tem valor gravado do campo <pgttValo>.
Com isso então, eu mostro na tela:
-------------------------------------------------------------------------------------------------------------------------
Fornecedor | data1 | data1 | data1 | data1 | data1 | data1 | data1 |
-------------------------------------------------------------------------------------------------------------------------
Fornec nro 01 | 541,20 | 0,00 | 169,40 | 25,00 | 0,00 | 0,00 | 240,00 |
-------------------------------------------------------------------------------------------------------------------------
Código: Selecionar todos
*---------------------------------------------------------------------------------------
Function MontarGrade(oDataInicial)
*---------------------------------------------------------------------------------------
Private CodiForn[1000],nDia[7]
Private nValor01[1000],nValor02[1000],nValor03[1000],nValor04[1000]
Private nValor05[1000],nValor06[1000],nValor07[1000]
Private antes,nCtd:=0,vNdia:=1,_nDia:='',mValor:=SPACE(08),arqData:=SPAC(10),varData:=SPAC(10)
nDia[1]:=CTOD(oDataInicial)+0
nDia[2]:=CTOD(oDataInicial)+1
nDia[3]:=CTOD(oDataInicial)+2
nDia[4]:=CTOD(oDataInicial)+3
nDia[5]:=CTOD(oDataInicial)+4
nDia[6]:=CTOD(oDataInicial)+5
nDia[7]:=CTOD(oDataInicial)+6
SELECT TOTFORNE
OrdSetFocus( 'nCodiData' ) // indexado por c¢digo+data
TOTFORNE->(DbGoTop())
antes:=SPAC(04)
DO WHILE!Eof()
nCtd=nCtd+1
If TOTFORNE->pgttCodi#antes
antes:=TOTFORNE->pgttCodi
EndIf
CodiForn[nCtd]:=TOTFORNE->pgttCodi
Do While TOTFORNE->pgttCodi==antes
mValor='nValor'+StrZero(vNdia,2)
If DTOS(TOTFORNE->(FieldGet(2))) != DTOS(nDia[vNdia])
mValor[nCtd]=TOTFORNE->pgttValo
Else
mValor[nCtd]=0.00
EndIf
vNdia=vNdia+1
If vNdia>7
Exit
EndIf
TOTFORNE->(DbSkip())
EndDo
TOTFORNE->(DbSkip())
EndDo
// MostraNaTela()
RETURN
Antecipadamente meus agradecimentos a todos,
Gilvandi