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]Operadores matemáticos (+;-;*;/)

    avatar
    maasd1971
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 28
    Registrado : 06/11/2012

    [Resolvido]Operadores matemáticos (+;-;*;/) Empty [Resolvido]Operadores matemáticos (+;-;*;/)

    Mensagem  maasd1971 1/2/2014, 17:58

    Boa tarde,
     
    Tenho uma base de dados em que o utilizador é que decide qual a operação que pretende efectuar (+;-;*;/), entre os indicadores.
     
    Para que o utilizador possa escolher, coloquei os operadores num campo.
     
    No entanto tenho dois problemas:
     
    1-Como dizer numa consulta que o conteudo daquele campo (operador) serve para fazer uma conta?
     
    2-Sendo seis indicadores tenho de considerar as regras das prioridades da matemática (multiplar e dividir primeiro, somar e subtrair no fim)
     
    Ex.:
    Variavel = (Indicador1 / Indicador2) + Indicador3
     
    Este utilizador escolhe os indicadores e decide como relaciona-las, criando uma variável que vai ser disponibilizada a um outro utilizador que não tem acesso à contrução de variáveis.
     
    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]Operadores matemáticos (+;-;*;/) Empty Re: [Resolvido]Operadores matemáticos (+;-;*;/)

    Mensagem  criquio 1/2/2014, 18:14

    Não sei se entendi muito bem mas é possível passar uma string como origem do controle igual fazemos manualmente com o formulário em modo Design/Estrutura:

    = ([Campo1] / [Campo2]) + [Campo3]

    Via VBA seria algo assim:

    Código:
    Me.Campo4.SourceControl = "= ([Campo1] / [Campo2]) + [Campo3]"

    Veja se ajuda.


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


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 28
    Registrado : 06/11/2012

    [Resolvido]Operadores matemáticos (+;-;*;/) Empty Re: [Resolvido]Operadores matemáticos (+;-;*;/)

    Mensagem  maasd1971 1/2/2014, 18:31

    O Operador é variável, logo eu não sei se soma, subtrai, multiplica ou divide, pelo que seria mais assim:
     
    = ([Campo Indicador1] [Campo operador1] [Campo Indicador2]) [Campo operador2] [Campo Indicador3]
     
    ….não sei como é que o ponho a fazer a conta.
    Avelino Sampaio
    Avelino Sampaio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3900
    Registrado : 04/04/2010

    [Resolvido]Operadores matemáticos (+;-;*;/) Empty Re: [Resolvido]Operadores matemáticos (+;-;*;/)

    Mensagem  Avelino Sampaio 1/2/2014, 18:35

    Ola!

    Veja se atende :

    http://maximoaccess.forumeiros.com/t6588-resolvidodigitar-formula-em-um-campo-e-apresentar-o-resultado

    Aguardamos


    .................................................................................
    Vídeos, livros, kit MontaRibbons e acesso vitalício ao site UsandoAcces  
    Clique AQUI e analise o custo beneficio do material oferecido.
    avatar
    maasd1971
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 28
    Registrado : 06/11/2012

    [Resolvido]Operadores matemáticos (+;-;*;/) Empty Re: [Resolvido]Operadores matemáticos (+;-;*;/)

    Mensagem  maasd1971 1/2/2014, 19:05

    Existe uma tabela com os indicadores possiveis e estão em linha na tabela, por exemplo da tabela:

    ID Indicador Valor
    1 Indicador1 110
    2 Indicador2 120
    3 Indicador3 130

    Como podem existir muitos indicadores não é viável coloca-los em campo(coluna).
    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]Operadores matemáticos (+;-;*;/) Empty Re: [Resolvido]Operadores matemáticos (+;-;*;/)

    Mensagem  criquio 1/2/2014, 19:09

    Mas como serão definidos os operadores? Aonde eles ficarã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
    maasd1971
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 28
    Registrado : 06/11/2012

    [Resolvido]Operadores matemáticos (+;-;*;/) Empty Re: [Resolvido]Operadores matemáticos (+;-;*;/)

    Mensagem  maasd1971 1/2/2014, 19:21

    Os operadores estão em campo, numa Combo Box (penso que seja este o nome)
    Junto a BD o que estou a fazer.
    Anexos
    [Resolvido]Operadores matemáticos (+;-;*;/) AttachmentIncentivos_V4 - Cópia.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (46 Kb) Baixado 6 vez(es)
    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]Operadores matemáticos (+;-;*;/) Empty Re: [Resolvido]Operadores matemáticos (+;-;*;/)

    Mensagem  criquio 1/2/2014, 21:36

    Então estás a tentar fazer isso em uma consulta, certo? Utilize o Iif para, caso o operador seja multiplicação ou divisão, colocar parêntese. Algo do tipo

    Código:
    NomeCampo: "=" & Iif([Operador1]="*" Or [Operador1]="/";"(";"") & [Valor1] & [Operador1] & [Valor2] & Iif([Operador1]="*" Or [Operador1]="/";")";"")

    Veja se consegue adaptar o restante.


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


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 28
    Registrado : 06/11/2012

    [Resolvido]Operadores matemáticos (+;-;*;/) Empty Re: [Resolvido]Operadores matemáticos (+;-;*;/)

    Mensagem  maasd1971 1/2/2014, 22:48

    Obrigado, resolve parte da questão, a das prioridades da adição e divisão.
     
    No entanto fica desta forma:
     
    [Agente]   [ValorIndicador1]     [Operador]    [ValorIndicador2]    [Resultado]
        1               100                      /                    101               =(100/101)
        2               200                      +                    202              =200+202
        3               300                                                               =300
     
    Ou seja, parece-me que está a considerar tudo como sendo texto e não faz a conta ....
     
    Experimentei a multiplicar todo o campo por 1 para o forçar a calcular, mas dá erro.
    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]Operadores matemáticos (+;-;*;/) Empty Re: [Resolvido]Operadores matemáticos (+;-;*;/)

    Mensagem  criquio 2/2/2014, 03:55

    Para esse caso vai ser mais simples, acredito, utilizar uma função em um módulo novo:

    Código:
    Public Function Total(N1 As Double, P1 As String, N2 As Double, P2 As String, N3 As Double) As Double
        Total = IIf(P1 = "*", N1 * N2, IIf(P1 = "/", N1 / N2, IIf(P1 = "+", N1 + N2, N1 - N2)))
        Total = IIf(P2 = "*", Total * N3, IIf(P2 = "/", Total / N3, IIf(P2 = "+", Total + N3, Total - N3)))
    End Function

    Essas variáveis dentro dos parênteses da função Total representarão os campos da consulta envolvidos no processo. Como o cálculo será feito por partes, ficará correto como se estivesse sendo feito em uma calculadora.

    Agora chamamos a função no campo calculado da consulta, colocando os nomes dos campos no lugar dos nomes das variáveis:

    Resultado: Total([Num1];[Opr1];[Num2];[Opr2];[Num3])

    Troque os Nums pelos nomes dos campos dos números e os Oprs pelos nomes dos campos dos operadores.


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


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 28
    Registrado : 06/11/2012

    [Resolvido]Operadores matemáticos (+;-;*;/) Empty Re: [Resolvido]Operadores matemáticos (+;-;*;/)

    Mensagem  maasd1971 10/2/2014, 19:47

    Obrigado, resultou.
    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]Operadores matemáticos (+;-;*;/) Empty Re: [Resolvido]Operadores matemáticos (+;-;*;/)

    Mensagem  criquio 11/2/2014, 12:13

    Grato pelo retorno. O fórum agradece.


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


    Conteúdo patrocinado


    [Resolvido]Operadores matemáticos (+;-;*;/) Empty Re: [Resolvido]Operadores matemáticos (+;-;*;/)

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 24/11/2024, 12:15