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]Como calcular a nota de um fornecedor antes de ir para a fórmula

    avatar
    Bernidios
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 66
    Registrado : 17/07/2017

    [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula Empty [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula

    Mensagem  Bernidios 27/9/2017, 18:47

    Olá amigos,

    Venho aqui com uma dúvida que parece não ser muito difícil, porém estou quebrando muito a cabeça para conseguir fazer isto.

    Tenho um código no qual ele calcula a nota do fornecedor de acordo com a quantidade de reclamações feitas, e ele precisa entrar numa fórmula para dividir a nota gerada.

    Porém ele calcula a nota e já aplica na fórmula.

    Teria algum jeito de ele passar por todas as notas do fornecedor e depois que ele estar com esta informação aplicar a fórmula.

    Atualmente ele calcula a nota e já aplica a fórmula.

    Segue abaixo o código com comentários.

    Código:
    'SELECINA A TABELA FORNECEDORES'
                                                    SQL_7 = "SELECT * " + _
                                                            "FROM tblFornecedores " + _
                                                            "WHERE tblFornecedores.MCI = '" & rstComn!NMCI & "'"
                                                    Set rstTblF = CurrentDb.OpenRecordset(SQL_7, dbOpenDynaset)
                                                    
                                           'ATÉ O FINAL DA TABELA FORNECEDORES ELE FAZ ISSO'
                                            Do Until rstTblF.EOF
                                            
                                               'RESETA A NOTA'
                                                Notas = 0
                                            
                                               'VÊ SE PRECISA ATUALIZAR OU NÃO'
                                                If rstComn!PrecisaAt = True Then
                                                
                                                       'FAZ O CÁLCULO DAS NOTAS'
                                                        Notas1 = rstComn!NotaCom
                                                        Notas = (Notas + Notas1)
                                                        
                                                             'EDITA A TBLFORNECEDORES'
                                                             rstTblF.Edit
                                                            
                                                            
                                                            'ATUALIZA'
                                                             rstTblF.Update
                                                            
                                                             'FORMULA'
                                                             rstTblF![NotaForn] = Notas / rstDepes!ContarDeCD_PRF_DEPE_BNFC_SRVC
                                                                
                                                            'VAI PRA PROXIMA'
                                                             rstComn.MoveNext
                                                            
                                                            'REPETE TUDO'
                                                            
                                                             Loop
                                                End If


    Última edição por Bernidios em 2/10/2017, 19:56, editado 1 vez(es)
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 377
    Registrado : 23/01/2017

    [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula Empty Re: [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula

    Mensagem  thiagomcosta 27/9/2017, 21:45

    Não consegui entender o que deseja.

    Pelo que vejo no código ele pega a nota da tabela rstComn e aplica na fórmula para este fornecedor.
    Qual o algoritmo que você está tentando aplicar?
    avatar
    Bernidios
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 66
    Registrado : 17/07/2017

    [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula Empty Re: Como calcular a nota de um fornecedor antes de ir para a fórmula

    Mensagem  Bernidios 29/9/2017, 17:45

    Amigo, não estou achando um jeito de como fazer o código passar de fornecedor em fornecedor e somar as notas.

    Queria que o código pegasse o primeiro fornecedor, e passasse por todas as reclamações dele, e depois disso colocasse a soma de todas as pontuações desse fornecedor no 'Notas'

    Após isso ele colocasse essa pontuação na fórmula e inserisse na consulta para a tabela ser atualizada.

    Vou tentar explicar o código.

    Aqui ele seleciona as reclamações feitas,onde a nota está no campo NotaCom
    Código:
                                                SQL_V = "SELECT * " + _
                            "FROM tblComunicados " + _
                            "WHERE tblComunicados.txt_Situacao <> 'Em Análise'" + _
                            "AND tblComunicados.txt_Situacao <> 'Cancelado'" + _
                            "AND tblComunicados.txt_Situacao <> 'Indevido'" + _
                            "AND tblComunicados.txt_Situacao <> ' Em Análise'" + _
                            "AND tblComunicados.txt_nomeDemanda <> 'Regularidade Fiscal'" + _
                            "AND tblComunicados.txt_nomeDemanda <> 'Trabalhando sem registro';"

                            Set rstComn = CurrentDb.OpenRecordset(SQL_V, dbOpenDynaset)


    Aqui ele faz a consulta das dependências que vão mostrar o número de cada dependência, que vai ser usado na fórmula depois
    [code Set rstDepes = CurrentDb.OpenRecordset("consdependencias", dbOpenDynaset)][/code]


    Aqui ele pega a tabela fornecedores, que vai ser editada, para ser colocada a nota no campo NotaForn:
    Código:
    SQL_7 = "SELECT * " + _
                                                            "FROM tblFornecedores " + _
                                                            "WHERE tblFornecedores.MCI = '" & rstComn!NMCI & "'"
                                                    Set rstTblF = CurrentDb.OpenRecordset(SQL_7, dbOpenDynaset)

    Após isso fiz um Do Until EOF, para ele ir passando de fornecedor a fornecedor, depois calcula a nota, e roda a fórmula:
    Código:
    Do Until rstTblF.EOF
                                           
                                              'RESETA A NOTA'
                          '                    Notas = 0
                                           
                                              'VÊ SE PRECISA ATUALIZAR OU NÃO'
                                                       
                                                      'FAZ O CÁLCULO DAS NOTAS'
                                                        Notas1 = rstComn!NotaCom
                                                        Notas = (Notas + Notas1)
                                                       
                                                            'EDITA A TBLFORNECEDORES'
                                                            rstTblF.Edit
                                                           
                                                            'FORMULA'
                                                            rstTblF![NotaForn] = Notas / rstDepes!ContarDeCD_PRF_DEPE_BNFC_SRVC
                                                           
                                                            'ATUALIZA'
                                                            rstTblF.Update
                                                           
                                                           
                                                               

                                                           
                                                            'REPETE TUDO'
                                           
                                                            'VAI PRA PROXIMA'
                                                            rstComn.MoveNext
                                                            Loop


    Não sei o que estou fazendo de errado, mas ele não pula para o próximo fornecedor.
    JPaulo
    JPaulo
    Moderador
    Moderador


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 11016
    Registrado : 04/11/2009

    [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula Empty Re: [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula

    Mensagem  JPaulo 29/9/2017, 17:59

    Não pula de fornecedor porque no Loop que você está a fazer apenas dá o Next ao rstComn.MoveNext
    Tem de acrescentar também, rstTblF.MoveNext


    .................................................................................
    Contribua com o maximoaccess nos links abaixo, ajude a melhorar este que é o seu site na NET.

    Pay-Pal R$ Aqui
    Pay-Pal € Aqui

    Ou ainda: Aqui (Novo)

    Sucesso e Bons Estudos
    Success and Good Studies

    [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula Folder_announce_new Utilize o Sistema de Busca do Fórum...
    [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula Folder_announce_new 102 Códigos VBA Gratuitos...
    [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula Folder_announce_new Instruções SQL como utilizar...
    avatar
    Bernidios
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 66
    Registrado : 17/07/2017

    [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula Empty Re: Como calcular a nota de um fornecedor antes de ir para a fórmula

    Mensagem  Bernidios 29/9/2017, 18:36

    Obrigado amigo JPaulo.

    Que erro bobo meu, falta de atenção completa que me fez cometer um erro desse tipo.

    Muito Obrigado pela ajuda.

    Att. Matheus
    avatar
    Bernidios
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 66
    Registrado : 17/07/2017

    [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula Empty Re: Como calcular a nota de um fornecedor antes de ir para a fórmula

    Mensagem  Bernidios 29/9/2017, 18:46

    Fiz o que pediu, porém ele ainda continua somando todas as notas no mesmo fornecedor. O código ficou assim:

    Código:
    Do Until rstTblF.EOF
                                            
                                               'RESETA A NOTA'
                                                Notas = 0
                                            
                                               'VÊ SE PRECISA ATUALIZAR OU NÃO'
                                                        
                                                    Do Until rstComn.EOF
                                                    
                                                       'FAZ O CÁLCULO DAS NOTAS'
                                                        Notas1 = rstComn!NotaCom
                                                        Notas = (Notas + Notas1)
                                                        
                                                        rstComn.MoveNext
                                                        
                                                        Loop
                                                             'EDITA A TBLFORNECEDORES'
                                                             rstTblF.Edit
                                                            
                                                             'FORMULA'
                                                             rstTblF![NotaForn] = Notas / rstDepes!ContarDeCD_PRF_DEPE_BNFC_SRVC
                                                            
                                                            'ATUALIZA'
                                                             rstTblF.Update
                                                            
                                                            
                                                                

                                                            
                                                            'REPETE TUDO'
                                            
                                                            'VAI PRA PROXIMA'
                                                            rstTblF.MoveNext
                                                            
                                                
                                                             Loop

    E deu um erro de Nenhum Registro atual ao final.
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 377
    Registrado : 23/01/2017

    [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula Empty Re: [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula

    Mensagem  thiagomcosta 29/9/2017, 18:58

    O que é rstComn?

    Você não teria de estar filtrando esta tabela com registros apenas do fornecedor atual?
    avatar
    Bernidios
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 66
    Registrado : 17/07/2017

    [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula Empty Re: Como calcular a nota de um fornecedor antes de ir para a fórmula

    Mensagem  Bernidios 29/9/2017, 19:03

    RstComn é um recordset criado para mostrar as reclamações, que ficam na tabela comunicados.

    A minha ideia era Passar de reclamação em reclamação, e somar as notas, que ficam neste rstComn e só depois disso inserir a nota na tblFornecedores, que seria o rstTblF.
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 377
    Registrado : 23/01/2017

    [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula Empty Re: [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula

    Mensagem  thiagomcosta 29/9/2017, 19:54

    Da jeito que está ele passa por todos os registros do recordset rstComn, calcula a nota e registra no 1º fornecedor. Como o ponteiro está no final do recordset rsytComn (pois você não resetou esta tabela ou o ponteiro dela), nos demais fornecedores ele não irá executar o looping (do until) pois já está no EOF.

    Atualize/abra este recordset filtrando por fornecedor antes desta linha "Do Until rstComn.EOF", acredito que seja este o problema.

    avatar
    Bernidios
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 66
    Registrado : 17/07/2017

    [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula Empty Re: Como calcular a nota de um fornecedor antes de ir para a fórmula

    Mensagem  Bernidios 29/9/2017, 20:20

    Mas o Select feito na rst já não conta como filtro de fornecedor, já que igualei o MCI(código do fornecedor) com o NMCI do rstComn?
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 377
    Registrado : 23/01/2017

    [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula Empty Re: [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula

    Mensagem  thiagomcosta 29/9/2017, 20:46

    Se você deseja fazer para todos os fornecedores, pode ser feito desta maneira.

    Veja que eu abro o recordset dos fornecedores, depois para cada fornecedor eu abro o recordset rstComn.
    Tente adaptar o código abaixo conforme sua aplicação.

    Código:
    SQL_7 = "SELECT * FROM tblFornecedores;"
    Set rstTblF = CurrentDb.OpenRecordset(SQL_7, dbOpenDynaset)

    Do Until rstTblF.EOF
        'RESETA A NOTA'
        Notas = 0
       
        SQL_V = "SELECT * FROM tblComunicados "
        SQL_V = SQL_V & "WHERE tblComunicados.txt_Situacao <> 'Em Análise' "
        SQL_V = SQL_V & "AND tblComunicados.txt_Situacao <> 'Cancelado' "
        SQL_V = SQL_V & "AND tblComunicados.txt_Situacao <> 'Indevido' "
        SQL_V = SQL_V & "AND tblComunicados.txt_Situacao <> ' Em Análise' "
        SQL_V = SQL_V & "AND tblComunicados.txt_nomeDemanda <> 'Regularidade Fiscal' "
        SQL_V = SQL_V & "AND tblComunicados.txt_nomeDemanda <> 'Trabalhando sem registro' "
        SQL_V = SQL_V & "AND NMCI = " & rstTblF.MCI

        Set rstComn = CurrentDb.OpenRecordset(SQL_V, dbOpenDynaset)
       
        'VÊ SE PRECISA ATUALIZAR OU NÃO'
        Do Until rstComn.EOF

            'FAZ O CÁLCULO DAS NOTAS'
            Notas1 = rstComn!NotaCom
            Notas = (Notas + Notas1)
           
            rstComn.MoveNext
           
        Loop
        'EDITA A TBLFORNECEDORES'
        rstTblF.Edit
       
        'FORMULA'
        rstTblF![NotaForn] = Notas / rstDepes!ContarDeCD_PRF_DEPE_BNFC_SRVC
       
        'ATUALIZA'
        rstTblF.Update
       
        'REPETE TUDO'
       
        'VAI PRA PROXIMA'
        rstTblF.MoveNext
       
     Loop
    avatar
    Bernidios
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 66
    Registrado : 17/07/2017

    [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula Empty Re: Como calcular a nota de um fornecedor antes de ir para a fórmula

    Mensagem  Bernidios 2/10/2017, 18:48

    Olá amigos.

    Consegui um avanço, editei o código e agora ele passa por cada fornecedor, porém ele não reconhece mais o campo NotaCom da tblcomunicados, que está no rstComn, no select abaixo, qual seria o problema?

    Código:
                                                    Do Until rstTblF.EOF
                                                        'RESETA A NOTA'
                                                       
                                                       
                                                        Notas = 0
                                                       
                                                    SQL_V = "SELECT * " + _
                                                            "FROM tblComunicados " + _
                                                            "WHERE tblComunicados.NMCI = '" & rstTblF!MCI & "'" + _
                                                            "AND tblComunicados.txt_Situacao <> 'Em Análise'" + _
                                                            "AND tblComunicados.txt_Situacao <> 'Cancelado'" + _
                                                            "AND tblComunicados.txt_Situacao <> 'Indevido'" + _
                                                            "AND tblComunicados.txt_Situacao <> ' Em Análise'" + _
                                                            "AND tblComunicados.txt_nomeDemanda <> 'Regularidade Fiscal'" + _
                                                            "AND tblComunicados.txt_nomeDemanda <> 'Trabalhando sem registro';"

                                                        Set rstComn = CurrentDb.OpenRecordset(SQL_V, dbOpenDynaset)
                                                       
                                                        'VÊ SE PRECISA ATUALIZAR OU NÃO'
                                                        Do Until rstComn.EOF
                                                   
                                                            'FAZ O CÁLCULO DAS NOTAS'
                                                            Notas1 = rstComn!NotaCom
                                                            Notas = (Notas + Notas1)
                                                           
                                                            rstComn.MoveNext
                                                           
                                                        Loop
                                                        'EDITA A TBLFORNECEDORES'
                                                        rstTblF.Edit
                                                       
                                                        'FORMULA'
                                                        rstTblF![NotaForn] = Notas / rstDepes!ContarDeCD_PRF_DEPE_BNFC_SRVC
                                                       
                                                        'ATUALIZA'
                                                        rstTblF.Update
                                                       
                                                        'REPETE TUDO'
                                                       
                                                        'VAI PRA PROXIMA'
                                                        rstTblF.MoveNext
                                                       
                                                    Loop
    thiagomcosta
    thiagomcosta
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 377
    Registrado : 23/01/2017

    [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula Empty Re: [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula

    Mensagem  thiagomcosta 2/10/2017, 20:32

    Tem certeza que com os filtros aplicados ele retorna algum registro?

    Só para ter certeza, para teste, coloca após a linha que vocÊ abre o recordset [Set rstComn = CurrentDb.OpenRecordset(SQL_V, dbOpenDynaset)] a seguinte linha:

    msgbox rstComn.recordcount


    Veja se o valor é maior do que zero.
    Se for zero é que não está retornando nenhum registro válido.
    avatar
    Bernidios
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 66
    Registrado : 17/07/2017

    [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula Empty [Resolvido]Re: Como calcular a nota de um fornecedor antes de ir para a fórmula

    Mensagem  Bernidios 2/10/2017, 20:45

    Thiago.

    No fim das contas era um critério errado.

    Já coloquei o tópico como resolvido.

    Obrigado pela ajuda.

    Conteúdo patrocinado


    [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula Empty Re: [Resolvido]Como calcular a nota de um fornecedor antes de ir para a fórmula

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 19/4/2024, 09:40