microfly Posted November 18, 2017 Report Share Posted November 18, 2017 (edited) Bom dia a todos tenho que usar do while com macro pois tenho 3 opcoes e cada opcao tem uma condicao diferente exemplo da opcao 2 If T_Escolha_Forma_Calculo = 2 Folfun->(OrdSetFocus("arqfun16")) condicao:="Str(folfun->Fun_Codemp,4)+Str(folfun->fun_alocac,8) >= Str(M->vCodemp,4)+Str(Codigo1,8) .and. Str(folfun->Fun_Codemp,4)+Str(folfun->fun_alocac,8)<=Str(M->vCodemp,4)+Str(Codigo2,8) .and. !folfun->(eof())" ? condicao _reg:=folfun->(recno()) Do while &Condicao // da erro aqui alquem poderia me ajudar solucionar esse problema ou estou fazendo algo errado ? Apagar() Folfun->(Dbskip()) Enddo folfun->(Dbgoto(_reg)) Endif Do while &condicao Apagar() T_TXT_001 := Str(FolFun->Fun_Matric,5) T_TXT_002 := ALLTRIM(FolFun->Fun_Nome) oT_TXT_001 : Refresh() oT_TXT_002 : Refresh() Folfun->(Dbskip()) Enddo folfun->(Dbgoto(_reg)) ALERT('Calculo Por Setor' ) *--------------------------------------------------------------------------------------------------------------------------------------------* Desde de já muito obrigado atodos Luiz Carlos Nogueira (Batata) Paulinia - SP zap (11) 96969-3667 Edited November 18, 2017 by microfly erro de descrição Quote Link to comment Share on other sites More sharing options...
aferra Posted November 18, 2017 Report Share Posted November 18, 2017 eu faria desta maneia condicao:="Str(folfun->Fun_Codemp,4)+Str(folfun->fun_alocac,8) >= Str(M->vCodemp,4)+Str(Codigo1,8) .and. Str(folfun->Fun_Codemp,4)+Str(folfun->fun_alocac,8)<=Str(M->vCodemp,4)+Str(Codigo2,8)" Do while !folfun->(eof()) IF &(Condicao) Apagar() ENDIF skip enddo microfly 1 Quote Link to comment Share on other sites More sharing options...
microfly Posted November 18, 2017 Author Report Share Posted November 18, 2017 eu faria desta maneia condicao:="Str(folfun->Fun_Codemp,4)+Str(folfun->fun_alocac,8) >= Str(M->vCodemp,4)+Str(Codigo1,8) .and. Str(folfun->Fun_Codemp,4)+Str(folfun->fun_alocac,8)<=Str(M->vCodemp,4)+Str(Codigo2,8)" Do while !folfun->(eof()) IF &(Condicao) Apagar() ENDIF skip enddo obrigado pela força , abs Quote Link to comment Share on other sites More sharing options...
Jorge Andrade Posted November 20, 2017 Report Share Posted November 20, 2017 Bom dia a todos tenho que usar do while com macro pois tenho 3 opcoes e cada opcao tem uma condicao diferente exemplo da opcao 2 If T_Escolha_Forma_Calculo = 2 Folfun->(OrdSetFocus("arqfun16")) condicao:="Str(folfun->Fun_Codemp,4)+Str(folfun->fun_alocac,8) >= Str(M->vCodemp,4)+Str(Codigo1,8) .and. Str(folfun->Fun_Codemp,4)+Str(folfun->fun_alocac,8)<=Str(M->vCodemp,4)+Str(Codigo2,8) .and. !folfun->(eof())" ? condicao _reg:=folfun->(recno()) Do while &Condicao // da erro aqui alquem poderia me ajudar solucionar esse problema ou estou fazendo algo errado ? Apagar() Folfun->(Dbskip()) Enddo folfun->(Dbgoto(_reg)) Endif Do while &condicao Apagar() T_TXT_001 := Str(FolFun->Fun_Matric,5) T_TXT_002 := ALLTRIM(FolFun->Fun_Nome) oT_TXT_001 : Refresh() oT_TXT_002 : Refresh() Folfun->(Dbskip()) Enddo folfun->(Dbgoto(_reg)) ALERT('Calculo Por Setor' ) *--------------------------------------------------------------------------------------------------------------------------------------------* Desde de já muito obrigado atodos Luiz Carlos Nogueira (Batata) Paulinia - SP zap (11) 96969-3667 Amigo, mesmo sabendo que a solução já foi dada pelo Alessandro, mas há muito, li que macro não deve ser usada num laço de WHILE, embora depois da evolução das ferramentas, não sei se acharam uma solução. []s, microfly 1 Quote Link to comment Share on other sites More sharing options...
microfly Posted November 20, 2017 Author Report Share Posted November 20, 2017 Amigo, mesmo sabendo que a solução já foi dada pelo Alessandro, mas há muito, li que macro não deve ser usada num laço de WHILE, embora depois da evolução das ferramentas, não sei se acharam uma solução. []s, vlw vou procurar algo a respeito mais estou com problema com o AFILL Application =========== Path and name: C:\FOLHAFWH\Folhafwh.Exe (32 bits) Size: 4,422,656 bytes Time from start: 0 hours 0 mins 15 secs Error occurred at: 20/11/2017, 19:39:43 Error description: Error BASE/9999 Argument error: AFILL Args: [ 1] = U [ 2] = N 0 abraços e obrigado Luiz Carlos Nogueira(Batata) Quote Link to comment Share on other sites More sharing options...
aferra Posted November 21, 2017 Report Share Posted November 21, 2017 pelo que entendi do problema do afill é que está errado a forma de passar os parâmetros. se mostrares como estás fazendo ficaria mais fácil de ajudar. quanto ao uso de macro. "mas há muito" olha, põem muito tempo nisso, acredito que no clipper 5,2 era o problema com macros, além de outros(rsrsrs como tinha essa versão). no (x)harbour nunca tive algum problema sobre essa questão. microfly 1 Quote Link to comment Share on other sites More sharing options...
Jorge Andrade Posted November 21, 2017 Report Share Posted November 21, 2017 pelo que entendi do problema do afill é que está errado a forma de passar os parâmetros. se mostrares como estás fazendo ficaria mais fácil de ajudar. quanto ao uso de macro. "mas há muito" olha, põem muito tempo nisso, acredito que no clipper 5,2 era o problema com macros, além de outros(rsrsrs como tinha essa versão). no (x)harbour nunca tive algum problema sobre essa questão. Foi o que eu disse doçura ahauhauhaua " embora depois da evolução das ferramentas, não sei se acharam uma solução.", como eu não costumo usar, então, não sei se funciona. []s, microfly 1 Quote Link to comment Share on other sites More sharing options...
Theotokos Posted November 22, 2017 Report Share Posted November 22, 2017 tente assim Do while &(Condicao) microfly 1 Quote Link to comment Share on other sites More sharing options...
microfly Posted November 23, 2017 Author Report Share Posted November 23, 2017 pelo que entendi do problema do afill é que está errado a forma de passar os parâmetros. se mostrares como estás fazendo ficaria mais fácil de ajudar. quanto ao uso de macro. "mas há muito" olha, põem muito tempo nisso, acredito que no clipper 5,2 era o problema com macros, além de outros(rsrsrs como tinha essa versão). no (x)harbour nunca tive algum problema sobre essa questão. vlw meu amigo , mais eu ja resolvi sua ideia foi muito boa obrigado Quote Link to comment Share on other sites More sharing options...
evandro Posted November 23, 2017 Report Share Posted November 23, 2017 Olá, Evite o uso de macro SEMPRE. Tem outra forma de fazer isto. Pode ter certeza. microfly 1 Quote Link to comment Share on other sites More sharing options...
microfly Posted November 26, 2017 Author Report Share Posted November 26, 2017 bom dia Obrigados a todos que me responderam para arrumar uma solução, mais funcionou como &Condicao eu tinha errado na matriz que compunha a condicao:={"?????" }. agradeço a todos muito obrigado Luiz Carlos Nogueira (Batata) skype suporte.microfly zap (11) 96969-3667 (19) 3844-8556 - Paulínia - SP Quote Link to comment Share on other sites More sharing options...
emotta Posted November 29, 2017 Report Share Posted November 29, 2017 Olá, Evite o uso de macro SEMPRE. Tem outra forma de fazer isto. Pode ter certeza. Evandro pq evitar sempre? Os grandes diferenciais do (x)Harbour perante outras linguagens é justamente Macro e também Code Block. Eu pessoalmente uso macro desde que aprendi clipper em 1993 e nunca tive problemas, recomendo a usar.... Theotokos 1 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted November 29, 2017 Report Share Posted November 29, 2017 Emotta, nunca vi um While assim: while &Condicao - lCondicao // .T. ou .F. tudo blz, &Condicao never. http://harbour.edu.pl/clipper/pt/ng803b0.html http://harbour.edu.pl/clipper/pt/nga84f7.html https://harbour.github.io/ng/c53g01c/ngff79f.html https://harbour.github.io/ng/c53g01c/ngff79f.html Abs. Quote Link to comment Share on other sites More sharing options...
emotta Posted November 30, 2017 Report Share Posted November 30, 2017 Emotta, nunca vi um While assim: while &Condicao - lCondicao // .T. ou .F. tudo blz, &Condicao never. http://harbour.edu.pl/clipper/pt/ng803b0.html http://harbour.edu.pl/clipper/pt/nga84f7.html https://harbour.github.io/ng/c53g01c/ngff79f.html https://harbour.github.io/ng/c53g01c/ngff79f.html Abs. Olá, Evite o uso de macro SEMPRE. Tem outra forma de fazer isto. Pode ter certeza. Eu tb nunca tinha visto e nem usado... Mas cada um tem a sua necessidade.., Eu me referi na minha resposta ao uso de Macro em geral, não especificamente desta maneira citada... O Evandro disse para evitar uso de macro sempre e eu discordo, eu uso macro (e code block) e muito e acho um grande diferencial da linguagem (x)Harbour com relação a outras... É questão de opinião. Mas faço a ressalva que usar macro torna o código mais dificil de depurar quando não se usa. Também concordo com relação a buscar outra forma de fazer essa condição no WHILE em vez de macro ali. abraços Quote Link to comment Share on other sites More sharing options...
Eroni Posted November 30, 2017 Report Share Posted November 30, 2017 Boa tarde, minha recomendação é que abandone macros e outras similaridades. Use bloco de código, tipo assim: bBlock := {|| Str(folfun->Fun_Codemp,4)+Str(folfun->fun_alocac,8) >= Str(M->vCodemp,4)+Str(Codigo1,8) .and. Str(folfun->Fun_Codemp,4)+Str(folfun->fun_alocac,8)<=Str(M->vCodemp,4)+Str(Codigo2,8) .and. !folfun->(eof()) } do while eval( bBlock ) skip enddo ou então assim: bBlock := {|| Str(folfun->Fun_Codemp,4)+Str(folfun->fun_alocac,8) >= Str(M->vCodemp,4)+Str(Codigo1,8) .and. Str(folfun->Fun_Codemp,4)+Str(folfun->fun_alocac,8)<=Str(M->vCodemp,4)+Str(Codigo2,8) } do while !eof() if eval( bBlock ) apagar()....... endif skip enddo Já li a muitos atrás ( Rick Spence, 1990 e poucos ) que bloco de código executa milhares de vezes mais rápido do que macro. Mas cada um tem sua maneira, é apenas uma sujestão. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.