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


2 participantes

    [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    scandinavo
    scandinavo
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso. Empty [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    Mensagem  scandinavo 17/12/2020, 09:23

    Estou tentando criar um código, mas não consegui evoluir.
    Para verificar a Altura, largura e comprimento, e determinar o tipo que será.
    Pensei em um código assim.  Com 3 verificações.  Mas se umas delas forem falso o código precisa pular para a próxima verificação.
    Esta é a tabela com as medidas.
    Dimensões
    Carton Type Avg Volume Tipo Altura Largura Comprimento
    NAN/PICO 7265 * 11,8 29,6 20,8
    MIC 9486 D 14 30,8 22
    MIN 13213 C 19,5 30,8 22
    PEQ 19215 B 14 45 30,5
    MED 26150 A 19,5 45 30,5
    GDE 34312 A 25 45 30,5

    1 verificação
    Se altura for >11,8 e <=14 (se for Verdadeiro continua se for falso já pula para a verificação 2)
    Se largura for >29,6 e <=30,8 (se for Verdadeiro continua se for falso já pula para a verificação 2)
    Se comprimento for >20,8 e <=22 (se for Verdadeiro continua se for falso já pula para a verificação 2)
    Tipo será D

    2 verificação
    Se altura for >14 e <=19,5 (se for Verdadeiro continua se for falso já pula para a verificação 3)
    Se largura for >29,6 e <=30,8 (se for Verdadeiro continua se for falso já pula para a verificação 3)
    Se comprimento for >20,8 e <=22 (se for Verdadeiro continua se for falso já pula para a verificação 3)
    Tipo será C

    3 verificação
    Se altura for >11,8 e <=14 (se for Verdadeiro continua se for falso já pula para a verificação 4)
    Se largura for >30,8 e <=45 (se for Verdadeiro continua se for falso já pula para a verificação 4)
    Se comprimento for >22 e <=30,5 (se for Verdadeiro continua se for falso já pula para a verificação 4)
    Tipo será B

    4 verificação
    Se altura for >=19,5 (se for Verdadeiro continua se for falso já pula para a verificação 5)
    Se largura for >=30,8 (se for Verdadeiro continua se for falso já pula para a verificação 5)
    Se comprimento for >=30,5 (se for Verdadeiro continua se for falso já pula para a verificação 5)
    Tipo será A

    5 verificação
    Se não se encaixar em nenhuma medida
    Tipo será *

    Não consegui fazer o codigo pular para a próxima verificação caso alguma medida não se enquadrar.
    Tentei
    if
    elseif
    select case

    segue em anexo o banco de dados usando if  elseif em um formulário Mas precisaria deste código em um modulo para ser usado em consulta.
    Anexos
    [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso. AttachmentDimensoes.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (126 Kb) Baixado 4 vez(es)
    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]Pular para proxima verificação do codigo caso 1 criterio for falso. Empty Re: [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    Mensagem  Alexandre Neves 17/12/2020, 10:57

    Boa tarde
    Código:
    Private Sub btAnalisar_Click()
        '--------------------------------------------------------------'
        '  código criado por Alexandre Neves, do Fórum MaximoAccess  '
        '    utilize o código livremente mas mantenha os créditos    '
        '--------------------------------------------------------------'
        Dim rst As Recordset
        Set rst = Me.Recordset
        rst.MoveFirst
        Do While Not rst.EOF
            With rst
                If Me.Altura >= 11.8 And Me.Altura <= 14 And Me.Largura > 29.6 And Me.Largura <= 30.8 And Me.Comprimento > 20.8 And Me.Comprimento <= 22 Then
                    Me.Tipo = "D"
                ElseIf Me.Altura > 14 And Me.Altura <= 19.5 And Me.Largura > 29.6 And Me.Largura <= 30.8 And Me.Comprimento > 20.8 And Me.Comprimento <= 22 Then
                    Me.Tipo = "C"
                ElseIf Me.Altura > 11.8 And Me.Altura <= 14 And Me.Largura > 30.8 And Me.Largura <= 45 And Me.Comprimento > 22 And Me.Comprimento <= 30.5 Then
                    Me.Tipo = "B"
                ElseIf Me.Altura > 19.5 And Me.Largura > 30.8 And Me.Largura <= 30.8 And Me.Comprimento >= 30.5 Then
                    Me.Tipo = "A"
                Else
                    Me.Tipo = "*"
                End If
                .MoveNext
            End With
        Loop
        Set rst = Nothing
    End Sub


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    scandinavo
    scandinavo
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso. Empty Re: [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    Mensagem  scandinavo 18/12/2020, 09:46

    Grato pela ajuda

    Para as medias dentro da variação funcionou perfeitamente
    Mas tem um condição para analisar quando a uma das meditas estiver fora da variação.

    Se uma das medidas estiver fora da variação ele vai considerar o tipo em que a maior dimensão do produto se encaixa.

    Por exemplo para a condição
    Produto tem Altura 12, largura 30, comprimento 21, o Tipo vai ser D (Dentro da mesma variação)
    Produto tem Altura 15, largura 30, comprimento 21, o Tipo vai ser C

    If Me.Altura > 11.8 And Me.Altura <= 14 And Me.Largura > 29.6 And Me.Largura <= 30.8 And Me.Comprimento > 20.8 And Me.Comprimento <= 22 Then
    Me.Tipo = "D"
    ElseIf Me.Altura > 14 And Me.Altura <= 19.5 And Me.Largura > 29.6 And Me.Largura <= 30.8 And Me.Comprimento > 20.8 And Me.Comprimento < 30.5 Then
    Me.Tipo = "C"

    Outro exemplo para a condição
    Produto tem Altura 13, largura 32 comprimento 25, o Tipo vai ser B (Dentro da mesma variação)
    Produto tem Altura 13, largura 32, comprimento 40, o Tipo vai ser A
    ElseIf Me.Altura > 11.8 And Me.Altura <= 14 And Me.Largura > 30.8 And Me.Comprimento > 22 And Me.Comprimento <= 30.5 Then
    Me.Tipo = "B"
    ElseIf Me.Altura >= 19.5 And Me.Largura > 30.8 And Me.Comprimento >= 30.5 Then
    Me.Tipo = "A"
    Else
    Me.Tipo = "*"


    No anexo contem dados do tipo de acordo com as medidas dentro da variação corretas e também com uma das medidas fora da variação e com o tipo esperado.


    Se puder dar uma analisada agradeço.
    Anexos
    [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso. AttachmentDimensoes2.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (131 Kb) Baixado 5 vez(es)
    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]Pular para proxima verificação do codigo caso 1 criterio for falso. Empty Re: [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    Mensagem  Alexandre Neves 18/12/2020, 11:45

    Boa tarde
    Não vi nenhum registo das situações que falou "fora das dimensões"
    Explique todos os detalhes e mande dados representativos
    Veja estas situações, como classificar?
    10 (não cabe em nenhuma opção), 30 (pode ser D ou C), 21 (pode ser D ou C)
    21 (cabe na opção A), 30 (pode ser D ou C), 21 (pode ser D ou C)


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    scandinavo
    scandinavo
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso. Empty Re: [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    Mensagem  scandinavo 18/12/2020, 15:06

    Imagine uma caixa dentro da outra

    Uma caixa com 10 Alt 25 de larg 18 de comp o tipo sera * porque cabe em qualquer caixa. (mesmo sobrando espaço)
    Uma caixa com 15 Alt 30 de larg 21 de comp o tipo sera C (19,5 30,8 22)
    porque mesmo a largura (30) e o comprimento (21) encaixando no D mas pela altura(15) não caberá na caixa tipo D (14 30,8 22)e sera preciso usar uma maior neste caso a C

    Mesmo sobrando espaço para as outras medidas.

    Ou seja se umas das medidas não encaixar na sua variação sera preciso pegar a caixa que a maior medida do produto se encaixe.

    Um exemplo entre C e B
    Uma caixa com 18 Alt 30 de larg 22 de comp o tipo sera C (cujas medidas C são 19,5 30,8 22)
    Uma caixa com 13 Alt 30 de larg 22 de comp o tipo sera B (cujas medidas B são 14 45 30,5)
    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]Pular para proxima verificação do codigo caso 1 criterio for falso. Empty Re: [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    Mensagem  Alexandre Neves 18/12/2020, 16:20

    Então porque diz que
    "Uma caixa com 13 Alt 30 de larg 22 de comp o tipo sera B (cujas medidas B são 14 45 30,5)"
    Porque não é D (14 30.8 22)?


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    scandinavo
    scandinavo
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso. Empty Re: [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    Mensagem  scandinavo 19/12/2020, 09:37

    Você tem razão sera D


    "Uma caixa com 13 Alt 30 de larg 22 de comp o tipo sera B (cujas medidas B são 14 45 30,5)"
    Porque não é D (14 30.8 22)?
    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]Pular para proxima verificação do codigo caso 1 criterio for falso. Empty Re: [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    Mensagem  Alexandre Neves 19/12/2020, 12:30

    Boa tarde
    Veja se está certo assim
    Código:
    Private Sub btAnalisar_Click()
        '--------------------------------------------------------------'
        '  código criado por Alexandre Neves, do Fórum MaximoAccess  '
        '    utilize o código livremente mas mantenha os créditos    '
        '--------------------------------------------------------------'
        Dim rst As Recordset
        Set rst = Me.Recordset
        rst.MoveFirst
        Do While Not rst.EOF
            With rst
                If Me.Altura > 11.8 And Me.Altura <= 14 And Me.Largura > 29.6 And Me.Largura <= 30.8 And Me.Comprimento > 20.8 And Me.Comprimento <= 22 Then
                    Me.Tipo = "D"
                ElseIf Me.Altura > 14 And Me.Altura <= 19.5 And Me.Largura > 29.6 And Me.Largura <= 30.8 And Me.Comprimento > 20.8 And Me.Comprimento <= 22 Then
                    Me.Tipo = "C"
                ElseIf Me.Altura > 11.8 And Me.Altura <= 14 And Me.Largura > 30.8 And Me.Comprimento > 22 And Me.Comprimento <= 30.5 Then
                    Me.Tipo = "B"
                ElseIf Me.Altura >= 19.5 And Me.Largura >= 45 And Me.Comprimento >= 30.5 Then
                    Me.Tipo = "A"
                Else
                    If (Me.Altura > 11.8 And Me.Altura <= 14) Or (Me.Largura > 29.6 And Me.Largura <= 30.8) Or (Me.Comprimento > 20.8 And Me.Comprimento <= 22) Then
                        Me.Tipo = "D"
                    ElseIf (Me.Altura > 14 And Me.Altura <= 19.5) And (Me.Largura > 29.6 And Me.Largura <= 30.8) Or (Me.Comprimento > 20.8 And Me.Comprimento <= 22) Then
                        Me.Tipo = "C"
                    ElseIf (Me.Altura > 11.8 And Me.Altura <= 14) Or Me.Largura > 30.8 Or (Me.Comprimento > 22 And Me.Comprimento <= 30.5) Then
                        Me.Tipo = "B"
                    ElseIf Me.Altura >= 19.5 Or Me.Largura >= 45 Or Me.Comprimento >= 30.5 Then
                        Me.Tipo = "A"
                    Else
                        Me.Tipo = "*" 'Abaixo de todas as medidas
                    End If
                End If
                .MoveNext
            End With
        Loop
        Set rst = Nothing
    End Sub

    Referiu que "se umas das medidas não encaixar na sua variação" mas, pelos dados que apresentou, parece que basta ter uma das medidas dentro da variação e podem estar 2 medidas fora da variação

    Se não estiver certo deve explicitar detalhadamente como classificar


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    scandinavo
    scandinavo
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso. Empty Re: [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    Mensagem  scandinavo 19/12/2020, 19:55

    Ola
    Vou analisar os resultados e o seu código depois te dou um retorno.
    Grato
    scandinavo
    scandinavo
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso. Empty Re: [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    Mensagem  scandinavo 21/12/2020, 10:56

    Acho que esta mais difícil a explicação do que a solução kkkkkk
    A parte do código que analisa as medidas dentro da variação de dimensões esta perfeito.
    No caso de alguma medida estiver fora
    O que vai determinar o tipo de caixa sera a maior medida entre as 3 dimensões  Altura largura e comprimento
    Tabela das medidas
    '  Tipo  Altura  Largura Comprimento
    '   *   11,8     29,6    20,8
    '   D   14       30,8    22
    '   C   19,5     30,8    22
    '   B   14       45      30,5
    '   A   19,5     45      30,5

    Se um produto mede 20 de altura 30 de largura e 21 de comprimento O tipo Sera C  mesmo as duas outras medidas estando fora da sua faixa de dimensões.

    Exemplo um produto com 20 Alt  32 Larg  e 32 Comp
    Sera tipo A

    No anexo contem alguns registros com o tipo de caixa esperado.
    Anexos
    [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso. AttachmentDimensoes2.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (127 Kb) Baixado 3 vez(es)
    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]Pular para proxima verificação do codigo caso 1 criterio for falso. Empty Re: [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    Mensagem  Alexandre Neves 21/12/2020, 15:12

    Oh scandinavo
    Se é mais fácil solucionar do que explicar, não explique, solucione kkkkkk
    Alguma coisa não está bem, ou os exemplos ou as explicações
    "No caso de alguma medida estiver fora
    O que vai determinar o tipo de caixa sera a maior medida entre as 3 dimensões Altura largura e comprimento"

    caso 1
    Se um produto mede 20 de altura 30 de largura e 21 de comprimento O tipo Sera C mesmo as duas outras medidas estando fora da sua faixa de dimensões.
    - maior medida 30
    - 30 pode ser classificado D ou C, considerando a ordem de encaixe DCBA*. seria classificado D
    - mas disse que era C. Porquê?
    caso 2
    Exemplo um produto com 20 Alt 32 Larg e 32 Comp
    Sera tipo A

    - maior medida 32
    - 32 pode ser B ou A, considerando a ordem de encaixe DCBA*. seria classificado B
    - mas disse que era A. Porquê?

    A lógica tem que ser lógica. É lógico, não é? kkkk


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    scandinavo
    scandinavo
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso. Empty Re: [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    Mensagem  scandinavo 22/12/2020, 10:16

    "Se é mais fácil solucionar do que explicar, não explique, solucione kkkkkk"
    Aos poucos eu chego la kkkkkk Me falta conhecimento.


    Exemplo um produto com 20 Alt 32 Larg e 32 Comp Sera tipo A
    Porque a altura (20) é maior que a altura minima de A que que é 19,5
    Voce não consegue encaixar o produto com 20 32 32 dentro de B (14 45 30,5)

    Exemplo um produto com 20 Alt 30 Larg e 21 Comp Sera tipo C
    Porque a altura (20) é maior que a altura minima de C que que é 19,5
    Voce não consegue encaixar o produto com 20 30 21 dentro de D (14 30,5 22)

    Ai você me pergunta mas encaixa dentro de A (19,5 45 30,5)Sim encaixa mas as proximas duas medidas que é (30 e 21) esta dentro do limite de C que é (30,8 e 22)


    Estava pensando em transformar as medidas em variável e fazer o tratamento das medidas individuais e não em conjunto de 3 medidas alt larg comp.

    e inserir ao código um tratamento de erro para cada consulta de medida da variável.

    consulta a Altura
    se a Altura estiver fora
    vai para a próxima altura
    se a altura estiver dentro do limite
    consulta largura
    se a largura estiver fora
    vai para próxima largura
    se estiver dentro do limite
    consulta o comprimento.

    preciso pensar melhor neste código.



    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]Pular para proxima verificação do codigo caso 1 criterio for falso. Empty Re: [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    Mensagem  Alexandre Neves 22/12/2020, 15:26

    Boa tarde
    Ou os exemplos estão errados ou a explicação ou o meu entendimento
    Vamos a um dos últimos casos que expôs:
    Exemplo um produto com 20 Alt 32 Larg e 32 Comp Sera tipo A
    Porque a altura (20) é maior que a altura minima de A que que é 19,5
    Voce não consegue encaixar o produto com 20 32 32 dentro de B (14 45 30,5)


    - Estas medidas não encaixam em nenhuma medida normal (altura, largura, comprimento)
    - vamos ver se encaixam em duas medidas, começando por ver DCBA
    - e encaixa em duas medidas de B (14/45/30,5)
    - 20(encaixa em 30,5) 32(encaixa em 45) 32(não encaixa em 14)
    - assim, devia ser B e não chegava a verificar se podia ser A

    Explique bem para prosseguirmos


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    scandinavo
    scandinavo
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso. Empty Re: [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    Mensagem  scandinavo 22/12/2020, 17:29

    - e encaixa em duas medidas de B (14/45/30,5)
    - 20(encaixa em 30,5) 32(encaixa em 45) 32(não encaixa em 14)
    Não pode ser assim.
    Precisa comparar altura com altura largura com largura e comprimento com comprimento
    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]Pular para proxima verificação do codigo caso 1 criterio for falso. Empty Re: [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    Mensagem  Alexandre Neves 22/12/2020, 19:10

    Boa noite
    Agora parece-me compreensível a explicação, mas parece-me não encaixar bem nos exemplos que enunciou mas já estou um bocado confuso
    Criei código que me parece de acordo com o que enunciou mas parece-me não estar de acordo com o que indicou nas linhas de exemplo que precisava preencher
    Se não for isso, tem que colocar dados dos exemplos que enunciar
    Código:
    Private Sub btAnalisar_Click()
        '--------------------------------------------------------------'
        '   código criado por Alexandre Neves, do Fórum MaximoAccess   '
        '     utilize o código livremente mas mantenha os créditos     '
        '--------------------------------------------------------------'
        Dim rst As Recordset
        Set rst = Me.Recordset
        rst.MoveFirst
        Do While Not rst.EOF
            With rst
                If Me.Altura > 11.8 And Me.Altura <= 14 And Me.Largura > 29.6 And Me.Largura <= 30.8 And Me.Comprimento > 20.8 And Me.Comprimento <= 22 Then
                    Me.Tipo = "D"
                ElseIf Me.Altura > 14 And Me.Altura <= 19.5 And Me.Largura > 29.6 And Me.Largura <= 30.8 And Me.Comprimento > 20.8 And Me.Comprimento <= 22 Then
                    Me.Tipo = "C"
                ElseIf Me.Altura > 11.8 And Me.Altura <= 14 And Me.Largura > 30.8 And Me.Comprimento > 22 Then
                    Me.Tipo = "B"
                ElseIf Me.Altura >= 19.5 And Me.Largura >= 45 And Me.Comprimento >= 30.5 Then
                    Me.Tipo = "A"
                Else
                    Me.Tipo = DuasCertas(Me.Altura, Me.Largura, Me.Comprimento)
                End If
                .MoveNext
            End With
        Loop
        Set rst = Nothing
    End Sub
    Function DuasCertas(sngAltura As Single, sngLargura As Single, sngComprimento As Single) As String
        '--------------------------------------------------------------'
        '   código criado por Alexandre Neves, do Fórum MaximoAccess   '
        '     utilize o código livremente mas mantenha os créditos     '
        '--------------------------------------------------------------'
        Dim Certas As Byte
        Certas = 0
        If sngAltura > 11.8 And sngAltura <= 14 Then Certas = Certas + 1
        If sngLargura > 29.6 And sngLargura <= 30.8 Then Certas = Certas + 1
        If sngComprimento > 20.8 And sngComprimento <= 22 Then Certas = Certas + 1
        If Certas > 1 Then DuasCertas = "D": Exit Function
        Certas = 0
        If sngAltura > 14 And sngAltura <= 19.5 Then Certas = Certas + 1
        If sngLargura > 29.6 And sngLargura <= 30.8 Then Certas = Certas + 1
        If Comprimento > 20.8 And sngComprimento <= 22 Then Certas = Certas + 1
        If Certas > 1 Then DuasCertas = "C": Exit Function
        Certas = 0
        If sngAltura > 11.8 And sngAltura <= 14 Then Certas = Certas + 1
        If sngLargura > 30.8 Then Certas = Certas + 1
        If sngComprimento > 22 Then Certas = Certas + 1
        If Certas > 1 Then DuasCertas = "B": Exit Function
        Certas = 0
        If sngAltura >= 19.5 And sngAltura <= 14 Then Certas = Certas + 1
        If sngLargura >= 45 Then Certas = Certas + 1
        If sngComprimento >= 30.5 Then Certas = Certas + 1
        If Certas > 1 Then DuasCertas = "A": Exit Function
        DuasCertas = "*"
    End Function


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    scandinavo
    scandinavo
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso. Empty Re: [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    Mensagem  scandinavo 23/12/2020, 15:41

    Você esta de parabéns.

    Eu também já estou ficando perdido kkkk
    Ficou quase dentro do esperado fiz uma alteração no código para uma unica condição certa
    obs no frm que vai abrir todos os produtos so tem uma medida certa as outras estão na faixa do * e vai mostrar o tipo correto
    mas se tiver duas condições já não vai dar certo.
    Observe o codigo 4500 e 4501 é para ser A por causa da altura ser maior que 19 independente das outras duas


    Como fazer esta linha de código Caso as certas for 0 (zero)

       If sngAltura > 11.8 And sngAltura <= 14 = True Then Certas = Certas + 1 ’ Caso a certas for 0 (zero)
       If sngLargura > 30.8 Then Certas = Certas + 1
       If sngComprimento > 22 Then Certas = Certas + 1
       If Certas >= 1 Then UmaCerta = "B": Exit Function

    Já pular para esta parte do codigo
       Certas = 0
       If sngAltura >= 19.5 = True Then Certas = Certas + 1
       If sngLargura > 30.8 = True Then Certas = Certas + 1
       If sngComprimento > 22 = True Then Certas = Certas + 1
       If Certas >= 1 Then UmaCerta = "A": Exit Function
    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]Pular para proxima verificação do codigo caso 1 criterio for falso. Empty Re: [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    Mensagem  Alexandre Neves 23/12/2020, 18:05

    Tem de explicar claramente o que quer, com coerência e lógica
    Veja para duas certas
    Código:
    Function DuasCertas(sngAltura As Single, sngLargura As Single, sngComprimento As Single) As String
        '--------------------------------------------------------------'
        '  código criado por Alexandre Neves, do Fórum MaximoAccess  '
        '    utilize o código livremente mas mantenha os créditos    '
        '--------------------------------------------------------------'
        If sngLargura > 29.6 And sngLargura <= 30.8 And sngComprimento > 20.8 And sngComprimento <= 22 Then
            If sngAltura > 19.5 Then DuasCertas = "C": Exit Function Else DuasCertas = "D": Exit Function
        End If
       
        If sngLargura > 30.8 And sngComprimento > 22 Then
            If sngAltura > 19.5 Then DuasCertas = "A": Exit Function Else DuasCertas = "B": Exit Function
        End If
        DuasCertas = "*"
    Não entendi o que quer fazer com uma certa nem entendi se está relacionada com as duas certas ou é independente?


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    scandinavo
    scandinavo
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso. Empty Re: [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    Mensagem  scandinavo 25/12/2020, 15:21

    Acho que cheguei a uma solução plausível (e uma melhor explicação)
    Determinar um valor para cada serie de medidas

    Tipo  Altura  Largura Comprimento
    '   *   11,8     29,6    20,8
    '   D   14       30,8    22
    '   C   19,5     30,8    22
    '   B   14       45      30,5
    '   A   19,5     45      30,5

    Valor Altura Valor Largura Valor Comprimento
    0 <-11,8 0 <=29,6 0 <=20,8
    1 >11,8 e <=14 1 >29,6 e <=30,8 1 >20,8 e <=22
    2 >14 e <=19,5 2 >30,8 2 >22
    3 >19,5

    Combinações de medias  e qual sera o tipo

    0 0 0=* 1 1 1=D 2 0 0 =C 3 0 0=A
    0 0 1=D 1 0 0=D 2 0 1=C 3 0 1=A
    0 1 0=D 1 0 1=D 2 1 0=C 3 0 2=A
    0 1 1=D 1 1 0=D 2 1 1=C 3 1 1=A
    0 0 2=B 1 0 2=B 2 2 0=B 3 1 2=A
    0 2 0=B 1 1 2=B 2 2 1=B 3 2 0=A
    0 2 1=B 1 2 1=B 2 0 2=B 3 2 1=A
    0 2 2=B 1 2 2=B 2 1 2=B 3 2 2=A
    0 1 2=B        2 2 2=B

    Obs Tipo A
    Qualquer combinação com o valor 3 o tipo sera A

    Obs Tipo C
    Só vai ser C se tiver um único 2 na sequencia e o 2 tem que estar na primeira medida ou seja na Altura

    Obs Tipo B
    Se tiver um único 2 mas esta na Largura ou no comprimento sera B o que tiver combinação de 2 será B exceto quando tiver o numero 3 junto.

    Obs Tipo D
    Se tiver somente 1 e 0 sera D

    Obs Tipo *
    Somente se tiver as 3 medias de valor 0



    No anexo esta mais fácil a visualização
    Anexos
    [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso. AttachmentInformação.docx
    Você não tem permissão para fazer download dos arquivos anexados.
    (18 Kb) Baixado 4 vez(es)
    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]Pular para proxima verificação do codigo caso 1 criterio for falso. Empty Re: [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    Mensagem  Alexandre Neves 25/12/2020, 18:12

    Boa noite e Santo Natal
    Estou a orientar-me pela tabela de valores (a descrição não é interpretativa)
    E se for 120? Que tipo é?


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    scandinavo
    scandinavo
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso. Empty Re: [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    Mensagem  scandinavo 25/12/2020, 22:56

    Feliz Natal

    Será B
    Porque 1 é da altura é ente 11.8 e 14 =D
    E 2 é acima de de 30.8 =B

    Para ser C a altura teria que ser maior que 14 e para ser a A a altura teria que ser maior que 19 e também não pode ser D porque o que vai determinar o tipo será a maior medida entre as 3 que agora está transformado em 0 1 2 e 3 e sempre que estiver 2 na largura e no comprimento será B
    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]Pular para proxima verificação do codigo caso 1 criterio for falso. Empty Re: [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    Mensagem  Alexandre Neves 26/12/2020, 07:25

    Bom dia

    Tenha 1 botão
    Código:
    Private Sub btClassificar_Click()
        '--------------------------------------------------------------'
        '   código criado por Alexandre Neves, do Fórum MaximoAccess   '
        '     utilize o código livremente mas mantenha os créditos     '
        '--------------------------------------------------------------'
        Dim rst As Recordset
        Set rst = Me.Recordset
        rst.MoveFirst
        Do While Not rst.EOF
            With rst
                Me.Tipo = Classifica(Me.Altura, Me.Largura, Me.Comprimento)
                .MoveNext
            End With
        Loop
        Set rst = Nothing

    End Sub

    Function Classifica(sngAltura As Single, sngLargura As Single, sngComprimento As Single) As String
        '--------------------------------------------------------------'
        '  código criado por Alexandre Neves, do Fórum MaximoAccess  '
        '    utilize o código livremente mas mantenha os créditos    '
        '--------------------------------------------------------------'
        If sngAltura <= 11.8 Then
            If sngLargura <= 29.6 Then
                If sngComprimento <= 20.8 Then
                    Classifica = "*"
                ElseIf sngComprimento <= 22 Then
                    Classifica = "D"
                Else
                    Classifica = "B"
                End If
            ElseIf sngLargura <= 30.8 Then
                If sngComprimento <= 22 Then
                    Classifica = "D"
                Else
                    Classifica = "B"
                End If
            Else
                Classifica = "B"
            End If
        ElseIf sngAltura <= 14 Then
            If sngLargura <= 29.6 Then
                If sngComprimento <= 22 Then
                    Classifica = "D"
                Else
                    Classifica = "B"
                End If
            ElseIf sngLargura <= 30.8 Then
                If sngComprimento <= 22 Then
                    Classifica = "D"
                Else
                    Classifica = "B"
                End If
            Else
                Classifica = "B"
            End If
        ElseIf sngAltura <= 19.5 Then
            If sngLargura <= 29.6 Then
                If sngComprimento <= 22 Then
                    Classifica = "C"
                Else
                    Classifica = "B"
                End If
            ElseIf sngLargura <= 30.8 Then
                If sngComprimento <= 22 Then
                    Classifica = "C"
                Else
                    Classifica = "B"
                End If
            Else
                Classifica = "B"
            End If
        ElseIf sngAltura > 19.5 Then
            Classifica = "A"
        End If
    End Function


    Última edição por Alexandre Neves em 26/12/2020, 13:16, editado 2 vez(es)


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    scandinavo
    scandinavo
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso. Empty Re: [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    Mensagem  scandinavo 26/12/2020, 12:44

    Para min está linha
    Classifica = "B"2 ficou vermelha e deu erro para depurar, comentei está linha e executei o código .

    Funcionou mas no caso de ser altura Do e B e 2 B não apareceu o resultado por que comentei alinha. Porque para min deu depurar
    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]Pular para proxima verificação do codigo caso 1 criterio for falso. Empty Re: [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    Mensagem  Alexandre Neves 26/12/2020, 13:17

    Foi erro de transcrição. Já corrigi. Reveja


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo
    scandinavo
    scandinavo
    VIP
    VIP


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso. Empty Re: [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    Mensagem  scandinavo 26/12/2020, 17:48

    Perfeito kkkkkk
    ufa foi melhor do que o codigo que estava imaginado. Para quem quiser aprender sobre if e elseif este poste esta completo kkkkkk

    Valeu e feliz ano novo adiantado.

    israelcomex gosta desta mensagem


    Conteúdo patrocinado


    [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso. Empty Re: [Resolvido]Pular para proxima verificação do codigo caso 1 criterio for falso.

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 21/11/2024, 23:57