Mostrar Mudança de Situaçao

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Mostrar Mudança de Situaçao

Mensagem por Nascimento »

Amigos estou mudando um pouco meu codigo separei um trecho que é o que nao estou conseguindo fazer
tem 2 tipos de mudança LI ou OC
o que preciso e que se algum dos numeros do quadro mudar a situacao de LI para OC
o programa avise que houve mudança segue o codigo abaixo
agradeço desde já quem poder me ajudar

Código: Selecionar todos

#include 'inkey.ch'

Proc main()
Public aApto:={}
wop2:= 9
cls
use teste
goto top
dados:= space(3)
situ:= space(2)
do while (wop2 != 0)
 do case
   case (LastKey() == K_F2)
	 Index on strzero(val(apt),3) teste               
     @ 01,02 say 'entre com o numero' get dados
     @ 01 ,25 say ' indique a situacao' get situ pict '@!'
    read
    seek Val(alltrim(apt))
    Replace sit with situ
*    replace apt with dados
	  @ 01,02 say space(100)
	  inkeY(1)
	  loop
   otherwise
   inkey(1)
   janela()
	tone(100) 
 end case
end do

**********************************************

procedure janela
   use teste
   goto top
   oc:= 0 
   totap:= LastRec() - 1
   linha:= 5
   v_linha:= 15    
   for i:= 1 to 10
      col:= 38
      do while (!EOF())
         if (col > 73)
            exit
         endif
         col:= col + 4         
         do case         
         case sit = "LI"
            set color to w+/g+  
         case sit = "OC"            
               set color to n/r   
            oc++ 
         endcase
          @ linha, col say apt  
         reg_at:= RecNo()
        aadd(aApto,{ltrim(apt),sit})
         testa(ltrim(apt)+sit) // DA ERRO AQUI e PRECISO DA VERIFICAÇAO CONSTANTE
         skip
      enddo
      if (EOF())        
         exit
      endif
      linha:= linha + 2
   next 
*********************************************
proc testa(cCap)
nAp:=ascan(aApto,{|e| e[1]==cCap})
If aApto[nAp,2] == rigth(cCap,2)
else
 @ 01,02 say 'MUDOU' + cCap
 inkey(0)
 @ 01,02 say space(10)
endif
o banco de dados esta anexado abaixo
teste.rar
Banco de dados
(201 Bytes) Baixado 30 vezes
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Mostrar Mudança de Situaçao

Mensagem por Jairo Maia »

Olá Josivam,

Pelo seu exemplo não foi possível saber exatamente como você faz a checagem de quando houve alteração entre LI e CO, mas é possível entender o motivo do erro.

Veja que a matriz aApto é multidimensional, então no primeiro elemento você coloca ltrim(apt) e no segundo você coloca sit.

Quando você chama a função testa, você chama desta forma: testa(ltrim(apt)+sit), ou seja, envia ambos elementos para o parâmetro cCap da função testa().

Na função testa(), você usa AScan() e compara o elemento 1 com cCap, veja: nAp:=ascan(aApto,{|e| e[1]==cCap}). Então nAp sempre retorna 0 (zero), pois o elemento 1 nunca será igual a cCap, e ai provoca o erro.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Mostrar Mudança de Situaçao

Mensagem por Nascimento »

Amigo jairo justamente nao tem checagem e é isso que estou precisando so nao estou sabendo como fazer
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Mostrar Mudança de Situaçao

Mensagem por Jairo Maia »

Josivam, o que você precisa é avisar que o inquilino mudou (ou que o imóvel está vazio) quando o conteúdo do campo sit for OC? É isso?
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Mostrar Mudança de Situaçao

Mensagem por Nascimento »

isso, mais uma unica vez, supondo o 201 estava em LI e foi pra OC entao preciso so que envie essa mudança de status so uma vez para funçao testa() ate que a mesma mude novamente porque como vc percebe é um loop a cada 1 segundo vai pra funçao janela() ai preciso que a funçao testa() aponte so as que mudaram de Status ignorando as que ficaram no Mesmo, há na linha 18 tem um pequeno erro pra corrigir trocar seek Val(alltrim(apt)) por seek Val(alltrim(dados)) ja tava quase dormindo no teclado rsrs #-)
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Mostrar Mudança de Situaçao

Mensagem por JoséQuintas »

Eu acrescentaria um campo: data de mudança da situação.
Assim poderia ver os ocupados "de hoje", por exemplo, selecionando a data.
De quebra, também poderia ver os livres de hoje. (ou da semana, ou do mes)
Talvez até melhor ter as duas datas.

