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

    Trava em sorteio aleatório

    Compartilhe

    fermoraisc
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 23
    Registrado : 03/08/2017

    Trava em sorteio aleatório

    Mensagem  fermoraisc em 6/3/2018, 11:43

    Bom dia pessoal, Criei um módulo que sorteia peças de diferentes classes de acordo com a quantidade de cada classe que eu escolho. Ele só volta a sortear uma mesma peça quando todas da mesma classe já foram sorteadas, porém me surgiu o seguinte problema: Eu possuo 105 peças de classe B fiz 2 sorteios de 44 peças aleatórias, no terceiro como acabaram as peças ele iria repetir as que ja foram sorteadas anteriormente o problema é que ele esta repetindo peças que já constam nesse mesmo sorteio. Por exemplo no sorteio numero 3 ele sorteia 16 peças que nunca foram sorteadas antes, então ele recomeça o sorteio e repete uma dessas 16. Alguém sabe algum tipo de trava ou de chave primaria para ele não repetir uma mesma peça em um mesmo sorteio ?
    Agradeço desde já.

    Código:
    'Sorteio B

    I = 0

    Do While I < QtdeB

        If (DLookup("Count(ID)", "TB_SORTEADOS", "TABELA = 'B' AND COD_RODADA=" & CodRodadaAtualB) = totItensB) Then
            CodRodadaAtualB = CodRodadaAtualB + 1
        End If

        item_aux = DLookup("ID_ITEM", "B", "ID = " & Int(Rnd * totItensB + 1)) 'Busca novo item aleatoriamente
       
        If (IsNull(DLookup("ID", "TB_SORTEADOS", "ID_ITEM = '" & item_aux & "' AND COD_RODADA=" & CodRodadaAtualB))) Then
       
            cod_item_aux = DLookup("ABC", "B", "ID_ITEM = '" & item_aux & "'")
           
            DoCmd.RunSQL "INSERT INTO " & _
                "TB_SORTEADOS(COD_RODADA, COD_SORTEIO, TABELA, DATA, ID_ITEM, COD_ITEM) VALUES (" & _
                CodRodadaAtualB & ", " & _
                CodSorteioAtual & ", " & _
                "'A', " & _
                "'" & DtAtual & "', " & _
                "'" & item_aux & "', " & _
                "'" & cod_item_aux & "'" & _
                ")"
           
           
            I = I + 1
        End If
       
    Loop
    avatar
    CassioFabre
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 728
    Registrado : 18/01/2013

    Re: Trava em sorteio aleatório

    Mensagem  CassioFabre em 6/3/2018, 12:53

    Bom dia,

    Veja se este tópico te ajuda de alguma forma [Você precisa estar registrado e conectado para ver este link.]

    Abraço.


    .................................................................................
    Só não tem código pra morte!

    fermoraisc
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 23
    Registrado : 03/08/2017

    Re: Trava em sorteio aleatório

    Mensagem  fermoraisc em 6/3/2018, 13:22

    Bom dia Cassio,
    Obrigada pela rapida resposta. Porém não consegui aplicar o exemplo ao meu caso. No meu caso eu sorteio varias peças ao mesmo tempo, peças já existentes em uma tabela, por exemplo eu tenho 105 peças em uma tabela em um dos sorteios eu sorteio 44 peças no outro mais 44 peças e no seguinte eu sorteio mais 44 então nesse caso o sistema ira sortear as 16 peças restantes que ainda não foram sorteadas e depois ele ira buscar em qualquer uma das 105 peças já que todas ja foram sortedas, o problema é que ele acaba repetindo alguma das 16 peças sorteadas.
    avatar
    CassioFabre
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 728
    Registrado : 18/01/2013

    Re: Trava em sorteio aleatório

    Mensagem  CassioFabre em 6/3/2018, 13:50

    Bom dia,

    E se você tiver um campo booleano na tabela que informa quais registros já foram sorteados? No momento do sorteio, você verifica se esse campo é "Sim" para o registro sorteado e caso não seja, ele será "sorteado", caso seja, desconsidera e tenta outro.

    Abraço.


    .................................................................................
    Só não tem código pra morte!
    avatar
    CassioFabre
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 728
    Registrado : 18/01/2013

    Re: Trava em sorteio aleatório

    Mensagem  CassioFabre em 6/3/2018, 15:48

    Boa tarde,

    Teste também esse exemplo do avelino. Me parece ser justamente o que precisa, fazendo-se as devidas adaptações.

    usandoaccess.com.br/tutoriais/sons-no-access-bingo.asp?id=1 (copiar e colar no navegador)

    Abraço.


    .................................................................................
    Só não tem código pra morte!

    fermoraisc
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 23
    Registrado : 03/08/2017

    Re: Trava em sorteio aleatório

    Mensagem  fermoraisc em 7/3/2018, 16:41

    Boa tarde,

    Não consegui entender como adaptar esse exemplo para o meu caso, no meu caso eu possuo varios registros em uma tabela e sorteio varios de uma só vez, meu problema é que eles se repetem. No caso do bingo é sorteado um número por vez e são numeros aleatórios.

    Obrigada
    avatar
    CassioFabre
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 728
    Registrado : 18/01/2013

    Re: Trava em sorteio aleatório

    Mensagem  CassioFabre em 7/3/2018, 17:39

    Boa tarde,

    Amigo, poste um modelo.

    Abraço.


    .................................................................................
    Só não tem código pra morte!

    fermoraisc
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 23
    Registrado : 03/08/2017

    Re: Trava em sorteio aleatório

    Mensagem  fermoraisc em 8/3/2018, 13:25

    Com certeza amigo. Veja se consegue entender.
    Anexos
    Modelo_Sorteio.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (96 Kb) Baixado 4 vez(es)
    avatar
    CassioFabre
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 728
    Registrado : 18/01/2013

    Re: Trava em sorteio aleatório

    Mensagem  CassioFabre em 13/3/2018, 17:19

    Boa tarde,

    De uma olhada no código do botão Sorteio Modificado. Se não entender a lógica, só perguntar, mas deixei alguns comentários no código.

    Abraço.
    Anexos
    Modelo Sorteio Modificado.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (367 Kb) Baixado 9 vez(es)


    .................................................................................
    Só não tem código pra morte!

    fermoraisc
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Feminino
    Localização : Brasil
    Mensagens : 23
    Registrado : 03/08/2017

    Re: Trava em sorteio aleatório

    Mensagem  fermoraisc em 14/3/2018, 11:27

    Muitissimo obrigada, seu código está muito bom, o único problema é aquela trava que não deixa sortear se todos os itens já tiverem sido sorteados e no caso quando todos os itens tiverem sido sorteados eu teria que sortea-los de novo, eles só não podem se repetir em um mesmo sorteio. E é possivel colocar esses números sorteados em uma tabela ? ou seria possível só em TextBox ? É que nesse caso eu preciso deles em uma tabela pois envio esses números sortedaos para um outro banco de dados.


    Obrigada
    avatar
    CassioFabre
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 728
    Registrado : 18/01/2013

    Re: Trava em sorteio aleatório

    Mensagem  CassioFabre em 14/3/2018, 11:47

    Bom dia,

    Voce pode fazer de duas formas:

    - Copiar os items para a tabela "Itens Sorteados", conforme já vinha fazendo no seu código. Eu usei o textbox só porque foi mais prático pra mim, você vai ter que adaptar ao seu caso concreto. E então, a partir dessa segunda tabela, passar os registros para o outro banco de dados.

    - Fazer uma verificação caso todos os itens da tabela tenham sido marcados como "sorteado". Basta contar o número de registros que tenham sorteado = false, caso seja = 0 então você limpa todos os campos, ou seja, faz todos os registros terem sorteado = false. Aí você poderá "resortear" todos os registros. Após cada sorteio, você envia os itens que tenham sorteado = true para seu outro banco de dados. Isso evitaria uma tabela secundária, o tráfego de copiar um registro para outra tabela e seria muito mais prático. Eu optaria por essa segunda opção.

    Abraço.


    .................................................................................
    Só não tem código pra morte!

      Data/hora atual: 22/10/2018, 20:11