Information générale
Catégorie:
Codage, syntaxe et commandes
Versions des environnements
Network:
Windows 2008 Server
>Hello comunity
>
>i have the following prg , but my problem is in the case statment because is only excute the first one , i mean is put the value on my cursor teste , field :ecredito, and i don´t know why :
>
>if left(analist.caption,21)='Integração de RECIBOS'
>
> proc_analitica()
>
> mensagem("Operação Concluída..." + chr(13) + chr(13) + "Atenção, se o ecrã não fechar e reabrir, Por favor feche e clique no botão observar...","directa")
>
> keyboard "{ALT+O}"
> keyboard "{ALT+O}"
>
> else
>
> mensagem("Atenção, esta operação é só para integração de documentos de Facturação...","directa")
>
> return .f.
>
>endif
>
>procedure proc_analitica()
>
> Local lc_strsql
> Local myeuro as double
> Local mypte as double
>
> myeuro = 0.00
> mypte = 0.00
>
> store "" to lc_strsql
>
> select distinct oristamp from teste where (teste.edebito = 0 and teste.ecredito = 0) into cursor crspivo
> select crspivo
> go top
>
> scan
>
> text to lc_strsql noshow
> select re.no,re.contado,re.ndoc,cl.conta as 'ContaCCO',cl.contaacer as 'ContaADT'
> from re (nolock) inner join cl (nolock) on cl.no = re.no and
> cl.estab = re.estab where re.restamp = ?crspivo.oristamp
> endtext
>
> if u_sqlexec(lc_strsql,"crsmovextra")
>
> text to msel textmerge noshow pretext 7
> select top 1 rl.erec as 'vleuro', rl.rec as 'vlpte' from rl (nolock) inner join re (nolock) on rl.restamp = re.restamp
> and re.restamp = ?crspivo.oristamp
> endtext
>
> if u_sqlexec(msel,[CValores])
> myeuro = CValores.vleuro
> mypte = CValores.vlpte
> else
> msg(msel)
> endif
> else
> msg(lc_strsql)
> endif
>
> select crsmovextra
> go top
>
> if reccount() > 0
>
> select teste
> scan
> do case
>
> case teste.conta = '2111' and (teste.ecredito = 0 and teste.edebito = 0) and teste.oristamp = crspivo.oristamp
> update teste set teste.ecredito = myeuro, teste.credito = mypte where teste.oristamp = crspivo.oristamp
>
> case teste.conta = '11' and (teste.edebito = 0 and teste.ecredito = 0) and teste.oristamp = crspivo.oristamp
> update teste set teste.edebito = myeuro, teste.debito = mypte , teste.conta = crsmovextra.ContaADT ;
> where teste.oristamp = crspivo.oristamp
> endcase
> endscan
> endif
>
> select crspivo
> endscan
>
>endproc
>
>The STAMP crspivo.oristamp is the same for this 2 lines of movment (ADM11051282771,594000001) , but not the account, the first one begin on 211(complete account is : 2111101396), and the second one begin on 11 (complete account is : 111)
>
>Could someone help me.
>
>Best regards
>Luis Santos
I think that testa,conta will never be '11' since you call this procedure (procedure proc_analitica ) with condition
if left(analist.caption,21)='Integração de RECIBOS',
Also cant find a creation of teste in your code.
I believe it would be easier to answer your question with some sample data.
In any case, it could very well be a data problem.
Regards,
Koen
Précédent
Répondre
Voir le fil de ce thread
Voir le fil de ce thread à partir de ce message seulement
Voir tous les messages de ce thread
Voir tous les messages de ce thread à partir de ce message seulement