MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Sorteio Aleatório de Registros dependendo do Tipo

    Compartilhe

    rdrck
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 983
    Registrado : 11/03/2014

    [Resolvido]Sorteio Aleatório de Registros dependendo do Tipo

    Mensagem  rdrck em Ter 11 Mar 2014, 15:07

    Bom dia, sou novo aqui no fórum e creio estar colocando essa dúvida na área correta, até porque creio precisar de códigos para fazer o que pretendo, porém, se não, me desculpem.
    Bom, o caso é o seguinte:
    Estou construindo um sistema para gerar uma escala de plantão dos funcionários, onde esses plantões ocorrem nos finais de semana e feriados, ou dias facultados, ou seja, todos os dias em que não haja o dia normal de trabalho.
    Os funcionários escalados para o plantão dividem-se por áreas, sendo as mesmas:
    1 - Quadro Técnico-Jurídico;
    2 - Equipe Multidisciplinar;
    3 -  Apoio Administrativo;
    4 - Oficial;
    5 - Auxiliar de Manutenção;
    6 - Auxiliar de Serv. Gerais; e
    7 - Motorista.
    Ocorre que, dentre algumas dessas áreas, uns funcionários tem algum tipo de gratificação e outros não.
    Outrossim, algumas áreas terão 02 funcionários selecionados e outras 03.
    Pois bem, já criei as tabelas Funcionários, Área e Data (não sei se essa seria necessária, pois eu iria cadastrar todas as datas dos plantões).
    Na tabela Funcionários, já coloquei os campos Nome, Divisão (puxa os valores da tabela Área) e Gratificação (com Caixa de Combinação, digitando os valores SIM / NÃO).
    Também já criei as consultas com as devidas filtragens (funcionários por área e por recebimento ou não de gratificação).

    O que estou precisando é gerar um SORTEIO ALEATÓRIO dos funcionários por Área e por Gratificação.
    Por exemplo: Na área de Apoio Administrativo, preciso de 02 funcionários por dia de plantão, sendo que, primeiro devo pegar todos os que recebem Gratificação e sorteá-los até a data em que terminem os mesmos e, depois, pegar todos os que não recebem gratificação e sorteá-los também, e assim sucessivamente.

    Se puderem me ajudar com alguma dica ou exemplo específico, agradeceria muito.
    Fico no aguardo e desde já agradeço.

    Roderick.

    Fernando Bueno
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1819
    Registrado : 13/04/2012

    Re: [Resolvido]Sorteio Aleatório de Registros dependendo do Tipo

    Mensagem  Fernando Bueno em Sab 15 Mar 2014, 00:58

    Boa noite, procure por Randomize ja vi coisas do tipo aqui no forum.


    .................................................................................
    Um abraço
    Fernando Bueno


    O aumento do conhecimento é como uma esfera dilatando-se no espaço
    quanto maior a nossa compreensão,
    maior o nosso contacto com o desconhecido
    [Você precisa estar registrado e conectado para ver esta imagem.]

    rdrck
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 983
    Registrado : 11/03/2014

    Re: [Resolvido]Sorteio Aleatório de Registros dependendo do Tipo

    Mensagem  rdrck em Seg 17 Mar 2014, 11:18

    Então Fernando,
    Já procurei nos tópicos e no repositório, e achei algumas coisas interessantes, mas não que atendam especificamente o que quero, entende?
    Encontro muito exemplo de sorteio aleatório de um registro, e coisa do tipo, porém eu preciso de um sorteio dependendo do tipo de área do funcionário.
    Já até criei as consultas que filtram os funcionários por área, porém não sei se dá pra fazer escolha aleatória de registros a partir da consulta. Se desse era mais fácil, pois a consulta já filtra os registros da tabela, e aí seria só implementar o sorteio.
    Mas se o sorteio tiver de ser direto no formulário, ou nos registros da tabela, não sei como filtrar por área, entende?
    Se puderem me ajudar, agradeço muito.

    Roderick.

    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Sorteio Aleatório de Registros dependendo do Tipo

    Mensagem  JPaulo em Seg 17 Mar 2014, 12:34

    Um pitaco;

    A função interna Random, funciona deste jeito;

    Exemplo da tabela "SuaTabelaFuncionarios", campo "Funcionario"

    SELECT TOP 1 Funcionario FROM SuaTabelaFuncionarios ORDER BY Rnd(Len(Funcionario));

    Desta forma a consulta irá mostrar um Funcionario aleatório;



    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

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

    rdrck
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 983
    Registrado : 11/03/2014

    Re: [Resolvido]Sorteio Aleatório de Registros dependendo do Tipo

    Mensagem  rdrck em Seg 17 Mar 2014, 14:05

    Olá JPaulo,

    Entendi o que vc disse, porém isso só vai me gerar um funcionário de forma aleatória, dos vários cadastrados, certo?
    Porém, o que preciso é de uma sequência com todos os funcionários, dependendo da área e gratificação.
    Veja abaixo um exemplo do que digo, pra ver se me faço mais claro:
    Digamos que eu tenha cadastrado os seguintes funcionários, da seguinte maneira, na tabela Funcionários:

    NOME ÁREA GRATIFICAÇÃO
    José Silva Motorista SIM
    Adriano Soares Apoio Adm. NÃO
    Helen Souza Apoio Adm. SIM
    Maria Joaquina Serv. Gerais NÃO
    Antônio da Silva Motorista NÃO
    Ana Nunes Apoio Adm. SIM
    Leide Maria Téc. Jurid. SIM
    Hugo Sanches Manutenção NÃO
    Carlos Mota Manutenção NÃO

    Então, o que preciso é de um sorteio entre os funcionários, de forma que me retorne, por exemplo, todos os "Apoio Adm." com gratificação, então eu teria como resultado:

    Helen Souza
    Ana Nunes

    Pois as duas são "Apoio Adm." e tem gratificação.
    Entende? Preciso de todos os funcionários que estão numa área e que possuam ou não gratificação.
    Se puder me ajudar, desde já agradeço.

    Roderick.

    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

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

    Re: [Resolvido]Sorteio Aleatório de Registros dependendo do Tipo

    Mensagem  JPaulo em Seg 17 Mar 2014, 14:25

    Ola;

    Nesse exemplo que você passou, não vejo nada de Sorteio aleatório,

    O resultado final foram so dois com "Apoio Adm." e com gratificação = SIM.



    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

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

    rdrck
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 983
    Registrado : 11/03/2014

    Re: [Resolvido]Sorteio Aleatório de Registros dependendo do Tipo

    Mensagem  rdrck em Seg 17 Mar 2014, 14:41

    Olá JPaulo,

    Bom, isso foi só um exemplo que lhe dei pra vc entender o que estou querendo. Na verdade vou ter uma tabela com mais de 500 funcionários, distribuidos entre várias áreas, sendo que, uns tem gratificação e outros não. Entende?
    É muita gente, e preciso de uma escolha aleatória, para que não seja alegado que houve beneficiamento de alguns em algumas datas.
    Naquele exemplo, só citei 02 funcionários da área "Apoio Adm." e com gratificação, mas, na verdade, é muita gente.
    Se puder me ajudar, agradeço.

    Roderick.

    rdrck
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 983
    Registrado : 11/03/2014

    Re: [Resolvido]Sorteio Aleatório de Registros dependendo do Tipo

    Mensagem  rdrck em Qua 19 Mar 2014, 14:30

    E entao, pessoal, será que alguém pode me ajudar com esse tópico?

    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 920
    Registrado : 05/02/2010

    Sorteio Aleatorio de Registros dependendo do Tipo

    Mensagem  good guy em Qua 19 Mar 2014, 16:32

    Olá rd,

    Tente assim, coloque esse código em um botão:

    POR ÁREA:

    Private Sub cmdAleatorio_Click()
    Dim k As Long
    Dim rs As DAO.Recordset
    Dim sCod As Long

    Set rs = CurrentDb.OpenRecordset("tblClientes", dbOpenTable)

    k = rs.RecordCount

    Dim LRandomNumber As Integer

    LRandomNumber = Int((k - 1 + 1) * Rnd + 1)  
            'k é o número máximo de registros e 1 é o primeiro registro
     
    MsgBox "Registro: " & LRandomNumber, vbExclamation, "Aleatorio"

    End Sub



    POR GRATIFICAÇÃO:

    Private Sub cmdAleatorio_Click()
    Dim k As Long
    Dim rs As DAO.Recordset
    Dim sCod As Long

    Set rs = CurrentDb.OpenRecordset("tblClientes", dbOpenTable)
    'Substitua a tabela por uma consulta filtrada de funcionários que receberam gratificação

    k = rs.RecordCount

    Dim LRandomNumber As Integer

    LRandomNumber = Int((k - 1 + 1) * Rnd + 1)
    'k é o número máximo de registros e 1 é o primeiro registro

    MsgBox "Registro: " & LRandomNumber, vbExclamation, "Aleatorio"

    End Sub






    Última edição por good guy em Qua 19 Mar 2014, 16:48, editado 1 vez(es)

    rdrck
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 983
    Registrado : 11/03/2014

    Re: [Resolvido]Sorteio Aleatório de Registros dependendo do Tipo

    Mensagem  rdrck em Qua 19 Mar 2014, 16:37

    Olá Guy,

    Deixa eu só tirar uma dúvida: Esse código irá me gerar a escolha de um funcionário e me mostrar em uma caixa de mensagem esse escolhido?

    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 920
    Registrado : 05/02/2010

    Sorteio Aleatório de Registros dependendo do Tipo

    Mensagem  good guy em Qua 19 Mar 2014, 16:44

    Não sei se é assim que vc quer, mas pode surgir em uma caixa de texto também. A tabela "tblClientes" é só um exemplo. Você pode para cada formulário de funcionários colocar um botão com um código aleatório igual, mudando somente o nome da tabela. Por exemplo: tblQuadroJuridico, tblApoioAdministrativo, etc.

    rdrck
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 983
    Registrado : 11/03/2014

    Re: [Resolvido]Sorteio Aleatório de Registros dependendo do Tipo

    Mensagem  rdrck em Qua 19 Mar 2014, 16:58

    Na verdade, o problema é que não estou querendo 01 registro específico, dentre os vários existentes, entende?
    Queria, na verdade, um relatório com todos os funcionários cadastrados, mas de forma a me gerar uma listagem aleatória, cada vez em uma ordem diferente, entende?
    E isso tem que levar em consideração a ÁREA e se recebe ou não GRATIFICAÇÃO.

    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 920
    Registrado : 05/02/2010

    Sorteio Aleatório de Registros dependendo do Tipo

    Mensagem  good guy em Qua 19 Mar 2014, 17:02

    Nesse caso, crie um botão com este mesmo código mudando somente a fonte, em vez da tabela uma consulta filtrada dos funcionários com gratificações. (Veja na minha primeira postagem) Por exemplo, você pode colocar uma checkbox em suas tabelas e filtrar através de uma consulta quais os funcionários com gratificação pela seleção de registro com o checkbox = True ou -1.

    Para gerar os relatórios, crie uma tabela ou duas tabelas que recebam através de um caixa de texto com o número aleatório, exemplo:

    Private Sub cmdAleatorio_Click()
    Dim k As Long
    Dim rs As DAO.Recordset
    Dim sCod As Long
    Dim strSQL As String
    Dim sNome As String

    Set rs = CurrentDb.OpenRecordset("tblClientes", dbOpenTable)

    k = rs.RecordCount

    Dim LRandomNumber As Integer

    LRandomNumber = Int((k - 1 + 1) * Rnd + 1)
             'k é o número máximo de registros e 1 é o primeiro registro

    txtAleatorio= LRandomNumber

    sCod = txtAleatorio
    sNome = Dlookup("Nome","tblClientes","Codigo = " & sCod)

    strSQL = "INSERT INTO tblSelecaoAleatorio(Codigo, Nome) VALUES('" & sCod & "','" & sNome & "')
    Currentdb.Execute strSQL

    End Sub



    Depois que você completar o número de funcionários escolhidos aleatoriamente, gere um relatório a partir da tabela "tblSelecaoAleatorio". Valew?

    rdrck
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 983
    Registrado : 11/03/2014

    Re: [Resolvido]Sorteio Aleatório de Registros dependendo do Tipo

    Mensagem  rdrck em Qui 20 Mar 2014, 14:09

    Olá Guy,

    Bom, usei o último código que vc me passou, tirando os dados diretamente da tabela de funcionários e não da consulta, e deu tudo certinho, porém ele só está me retornando um registro, ou seja, ele escolhe somente um funcionário e joga na tblSelecaoAleatoria. Na verdade eu precisaria de todos os funcionários, de forma aleatória, entende?
    Desde já agradeço pela paciência até aqui e peço que, se vc puder me dar uma luz pra que seja gerado uma relação aleatória com todos os funcionários (lembrando, por área e gratificação), agradeceria muito.

    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 920
    Registrado : 05/02/2010

    Sorteio Aleatório de Registros dependendo do Tipo

    Mensagem  good guy em Sex 21 Mar 2014, 21:14

    Olá rd,

    Tente assim:

    Private Sub cmdAleatorio_Click()
    Dim k As Long
    Dim rs As DAO.Recordset
    Dim sCod As Long
    Dim strSQL As String
    Dim sNome As String


    Set rs = CurrentDb.OpenRecordset("tblNomes", dbOpenTable)

    k = rs.RecordCount

    Dim LRandomNumber As Integer

    LRandomNumber = Int((k - 1 + 1) * Rnd + 1)          'k é o número máximo de registros e 1 é o primeiro registro

    txtAleatorio = LRandomNumber

    sCod = txtAleatorio


    For i = 1 To k     'Quando chegar ao total de registros existentes o looping de inserção deve parar e você terá uma tabela só de nomes aleatórios

    sNome = DLookup("Nome", "tblClientes", "Codigo = " & sCod)

    strSQL = "INSERT INTO tblSelecaoAleatorio(Codigo, Nome) VALUES('" & sCod & "','" & sNome & "')"
    CurrentDb.Execute strSQL

    Next i


    End Sub


    Última edição por good guy em Seg 24 Mar 2014, 18:08, editado 1 vez(es)

    rdrck
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 983
    Registrado : 11/03/2014

    Re: [Resolvido]Sorteio Aleatório de Registros dependendo do Tipo

    Mensagem  rdrck em Seg 24 Mar 2014, 11:26

    Olá Guy,

    Implementei o novo código, porém apareceu o seguinte erro: For sem Next.


    rdrck
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 983
    Registrado : 11/03/2014

    Re: [Resolvido]Sorteio Aleatório de Registros dependendo do Tipo

    Mensagem  rdrck em Seg 24 Mar 2014, 11:28

    Opa, não tinha colocado o Next.
    Agora deu certo, porém continua sorteando apenas 01 registro.
    Verifiquei tb que vc acrescentou uma variável sCount, porém não a vi em nenhuma linha do código.
    Será que fiz algo errado?

    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 920
    Registrado : 05/02/2010

    Sorteio Aleatório de Registro dependendo do Tipo

    Mensagem  good guy em Seg 24 Mar 2014, 18:11

    Olá rd,

    Esta variável está sobrando realmente. Troquei-a por "k". Não se esqueça de colocar "Next i". Agora quanto ao restante do código, como é que ficou? A cada clique no botão insere um registro aleatório ou o mesmo registro? Não entendi.

    rdrck
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 983
    Registrado : 11/03/2014

    Re: [Resolvido]Sorteio Aleatório de Registros dependendo do Tipo

    Mensagem  rdrck em Ter 25 Mar 2014, 11:18

    Olá Guy,

    O sorteio está sendo feito normalmente, de forma aleatória, porém só escolhe um registro e joga na tabela.
    Cada vez que clico no botão, ele escolhe um registro de forma aleatória e diferente, porém é só 01 e não todos.

    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 920
    Registrado : 05/02/2010

    Sorteio Aleatório de Registros dependendo do Tipo

    Mensagem  good guy em Ter 25 Mar 2014, 13:18

    Olá rd,

    É, infelizmente, este meu código sorteia um por um mesmo. Mas existe uma solução que acredito que vc ainda não tentou que é o do João Paulo. Acredito que seu código pode resolver o seu problema.

    Crie uma consulta com este código SQL. Troque o 1 por outro número, como o total de sorteados que vc deseja. Acho que é por aí.

    SELECT TOP 1 Funcionario FROM SuaTabelaFuncionarios ORDER BY Rnd(Len(Funcionario));


    rdrck
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 983
    Registrado : 11/03/2014

    Re: [Resolvido]Sorteio Aleatório de Registros dependendo do Tipo

    Mensagem  rdrck em Ter 25 Mar 2014, 13:50

    Olá Guy,

    E onde eu colocaria esse código na consulta?


    .................................................................................
    Meu Programa / OS:
    Access 2007 - Windows 7.

    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 920
    Registrado : 05/02/2010

    Sorteio Aleatório de Registros dependendo do Tipo

    Mensagem  good guy em Ter 25 Mar 2014, 16:18

    Olá rd,

    Crie uma consulta no modo Design(Estrutura). Na Barra de ferramentas, Página Inicial, Modo de Exibição, escolha Modo SQL. Neste ambiente coloque sua sintaxe SQL. Tenha o trabalho de colocar dados reais como nome de tabela e campos existentes ou objetos de sua consulta.

    rdrck
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 983
    Registrado : 11/03/2014

    Re: [Resolvido]Sorteio Aleatório de Registros dependendo do Tipo

    Mensagem  rdrck em Ter 25 Mar 2014, 16:27

    Olá Guy,
    Implementei em uma das consultas e parece que funcionou.
    Valeu mesmo, vai ser de grande ajuda.

    Muito obrigado a todos que se disporam a me ajudar com esse tópico. Vou dá-lo por resolvido.
    Obrigado!


    .................................................................................
    Meu Programa / OS:
    Access 2007 - Windows 7.

    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 920
    Registrado : 05/02/2010

    Sorteio Aleatório de Registros dependendo do Tipo

    Mensagem  good guy em Qua 02 Abr 2014, 21:59

    Olá rd,

    O fórum todo agradece.

    Passe lá no Facebook e dê uma curtida na minha página e compartilhe com seus amigos.

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

    rdrck
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 983
    Registrado : 11/03/2014

    Re: [Resolvido]Sorteio Aleatório de Registros dependendo do Tipo

    Mensagem  rdrck em Qui 03 Abr 2014, 12:16

    Olá Guy,
    Meu amigo, eu até faria isso, mas não tenho facebook.
    Prefiro assim, senão a gente acaba ficando tempo demais vendo as postagens.
    Mas obrigado pela contribuição.


    .................................................................................
    Meu Programa / OS:
    Access 2007 - Windows 7.

    good guy
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 920
    Registrado : 05/02/2010

    Sorteio Aleatório de Registros dependendo do Tipo

    Mensagem  good guy em Qui 03 Abr 2014, 15:29

    Olá rd,

    Meu site:

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

    rdrck
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 983
    Registrado : 11/03/2014

    Re: [Resolvido]Sorteio Aleatório de Registros dependendo do Tipo

    Mensagem  rdrck em Qui 03 Abr 2014, 15:48

    Beleza,
    Vou dar uma olhada.


    .................................................................................
    Meu Programa / OS:
    Access 2007 - Windows 7.

      Data/hora atual: Sab 10 Dez 2016, 12:41