MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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


3 participantes

    [Resolvido]Select Case

    Leandro
    Leandro
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1601
    Registrado : 12/11/2009

    [Resolvido]Select Case Empty Select Case

    Mensagem  Leandro 24/5/2011, 19:31

    Boa tarde a todos.
    Preciso montar uma Select Case e com base em pesquisas na net montei essa:

    Private Sub AREAPAV_GotFocus()
    Select Case AREAPAV
    Case M3
    AREAPAV = Me.LARGURAPAV * Me.COMPRIMENTOPAV * Me.ALTURAPAV
    Case M2
    AREAPAV = Me.LARGURAPAV * Me.COMPRIMENTOPAV
    Case H
    Me.AREAPAV = Me.LARGURAPAV
    Case KG
    Me.AREAPAV = Me.LARGURAPAV
    Case KM
    Me.AREAPAV = Me.LARGURAPAV
    Case UD
    Me.AREAPAV = Me.LARGURAPAV
    Case UN_
    Me.AREAPAV = Me.LARGURAPAV

    End Select
    End Sub

    Observações: Coloquei na propriedade GotFocus por que ela tem que fazer o cálculo depois de preenchidos os campos área, largura e comprimento, porém esses campos serão preenchidos somente quando for necessário o cálculo de metro quadrado ou cúbico, nos demais é só lançar o valor do campo LARGURA no campo AREA. O problema é que os cálculos não saem corretos.
    Está certa essa sintaxe?

    Obrigado
    Alexandre Neves
    Alexandre Neves
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8498
    Registrado : 05/11/2009

    [Resolvido]Select Case Empty Re: [Resolvido]Select Case

    Mensagem  Alexandre Neves 24/5/2011, 20:08

    Boa tarde, Leandro

    Não percebi a lógica do código. Ao receber o foco no controlo, utiliza o valor desse controlo para atribuir determinado valor a esse mesmo controlo? Confuso?
    Cumprimentos,
    Leandro
    Leandro
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1601
    Registrado : 12/11/2009

    [Resolvido]Select Case Empty Re: [Resolvido]Select Case

    Mensagem  Leandro 24/5/2011, 20:44

    Alexandre,

    Realmente tem algo errado, na linha: Select Case AREAPAV
    Tem que ser: Select Case PAGOPORPAV
    O resto eu fiz intuitivamente, pois tenho pouquissima experiência em VBA, como seria correto faze-lo?

    Eu imaginei o seguinte: "se tenho o campo área e preciso que ele seja preenchido, porque não pedir ao VBA que o atualize assim que ele ganhar foco". Mas pelo jeito isso não é permitido no código, estou certo?
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Select Case Empty Re: [Resolvido]Select Case

    Mensagem  criquio 24/5/2011, 20:48

    Leandro, poste exemplos para a gente ver. Que números está inserindo? Que resultados são esperados? Que resultados estão sendo imprimidos na caixa?


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    Leandro
    Leandro
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1601
    Registrado : 12/11/2009

    [Resolvido]Select Case Empty Re: [Resolvido]Select Case

    Mensagem  Leandro 24/5/2011, 21:01

    O código agora é assim:

    Private Sub ALTURAPAV_LostFocus()

    Select Case [PAGOPORPAV]
    Case M3
    AREAPAV = Me.LARGURAPAV * Me.COMPRIMENTOPAV * Me.ALTURAPAV
    Case M2
    AREAPAV = Me.LARGURAPAV * Me.COMPRIMENTOPAV
    Case Else
    Me.AREAPAV = Me.LARGURAPAV

    End Select
    End Sub

    ALTURA: É o último campo a receber foco antes ser necessário o cálculo.
    PAGOPORPAV: é onde se define qual cálculo tem que ser feito se para metro cúbico, quadrado ou somente unidade.
    AREAPAV: é onde preciso do cálculo.
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Select Case Empty Re: [Resolvido]Select Case

    Mensagem  criquio 26/5/2011, 00:13

    E funciona ou não?


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    avatar
    Convidado
    Convidado


    [Resolvido]Select Case Empty Re: [Resolvido]Select Case

    Mensagem  Convidado 26/5/2011, 01:04

    Se me permitem... Ao que me parece ele seleciona uma das opcoes (Case) m2 m3 ou outro...
    E comeca a preencher os valores

    LarguraPav
    ComprimentoPav e
    AlturaPav (que ao perder o foco) faz o cálculo para o case escolhido na ÁreaPav)

    Ao que me parece esta certo...

    Saudações
    Leandro
    Leandro
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1601
    Registrado : 12/11/2009

    [Resolvido]Select Case Empty Re: [Resolvido]Select Case

    Mensagem  Leandro 26/5/2011, 12:30

    Caros,

    Infelizmente não funciona, ele faz uns cálculos totalmente toscos, exemplo:

    1,20 * 1,20 * 0,05 = 1,20, quando o certo é: 0,072.

    Estou verificando tudo o que pode estar errado.

    obrigado
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Select Case Empty Re: [Resolvido]Select Case

    Mensagem  criquio 26/5/2011, 12:35

    Amigo, dê uma olhada na formatação dos campos. Deve ter algo errado por aí, pois acabei de fazer uns testes com os valores que você exemplificou e o resultado foi o esperado. Se preferir, coloque uma cópia do aplicativo como anexo aqui no formato zip e seguindo as dicas da minha assinatura ↓↓↓ ou envie para ccsregistros@gmail.com para que eu possa dar uma olhada.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Select Case Empty Re: [Resolvido]Select Case

    Mensagem  criquio 26/5/2011, 14:35

    Olha só: você não mencionou que se tratava de um formulário em modo "Folha de dados". Isso muda o método necessário para fazer funcionar. Formulários simples é diferente de formulário contínuo ou folha de dados, uma vez que no primeiro temos apenas um registro na tela, enquanto que nos outros temos vários registros, sendo um por linha. Os eventos que utilizamos para calcular campos via vba em formulários simples não funcionam para todos os registros nos outros modos, pois veja que ao visualizar o formulário em modo estrutura, temos apenas um campo para cada dado. Esses campos apenas se replicam no modo de visualização de dados. Assim sendo, precisamos montar uma função que percorra os registros no formulário, dependendo do caso, ou colocar o cálculo direto como origem do campo. Nesse caso, o campo fica desvinculado da tabela. Tenha em mente que não é costume armazenar cálculos na tabela. Cálculos costumam ser feitos apenas no formulário e/ou relatório no momento da visualização. Caso seja necessário armazená-lo, teremos que fazê-lo por sql ou RecordSet no vba. Caso não queira armazenar os dados, apenas siga a instrução 1 abaixo. Para armazená-lo, siga as duas etapas:

    1 - Estando o formulário no modo Estrutura, coloque no campo AREAPAV:
    =SeImed([PAGOPORPAV]="M3";[LARGURAPAV]*[COMPRIMENTOPAV]*[ALTURAPAV];SeImed([PAGOPORPAV]="M2";[LARGURAPAV]*[COMPRIMENTOPAV];[LARGURAPAV]))

    2 - Para gravar esse campo na tabela, use a instrução abaixo no evento "Após atualizar" do formulário:
    CurrentDb.Execute "UPDATE TabMediçãoPav SET AREAPAV='" & Me.AREAPAV & "' WHERE Código = " & Me!Código & ";"

    Tente isso e retorne. O campo que você citou como tendo que ficar 0,072 deve ficar com casas decimais = 3.


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    Leandro
    Leandro
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1601
    Registrado : 12/11/2009

    [Resolvido]Select Case Empty Resolvido

    Mensagem  Leandro 26/5/2011, 14:55

    Resolvido

    Muito obrigado Críquio, pela aula também.
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Select Case Empty Re: [Resolvido]Select Case

    Mensagem  criquio 26/5/2011, 15:16

    Obrigado pelo retorno. Só faltou colocar o Resolvido. Dessa vez eu mesmo o faço.
    Mudei tópico para a sala de Formulários, pois os procedimentos são relativos a formulários, ok?


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    Leandro
    Leandro
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1601
    Registrado : 12/11/2009

    [Resolvido]Select Case Empty Re: [Resolvido]Select Case

    Mensagem  Leandro 26/5/2011, 15:22

    Ok!

    Conteúdo patrocinado


    [Resolvido]Select Case Empty Re: [Resolvido]Select Case

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 23/11/2024, 08:14