Jump to content
Fivewin Brasil

Do While com macro


microfly

Recommended Posts

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 by microfly
erro de descrição
Link to comment
Share on other sites

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

Link to comment
Share on other sites

 

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

Link to comment
Share on other sites

 

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,

Link to comment
Share on other sites

 

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)

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

 

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,

Link to comment
Share on other sites

 

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

 

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....

Link to comment
Share on other sites

 
 

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...