MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


    [Resolvido]Alterar as imagens de status de vários pictures usando o comando For

    lukdogdog
    lukdogdog
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 21/06/2012

    [Resolvido]Alterar as imagens de status de vários pictures usando o comando For Empty [Resolvido]Alterar as imagens de status de vários pictures usando o comando For

    Mensagem  lukdogdog em 19/6/2019, 07:14

    Boa noite, estou aqui novamente solicitando uma pequena ajuda, ha quem possa me ajudar, a tirar uma dúvida de como eu posso utilizar um comando para que o sistema não fique tão pesado na hora de carregar as informações...
    Tenho um sistema de restaurante, e coloquei num form 100 imagens pra exibir o status das mesas. "Livre/Ocupada/Pediu a Conta"
    as imagens ficam dentro da pasta e muda a figura a cada vez que da o comando pra abrir, ocupar, ou pedir a conta da mesa.
    Ele estava funcionando direitinho, mas o código que fiz ficou enorme, e acaba pesando na hora de executar. então decidi tentar fazer algo mais curto, pelo menos tentando..rsrs, usando um loop pra consultar o status das mesas e mudar a figura, como podem ver abaixo
    Em um módulo:
    Código:

    Function AtualizaMesas()
    Dim status As String
    Dim rot As String
    Dim i As Integer
    Dim caminho As String
    dim mesa as string
    For i = 1 To 100
    status = "m" & i       ' vai exibindo o nome das mesas de m1, m2, m3.... até m100
    rot = "frmcadmov!rotulo" & i    'nome dos rótulos para descrição das mesas: Mesa1, Mesa2, Mesa3..... até Mesa100

    caminho = "Forms!frmcadmov!fig" & i & ".picture"  'pega o nome do campo da figura no form conforme o loop fig1, fig2, fig3...... até 100

    status = DLookup("me_livre", "ConsultaStatusMesas", "me_id=" & i)    'pega o status da mesa livre: "S, N"

    rot = DLookup("me_local", "ConsultaStatusMesas", "me_id=" & i)  ' pega o nome da mesa para colar no rótulo no form

    If status = "S" Then
     p = (Application.CurrentProject.path & "\config\ML.bmp")   'aqui seria para colar a imagem figura Mesa livre, conforme o nome fig1, fig2, fig3......
    Else
     If DLookup("[pediuconta]", "ConsultaMesas", "me_id=" & i) = "1" Then
     caminho = (Application.CurrentProject.path & "\config\MF.bmp")   'aqui seria para colar a imagem figura Pediu a Conta, conforme o nome fig1, fig2, fig3......
     Else
     caminho = (Application.CurrentProject.path & "\config\MO.bmp")   ' aqui seria para colar a imagem figura Mesa Ocupada, conforme o nome fig1, fig2, fig3......
     End If
    End If
    Next i

    End Function

    Ate então o codigo roda sem dar erro, eu abro as mesas normal, porem não altera as figuras
    Eu acho que o erro esta aqui:
    caminho = "Forms!frmcadmov!fig" & i & ".picture"
    caminho = (Application.CurrentProject.path & "\config\ML.bmp")
    rot = "frmcadmov!rotulo" & i
    esses dois comando não aparecem nada
    avatar
    renpv
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 182
    Registrado : 12/01/2015

    [Resolvido]Alterar as imagens de status de vários pictures usando o comando For Empty Re: [Resolvido]Alterar as imagens de status de vários pictures usando o comando For

    Mensagem  renpv em 19/6/2019, 19:18

    Já tentou exibir o conteúdo dessas variáveis no debug ou msgbox?

    Só olhando pro código fica difícil de saber onde está o erro. Muito difícil.

    Se você quiser que a gente ajude, nos ajude a lhe ajudar.

    Monte pelo menos um exemplo pronto pra gente baixar e testar.
    lukdogdog
    lukdogdog
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 21/06/2012

    [Resolvido]Alterar as imagens de status de vários pictures usando o comando For Empty Re: [Resolvido]Alterar as imagens de status de vários pictures usando o comando For

    Mensagem  lukdogdog em 25/6/2019, 04:18

    Boa noite Renpv
    Desde ja agradeço pela atenção

    Ja fiz a depuração e não acha erro.
    Ja tentei diversas outras formas aqui, alguma coisa não estou sabendo fazer
    Realmente, olhando o código como esta feito fica melhor pra entender.
    Segue uma cópia da aplicação.

    Att
    Anexos
    [Resolvido]Alterar as imagens de status de vários pictures usando o comando For AttachmentRestaurante.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (1.4 Mb) Baixado 12 vez(es)
    avatar
    renpv
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 182
    Registrado : 12/01/2015

    [Resolvido]Alterar as imagens de status de vários pictures usando o comando For Empty Re: [Resolvido]Alterar as imagens de status de vários pictures usando o comando For

    Mensagem  renpv em 25/6/2019, 17:00

    Eu fiz u pequeno e simples exemplo que está funcional para o que você quer.
    Dê uma olhada como eu fiz e veja se dá pra adaptar ao seu sistema.
    Anexos
    [Resolvido]Alterar as imagens de status de vários pictures usando o comando For Attachmentdelivery.zip
    Apenas um exemplo de como atualizar as imagens de botões
    Você não tem permissão para fazer download dos arquivos anexados.
    (168 Kb) Baixado 11 vez(es)
    lukdogdog
    lukdogdog
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 21/06/2012

    [Resolvido]Alterar as imagens de status de vários pictures usando o comando For Empty Re: [Resolvido]Alterar as imagens de status de vários pictures usando o comando For

    Mensagem  lukdogdog em 26/6/2019, 11:27

    Olá Renpv..
    Adaptei o código aqui no meu sistema, funcionou perfeitamente!
    Ao abrir a tela de mesas ficou mais rápido, comparado o que eu tinha feito antes. Me serviu de grande ajuda...
    Porém, deixa eu te fazer só mais uma pergunta..
    Eu uso um Intervalo de tempo na tela de mesas e a cada 15 segundos roda a função "atualizarmesas", devido a utilização de outros terminais..
    quando a ação é executada, a tela congela por quase 2 segundos até terminar de fazer o loop. acontecia a mesma coisa anteriormente, so que um pouco mais demorado como era antes,  e no momento da digitação dos itens, acaba atrapalhando.
    Tem algum outro meio de executar esse intervalo de tempo sem que a tela dê essa travada?
    No momento a solução que eu arranjei foi desativar o intervalo de tempo quando abrisse a tela de venda, e volta o intervalo quando fecha a venda.
    No seu exemplo roda quase que imperceptível, mas pq vc utilizou 20 mesas como exemplo, no meu sistema tem 100
    avatar
    renpv
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 182
    Registrado : 12/01/2015

    [Resolvido]Alterar as imagens de status de vários pictures usando o comando For Empty Re: [Resolvido]Alterar as imagens de status de vários pictures usando o comando For

    Mensagem  renpv em 26/6/2019, 23:22

    Pelo que entendi a sua necessidade é manter a tela atualizada, nesse caso a tela atualiza a cada 15 segundos.
    Existem várias formas de contornar esse problema. Vou te dar umas opções e você vê o que talvez seja melhor pro seu caso.
    1 - Não atualiza periodicamente. Na prática, dificilmente um garçom vai lançar um novo cliente em uma mesa que já esteja ocupada. Ainda assim, se o garçom clicar numa mesa que esteja ocupada, nesse momento, o sistema faz a verificação apenas daquela mesa, pra não usar muito recurso da aplicação. Caso esteja ocupada, dá uma mensagem de aviso. Caso contrário, apresenta a tela de abertura de mesa.
    2 - Cria uma rotina para atualizar a imagem da mesa quando o mouse passar em cima. Essa rotina vai consumir mais recursos porque até você chegar com o mouse em cima da mesa 5 eventualmente você vai ter que passar por outras tantas mesas e cada uma delas é uma rotina que roda.
    3 - Cria um botão para atualizar o status das mesas. Também pode criar uma tecla de atalho.

    Qualquer uma dessas opções consome menos recursos do que a forma como você faz atualmente. Imagine que, atualmente, se o sistema ficar parado por 10 minutos ele vai fazer 40 consultas ao banco de dados e atualizar a tela 40 vezes. Leve em conta também que você está fazendo isso com 100 controles.

    PS:
    - Provavelmente existam outras opções.
    - Pense também na possibilidade de trocar as imagens com extensão BMP por imagens de extensão PNG, JPG ou GIF. Compare a qualidade da imagem com os tamanhos. Isso também influencia no desempenho do sistema.
    lukdogdog
    lukdogdog
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 21/06/2012

    [Resolvido]Alterar as imagens de status de vários pictures usando o comando For Empty Re: [Resolvido]Alterar as imagens de status de vários pictures usando o comando For

    Mensagem  lukdogdog em 2/7/2019, 00:37

    Boa noite renpv..
    no caso o mais adequado foi criar um botão para atualizar o status das mesas.
    E tb atualizar assim que fechar a janela de venda
    Como um todo ja esta resolvido...
    Grato pela ajuda.

    Conteúdo patrocinado

    [Resolvido]Alterar as imagens de status de vários pictures usando o comando For Empty Re: [Resolvido]Alterar as imagens de status de vários pictures usando o comando For

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 16/9/2019, 00:00