MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    [Resolvido]Programa de Conferência Lotomania

    avatar
    Carlos.Junior
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 12/01/2018

    [Resolvido]Programa de Conferência Lotomania Empty [Resolvido]Programa de Conferência Lotomania

    Mensagem  Carlos.Junior em 15/1/2018, 12:22

    Bom dia, estou tentando criar um programa para conferir automaticamente os resultados da lotomania, e indicar quantos números acertei em cada jogo.
    estou com problemas para comparar os jogos com os resultados, pois, consegui comparar coluna com coluna (Ex: rsJogos.Fields("A") = rsResultado.Fields("A"))
    mas tenho que comparar a coluna rsJogos.Fields("A") com todas as colunas da tabela Resultado.
    sei que preciso fazer um loop, mas como sou iniciante não consigo proceguir

    Segue o código para análise, desde já agradeço.

    Private Sub Verifica()

    Dim rsJogos As Recordset
    Dim rsResultado As Recordset

    Set rsJogos = CurrentDb.OpenRecordset("select * from Jogos;")
    Set rsResultado = CurrentDb.OpenRecordset("select * from Resultado;")

    DoCmd.SetWarnings False

    While Not rsJogos.EOF
       While Not rsResultado.EOF
           If rsJogos.Fields("A") = rsResultado.Fields("A") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
           If rsJogos.Fields("B") = rsResultado.Fields("B") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
           If rsJogos.Fields("C") = rsResultado.Fields("C") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
           If rsJogos.Fields("D") = rsResultado.Fields("D") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
           If rsJogos.Fields("E") = rsResultado.Fields("E") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
           If rsJogos.Fields("F") = rsResultado.Fields("F") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
           If rsJogos.Fields("G") = rsResultado.Fields("G") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
           If rsJogos.Fields("H") = rsResultado.Fields("H") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
           If rsJogos.Fields("I") = rsResultado.Fields("I") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
           If rsJogos.Fields("J") = rsResultado.Fields("J") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
           If rsJogos.Fields("K") = rsResultado.Fields("K") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
           If rsJogos.Fields("L") = rsResultado.Fields("L") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
           If rsJogos.Fields("M") = rsResultado.Fields("M") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
           If rsJogos.Fields("N") = rsResultado.Fields("N") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
           If rsJogos.Fields("O") = rsResultado.Fields("O") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
       
           rsResultado.MoveNext
       Wend

       rsResultado.MoveFirst
       rsJogos.MoveNext
    Wend

    DoCmd.SetWarnings True

    End Sub
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3913
    Registrado : 14/08/2013

    [Resolvido]Programa de Conferência Lotomania Empty Re: [Resolvido]Programa de Conferência Lotomania

    Mensagem  FabioPaes em 15/1/2018, 12:52

    Veja aqui nesse Vídeo como é feito o Loop com RecordSet
    https://www.maximoaccess.com/t30841-entrada-saida-de-estoque-no-clique-de-um-botao

    Como tem os resultados a comparar dispostos em Colunas (a, b, c, d...) terá que fazer esse Comparação utilizando Ifs antes de mover para o Proximo Jogo... Somente depois que verificar o Numero A em todas as colunas do Resultado é que deverá mover para o Próximo Jogo.


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    Carlos.Junior
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 12/01/2018

    [Resolvido]Programa de Conferência Lotomania Empty Re: [Resolvido]Programa de Conferência Lotomania

    Mensagem  Carlos.Junior em 15/1/2018, 12:58

    Blz, vou assistir o video e depois mando respostas se eu consegui fazer ou com duvidas
    Obrigado.
    avatar
    Carlos.Junior
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 12/01/2018

    [Resolvido]Programa de Conferência Lotomania Empty Re: [Resolvido]Programa de Conferência Lotomania

    Mensagem  Carlos.Junior em 15/1/2018, 13:31

    temporariamente eu resolvi da seguinte maneira
    If rsJogos.Fields("D") = rsResultado.Fields("A") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
    If rsJogos.Fields("D") = rsResultado.Fields("B") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
    If rsJogos.Fields("D") = rsResultado.Fields("C") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
    If rsJogos.Fields("D") = rsResultado.Fields("D") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
    If rsJogos.Fields("D") = rsResultado.Fields("E") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
    If rsJogos.Fields("D") = rsResultado.Fields("F") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
    If rsJogos.Fields("D") = rsResultado.Fields("G") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
    If rsJogos.Fields("D") = rsResultado.Fields("H") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
    If rsJogos.Fields("D") = rsResultado.Fields("I") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
    If rsJogos.Fields("D") = rsResultado.Fields("J") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
    If rsJogos.Fields("D") = rsResultado.Fields("K") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
    If rsJogos.Fields("D") = rsResultado.Fields("L") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
    If rsJogos.Fields("D") = rsResultado.Fields("M") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
    If rsJogos.Fields("D") = rsResultado.Fields("N") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")
    If rsJogos.Fields("D") = rsResultado.Fields("O") Then DoCmd.RunSQL ("update Jogos set Resultado = nz(Resultado, 0) + 1 where Código = " & rsJogos.Fields("Código") & ";")

    resolveu o problema, mas gerou muitas linhas de código. Vou estudar mais e tentar otimizar o código
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3913
    Registrado : 14/08/2013

    [Resolvido]Programa de Conferência Lotomania Empty Re: [Resolvido]Programa de Conferência Lotomania

    Mensagem  FabioPaes em 15/1/2018, 15:07

    Olá! Vc pode diminuir as linhas (Escrita) mas o código terá que repetir na mesma qnt, pq são condições diferentes...

    Poderá diminuir com outro Lopp For x=0 to QntdeCampo dentro desse Código, ao invés de especificar o Nome do Campo, especifique a Coluna...



    rsResultado.Fields("A") se tornaria rsResultado(0) sendo que o zero corresponde a primeira coluna do Recordset rsResultado.

    Quando utiliza um For x=0 to xxx, para cada passagem da repetição, a variável x terá um valor dentro da repetição For... assim poderá utilizar ela para ir entre as colunas do RESULTADO (a, b, c, d ... O ). assim trocaria todas as linhas por uma Única.

    Veja aqui um exemplo de utilização de uma repetição For: https://www.maximoaccess.com/t26645-resolvidoadicionar-uma-quantia-de-dados-em-sequencia-a-partir-de-um-formulario#188324


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!
    avatar
    Carlos.Junior
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 8
    Registrado : 12/01/2018

    [Resolvido]Programa de Conferência Lotomania Empty Re: [Resolvido]Programa de Conferência Lotomania

    Mensagem  Carlos.Junior em 15/1/2018, 15:52

    Vlw camarada, obrigado pela ajuda e atenção.
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3913
    Registrado : 14/08/2013

    [Resolvido]Programa de Conferência Lotomania Empty Re: [Resolvido]Programa de Conferência Lotomania

    Mensagem  FabioPaes em 15/1/2018, 16:00

    Grato pelo retorno amigo, até a próxima se Deus quiser!

    Para que o Topico fique completo, por favor poste o Código com as alterações sugeridas!!!


    .................................................................................
    _____________________________________________________________________
    Achou a solução para sua dúvida? Não seja Egoísta, Compartilhe com todos!
    A dica do Colega foi útil? Agradeça!

    O importante não saber tudo, mas sim a Onde procurar!

      Data/hora atual: 23/10/2020, 12:30