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]Programa de Conferência Lotomania

    Compartilhe

    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

    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
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

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

    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
    [Você precisa estar registrado e conectado para ver este link.]

    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!

    Carlos.Junior
    Novato
    Novato

    Respeito às Regras 100%

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

    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.

    Carlos.Junior
    Novato
    Novato

    Respeito às Regras 100%

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

    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
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

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

    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: [Você precisa estar registrado e conectado para ver este link.]


    .................................................................................
    _____________________________________________________________________
    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!

    Carlos.Junior
    Novato
    Novato

    Respeito às Regras 100%

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

    Re: [Resolvido]Programa de Conferência Lotomania

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

    Vlw camarada, obrigado pela ajuda e atenção.
    avatar
    FabioPaes
    Moderador
    Moderador

    Respeito às Regras 100%

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

    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: 14/11/2018, 11:52