MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Preencher campo calculado automaticamente.

    Compartilhe
    avatar
    wsenna
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 491
    Registrado : 22/12/2009

    [Resolvido]Preencher campo calculado automaticamente.

    Mensagem  wsenna em 26/5/2017, 16:10

    Olá Mestres, boa tarde.

    Tenho uma Tabela com um campo denominado Setor do tipo Texto.
    O que pretendo é criar um campo calculado que seja preenchido automaticamente de acordo com o número de ocorrências para cada Setor de modo que aumente de 1 para cada 50 ocorrências do Setor. Vale ressaltar que num dia um mesmo Setor pode aparecer em vários registros ou em nenhum.
    Exemplo:

    Dia       Setor     Responsável
    01          X         WSenna
    01          Y          JPaulo
    01          X         Attila
    02          X         WSenna
    02          X         JPaulo
    02          Y          Nobezinho

    Como podemos notar o Setor X apresenta 4 ocorrências assim:

    Setor X de 1 a 50 ocorrências CampoCalculado = 1, de 51 a 100 CampoCalculado =2, de 101 a 150 CampoCalculado = 3 e por ai vai.

    O mesmo ocorreria para os demais Setores.

    Abraços, WSenna

    misaelsp
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 96
    Registrado : 20/02/2013

    Re: [Resolvido]Preencher campo calculado automaticamente.

    Mensagem  misaelsp em 26/5/2017, 20:43

    Recentemente fiz algo parecido

    neste exemplo fiz uma tabela com dois campos
    unico e ordem
    o algoritimo faz o seguinte: de 20 em 20 registros com o unico igual ele muda a ordem, se mudar o unico ele zera a ordem e começa de novo.

    [Você precisa estar registrado e conectado para ver este link.]

    De uma olhada e estude ele. O código não esta comentado mais creio que você ira entender. Talvez seje preciso alguns ajustes para a sua necessidade, ou talvez nem seje util. Mas de qualquer forma está ai.


    .................................................................................
    É fazendo que se aprende a fazer aquilo que se deve aprender a fazer [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    wsenna
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 491
    Registrado : 22/12/2009

    Re: [Resolvido]Preencher campo calculado automaticamente.

    Mensagem  wsenna em 26/5/2017, 21:46

    Olá Misaelsp, boa tarde.

    Amigão, infelizmente meu Office ainda é o 2003 e não conseguiria abrir o seu exemplo.
    A menos que o amigo pudesse converte-lo ...

    De qualquer forma, fico grato pelo seu interesse.

    Abraços, WSenna

    misaelsp
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 96
    Registrado : 20/02/2013

    Re: [Resolvido]Preencher campo calculado automaticamente.

    Mensagem  misaelsp em 26/5/2017, 22:21

    Segue abaixo os unicos códigos que existe no meu bd de exemplo. Só existe um formulário e uma tabela no exemplo
    o fomulário com dois botóes que segue a baixo o código de cada um. E a tabela com 3 campos: Codigo, unico e ordem

    Código:
    Private Sub Comando0_Click()

    Dim rs, rs2 As Recordset

    Set rs = CurrentDb.OpenRecordset("SELECT * FROM Tabela1")

    Dim c, C2, C3, d, E, F, G, Salve(40), T, varOrdem As Variant
    C2 = 1: C3 = 1: varOrdem = "00" & 0

    rs.MoveLast
    E = rs.RecordCount
    rs.MoveFirst
    T = rs!unico
    Salve(0) = rs!unico

    If Not (rs.EOF) Then
        For c = 1 To E
            If Not (rs.EOF) Then
                If T <> rs!unico Then
                    Salve(C2) = rs!unico
                    C2 = C2 + 1
                End If
                T = rs!unico
                rs.MoveNext
            End If
        Next c
        For d = 0 To C2 - 1
            Set rs2 = CurrentDb.OpenRecordset("SELECT * FROM Tabela1 WHERE unico = '" & Salve(d) & "'")
                rs2.MoveLast
                E = rs2.RecordCount
                rs2.MoveFirst
                For F = 1 To E
                        For G = 1 To 20
                        If Not (rs2.EOF) Then
                            rs2.Edit
                            rs2.Fields("ordem") = varOrdem
                            rs2.Update
                            If G = 20 Then
                                G = 0: C3 = C3 + 1: varOrdem = "00" & varOrdem + 1
                            End If
                            If C3 = E Then
                                Exit For
                            End If
                            rs2.MoveNext
                        End If
                        Next G
                    G = 0: C3 = 0: varOrdem = "00" & 0
                Next F
        Next d
    End If

    rs.Close
    rs2.Close

    End Sub
    Private Sub Comando1_Click()

    Dim rs As Recordset

    Set rs = CurrentDb.OpenRecordset("SELECT * FROM Tabela1")

    Dim c, d
    rs.MoveLast
    d = rs.RecordCount
    rs.MoveFirst
    For c = 1 To d
        rs.Edit
        rs.Fields("ordem") = ""
        rs.Update
        rs.MoveNext
    Next c

    rs.Close


    End Sub

    Espero ter ajudado. Boa Tarde


    .................................................................................
    É fazendo que se aprende a fazer aquilo que se deve aprender a fazer [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    wsenna
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 491
    Registrado : 22/12/2009

    Re: [Resolvido]Preencher campo calculado automaticamente.

    Mensagem  wsenna em 27/5/2017, 02:08

    Caro misaelsp, boa noite.

    Amigão, criei um banco de dados seguindo as suas instruções e apliquei os códigos como sugerido mas infelizmente não surtiu o efeito que eu pretendo ver.

    Para explicar melhor no meu BD criei uma consulta baseada na tabela e nessa consulta criei um campo calculado que conta o número de ocorrências do campo Setor ao qual denominei Subtotal, e num outro campo calculado ao qual denominei Caixa fiz um encadeamento de SeImeds que me retorna a sequência pretendida veja:

    Caixa: SeImed([Subtotal] Entre 101 e 150;3;SeImed([Subtotal] Entre 51 E 100;2;SeImed([Subtotal] Entre 1 E 50;1;0)))

    Até que funciona mas imagiuna que em algum momento o número de registros contendo um determinado Setor poderá ultrapassar 150 registros, depois 200 e mais tarde 250 e aí?

    Percebeu o meu drama?

    Mais uma vez, muito agradecido fiquei.

    Abraços, WSenna

    misaelsp
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 96
    Registrado : 20/02/2013

    Re: [Resolvido]Preencher campo calculado automaticamente.

    Mensagem  misaelsp em 27/5/2017, 13:58

    Você pode usar essa consulta em um módulo, abrindo um recordset, e chamar o between sómente uma vez com base em variaveis de inicio e fim.

    antes de abrir o recordset criar uma funçao que verifica sempre os valores inicias e finais da ultima vez e calcular mais 50.

    é uma ideia, pode ser que dê certo.


    .................................................................................
    É fazendo que se aprende a fazer aquilo que se deve aprender a fazer [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    wsenna
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 491
    Registrado : 22/12/2009

    Re: [Resolvido]Preencher campo calculado automaticamente.

    Mensagem  wsenna em 27/5/2017, 14:45

    Valew Amigão, tentarei.

    Tenha um ótimo final de semana.

    Abraços, WSenna
    avatar
    Dilson
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Preencher campo calculado automaticamente.

    Mensagem  Dilson em 27/5/2017, 15:14

    Elaborei tomando como base os dados exemplificativos da mensagem inicial.

    Criei uma Função e chamei no SQL.

    A função:

    Public Function CalculaCampo(argOcorrencia As Integer)
    If argOcorrencia <= 50 Then
         CalculaCampo = 1
    ElseIf argOcorrencia > 50 And argOcorrencia <= 100 Then
         CalculaCampo = 2
    ElseIf argOcorrencia > 100 And argOcorrencia <= 150 Then
         CalculaCampo = 3
    ElseIf argOcorrencia > 150 And argOcorrencia <= 200 Then
         CalculaCampo = 4
    Else
         CalculaCampo = 0
    End If
    End Function

    A instrução SQL:
    SELECT DISTINCT Setor, Count(Setor) AS [Total de ocorrências], Dia, CalculaCampo([Total de ocorrências]) AS CampoCalculado
    FROM NomeDaTabela
    GROUP BY Setor, Dia;

    A função copie e cole em um módulo;
    O SQL copie e cole no construtor de consultas em modo SQL.

    misaelsp
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 96
    Registrado : 20/02/2013

    Re: [Resolvido]Preencher campo calculado automaticamente.

    Mensagem  misaelsp em 27/5/2017, 15:33

    vllw meu brother,

    tenta e nos dê o retorno para saber se minha ajuda foi util.
    Very Happy


    .................................................................................
    É fazendo que se aprende a fazer aquilo que se deve aprender a fazer [Você precisa estar registrado e conectado para ver esta imagem.]
    avatar
    wsenna
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 491
    Registrado : 22/12/2009

    Re: [Resolvido]Preencher campo calculado automaticamente.

    Mensagem  wsenna em 27/5/2017, 16:44

    Caro misaelsp, boa tarde.

    Amigão, fiz apenas uns ajustes e a "coisa" funfou legal mesmo.
    Fico imensamente grato pelo seu interesse em dividir seus conhecimentos nesse Fórum.
    Tenha um ótimo final de semana.

    Grande abraço, WSenna

    misaelsp
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 96
    Registrado : 20/02/2013

    Re: [Resolvido]Preencher campo calculado automaticamente.

    Mensagem  misaelsp em 27/5/2017, 17:00

    Valeu pelo retorno brother Very Happy fico feliz em ajudar.


    .................................................................................
    É fazendo que se aprende a fazer aquilo que se deve aprender a fazer [Você precisa estar registrado e conectado para ver esta imagem.]

      Data/hora atual: 16/11/2018, 12:23