Exemplo:

Código: Selecionar todos

situacao == "OC" .AND. data == Date()
Outra opção é ter um arquivo de histórico, com todas as mudanças de livre/ocupado.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Mostrar Mudança de Situaçao

Mensagem por Jairo Maia »

JoséQuintas escreveu:Eu acrescentaria um campo: data de mudança da situação.
Boa Idéia!

Josivam, Alterei seu exemplo. Veja se dá uma idéia da forma que ficou. Pelo menos está funcionando como você quer, eu acho:

Código: Selecionar todos

#include 'inkey.ch'

Proc main()
Public aApto:={}
wop2:= 9
cls
use teste

While !Eof()
 AaDd( aApto, { apt, sit } )
 Skip
EndDo

If Len( aApto ) = 0
 Alert( "Arquivo Vazio" )
 Return Nil
EndIf
   
goto top
do while (wop2 != 0)
 do case

   case (LastKey() == K_F2)
    dados:= space(3)
    situ:= space(2)
    Index on Val( AllTrim( apt ) ) To teste
    @ 01,02 say 'entre com o numero' get dados
    @ 01 ,25 say ' indique a situacao' get situ pict '@!'
    read
    seek Val( AllTrim( dados ) )
    If Found()
     Replace sit with situ
    EndIf
    * replace apt with dados
    @ 01,02 say Space(MaxRow())
    loop

  otherwise
  inkey(1)
  janela()
  tone(100) 

  If inkey(1) = K_ESC
   Exit
  EndIf

 end case

end do
Return Nil

**********************************************

procedure janela
   use teste
   goto top
   oc:= 0 
   totap:= LastRec() - 1
   linha:= 5
   v_linha:= 15    
   col:= 38
   do while (!EOF())
      if (col > 73)
         col:= 38
         linha:= linha + 2
      endif
      col:= col + 4         
      If sit = "LI"
         set color to w+/g+  
      ElseIf sit = "OC"            
         set color to n/r   
         oc++ 
      EndIf

      @ linha, col say apt  
      reg_at:= RecNo()

      Testa( apt, sit )

      skip
   enddo

Return Nil

*********************************************
Proc Testa( cAp, cSit )

 nAp := AScan( aApto, { |e| e[1] == cAp } )

 If nAp > 0 .And. aApto[nAp,2] != cSit
  aApto[ nAp, 2 ] := cSit
  @ 01,02 say 'MUDOU => ' + cAp
  inkey(0)
  @ 01,02 say space(30)
 EndIf

Return Nil
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Mostrar Mudança de Situaçao

Mensagem por Nascimento »

jairo em primeiros testes esta funcionando exatamente como eu preciso vou começar a fazer o resto da funçao pra ver como se comporta
muito obrigado a vc e ao amigo quincas e tambem aos demais
amigo quincas nao preciso de datas ate porque é uma mudança quase que constante os status dessa maneira que o jairo fez acho que vai dar certo
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Mostrar Mudança de Situaçao

Mensagem por JoséQuintas »

Não esqueça que a mudança do Jairo vale somente na hora que acabar de alterar.
Se deixar passar a lista, não consegue mais obtê-la.
Gravando a data, pode consultar a qualquer momento.
Conforme sua necessidade, é só escolher.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Mostrar Mudança de Situaçao

Mensagem por Nascimento »

observando parece que deu um pequeno erro quando mudo o Status da 246 ta mudando tambem a da 999
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Mostrar Mudança de Situaçao

Mensagem por Nascimento »

mais é isso nao preciso de consulta futura so em tempo real mesmo mudou avisou parou so isso sem consultas futuras
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Mostrar Mudança de Situaçao

Mensagem por Nascimento »

Amigos ja resolvi a questao da 999
agradeço desde já toda atençao disponibilizada para meu problema
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Mostrar Mudança de Situaçao

Mensagem por Jairo Maia »

JoséQuintas escreveu:Gravando a data, pode consultar a qualquer momento.
No início também achei que se tratava de imobiliária. Mas depois percebi que se trata de controle de portaria para Hotéis e Motéis. Apenas mostra as suítes livres e as ocupadas. Aliás, muito bacana a ideia...
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
Nascimento
Usuário Nível 4
Usuário Nível 4
Mensagens: 763
Registrado em: 19 Jul 2008 12:11
Localização: OLINDA-PE

Mostrar Mudança de Situaçao

Mensagem por Nascimento »

sim é exatamente isso :)
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Responder