MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

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


3 participantes

    [Resolvido]Ler campo sim/não em qualquer posição do formulário contínuo

    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5074
    Registrado : 20/04/2011

    [Resolvido]Ler campo sim/não em qualquer posição do formulário contínuo Empty [Resolvido]Ler campo sim/não em qualquer posição do formulário contínuo

    Mensagem  Silvio 19/12/2017, 19:01

    Prezados boa tarde.

    Estou "empacado" em um problema.   Vejam a rotina abaixo...

    Código:

    Private Sub atualizar()

    If Me.AEnvioEnviado = -1 Or Me.AEnvioEnviado = True Then

    If MsgBox("Aplicar a data de: " & Me.DataAeEnviado & vbCrLf & _
              "em todos os registros selecionados ?", vbYesNo, Me.Caption) = vbNo Then
              Exit Sub
              Else
             
              DoCmd.RunCommand acCmdSave

    'rotina para copiar a data para os demais campos assinalados com -1

    Dim rs As DAO.Recordset
    Dim Contador As Long
    Dim ContaOProgresso As Long
    Set rs = CurrentDb.OpenRecordset("SELECT * FROM QryMudaStatusAEnvioEnviado WHERE AEnvioEnviado  = -1")

    If rs.RecordCount > 0 Then
    rs.MoveLast
    Contador = rs.RecordCount
    rs.MoveFirst
    End If

    For ContaOProgresso = 1 To Contador
    rs.Edit
    rs("DataAeEnviado") = Me.DataAeEnviado
    rs.Update
    rs.MoveNext
    Next ContaOProgresso
    DoCmd.RunCommand acCmdSaveRecord
    'fim da rotina de cópia

    MsgBox "OK, Total de: " & Contador & " registros atualizados.", vbInformation, Me.Caption
    DoCmd.RunCommand acCmdSave
    Me.Requery
    End If
    End If

    End Sub


    Preciso que o campo " Me.AenvioEnviado" seja lido em qualquer posição do formulário contínuo.
    Do modo que está e se encontra, a rotina está lendo apenas o primeiro registro que está no formulário.

    Se alguém puder me dar uma força, agradeço deste já.

    Abraços.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    FabioPaes
    FabioPaes
    Maximo VIP
    Maximo VIP


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Ler campo sim/não em qualquer posição do formulário contínuo Empty Re: [Resolvido]Ler campo sim/não em qualquer posição do formulário contínuo

    Mensagem  FabioPaes 19/12/2017, 19:39

    Olá silvio... o problema ocorre nessa verificação:
    If Me.AEnvioEnviado = -1 Or Me.AEnvioEnviado = True Then

    Ela não deve existir, ja que ao abrir o recordset (Set rs = CurrentDb.OpenRecordset("SELECT *...) está pegando somente o que estiverem marcado.


    If rs.RecordCount > 0 Then  <=== Essa linha pode ocasionar um erro, caso o recordset esteja Sem registros... Contorne assim:

    If rs.BOF then
    rs.MoveLast: rs.MoveFirst
    Contador = rs.RecordCount


    ...

    Acredito também que apos essa Mudança de Data, deveria desmarcar o Campo Sim/Não. Se for o caso, pode colocar-lo junto da edição da Data...


    .................................................................................
    _____________________________________________________________________
    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!
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Ler campo sim/não em qualquer posição do formulário contínuo Empty Ler campo sim/não em qualquer posição do formulário contínuo

    Mensagem  good guy 19/12/2017, 19:54

    Olá Silvio tudo bem?

    Tente adaptar esta função extraída do meu livro Técnicas Especiais de Access VBA que faz o que você pretende:

    Código:
    Public Function PercorrerRegistros()
    Dim rs As DAO.Recordset
    Dim Reg As Long


    Set rs = CurrentDb.OpenRecordset("Clientes", dbOpenDynaset)       'Use sua tabela que pretende percorrer e fazer as alterações


    Do While Not rs.EOF
    Me.CampoAAlterar.SetFocus     'O focus deve ser programado para incidir no último campo de cada linha. Funciona como uma espécie de gatilho para o looping.


    If Not IsNull(ÚltimoCampodoFormulárioContínuo) Then         'Com a estrutura de controle de fluxo If… Then Else … EndIf, crio uma condição para gerar o posicionamento do cursor para o registro seguinte enquanto durar o laço Do While

    DoCmd.RunCommandacCmdRecordsGoToNext    'Avança para o próximo registro que resolve seu problema

    If IsNull(DataNasc) Then
    Exit Do        'Caso a condição de preenchimento do campo DataNasc não seja satisfeita. Um campo nulo, por exemplo, o laço Do While termina e o cursor para de percorrer os registros.

    End If

    Else    'Caso a condição de preenchimento do campo ÚltimoCampodoFormulárioContínuo não seja satisfeita. Um campo nulo, por exemplo, o laço Do While termina e o cursor pára de percorrer os registros.

    Exit Do
    End If

    Call Atualizar  ‘Função que executa a atualização pretendida
    Loop
    rs.MoveLast

    Me.txtValor = (Forms!Clientes!Código) – 1  ‘txtValor é a caixa de texto que receberá o total de registros atualizados.

    Reg = rs.RecordCount

    Me.txtValor2 = Reg   ‘txtValor2 é a Caixa de texto que receberá o total de registros

    MsgBox "" & Reg & " registros atualizados !!!", vbInformation, "Atualização de Dados"

    End Function

    Vamos estudar o código do botão que evocará a função PercorrerRegistros:


    Private Sub cmdAtualizar_Click()
    On Error Resume Next

    Call PercorrerRegistros

    End Sub


    Última edição por good guy em 19/12/2017, 19:59, editado 2 vez(es)
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5074
    Registrado : 20/04/2011

    [Resolvido]Ler campo sim/não em qualquer posição do formulário contínuo Empty Re: [Resolvido]Ler campo sim/não em qualquer posição do formulário contínuo

    Mensagem  Silvio 19/12/2017, 19:56

    Fábio, boa tarde....

    Seguinte, eu marco um campo sim/não.....e depois eu vou marcando os demais aleatóriamente.
    Se eu marcar o primeiro campo, a rotina funfa, mas se eu marcar o terceiro ou o quarto...a rotina nem chega a rodar.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5074
    Registrado : 20/04/2011

    [Resolvido]Ler campo sim/não em qualquer posição do formulário contínuo Empty Re: [Resolvido]Ler campo sim/não em qualquer posição do formulário contínuo

    Mensagem  Silvio 19/12/2017, 19:58

    Grande Good, quanto tempo meu amigo.....

    Eita rotina...vou dar uma lida nela.

    Ps. vendo a mesma, não sei se aplica a minha duvida...campo sim/não


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Ler campo sim/não em qualquer posição do formulário contínuo Empty Ler campo sim/não em qualquer posição do formulário contínuo

    Mensagem  good guy 19/12/2017, 20:02

    Olá Silvio,

    Me passa o formulário para eu tentar criar a rotina pra você.
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5074
    Registrado : 20/04/2011

    [Resolvido]Ler campo sim/não em qualquer posição do formulário contínuo Empty Re: [Resolvido]Ler campo sim/não em qualquer posição do formulário contínuo

    Mensagem  Silvio 19/12/2017, 20:08

    Para ficar mais fácil o entendimento dos colegas.

    Separei as partes ( entidades ) envolvidas no problema.

    Roteiro.....

    1- o formulário vai abrir. Vá ao primeiro registro no topo do formulário.

    2- coloque uma data qualquer e depois clicar no campo sim/não.

    3- selecione aleatóriamente qualquer campos sim/não.

    4- clicar no ícone..."Alterar Datas".   Note que a rotina vai funfar.

    Agora escolha o qualquer registro..menos o primeiro....e proceda novamente a partir do 2 passo acima.  
    A rotina não vai funfar.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Ler campo sim/não em qualquer posição do formulário contínuo Empty Ler campo sim/não em qualquer posição do formulário contínuo

    Mensagem  good guy 19/12/2017, 20:57

    Tente assim com um campo externo.
    Anexos
    [Resolvido]Ler campo sim/não em qualquer posição do formulário contínuo Attachmentforum.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (173 Kb) Baixado 8 vez(es)
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5074
    Registrado : 20/04/2011

    [Resolvido]Ler campo sim/não em qualquer posição do formulário contínuo Empty Re: [Resolvido]Ler campo sim/não em qualquer posição do formulário contínuo

    Mensagem  Silvio 19/12/2017, 21:12

    Good, não está bom não....ora marca o primeiro registro....ora não....ora some a data na caixa de data externa.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    Silvio
    Silvio
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 5074
    Registrado : 20/04/2011

    [Resolvido]Ler campo sim/não em qualquer posição do formulário contínuo Empty Re: [Resolvido]Ler campo sim/não em qualquer posição do formulário contínuo

    Mensagem  Silvio 19/12/2017, 21:43

    Senhores, encontrei a solução para o problema.

    1- criei uma caixa de texto desacoplada ( externa ) de tudo, ideia do Good Guy.
    2- Evento após atualizar de qualquer campo de data no formulário continuo essa caixa vai receber a data: me.dataoculta= me.DataAeEnviado.

    A rotina, funfa mesmo sendo o décimo quinto registro ou o centésimo.

    Agradeço a todos que me ajudaram.


    .................................................................................
    Caso tenha resolvido a tua duvida, coloque o tópico como resolvido.
    www.maximoaccess.com/t860-resolucao-de-topicos

    "Quase tudo é possível quando se tem determinação e força de vontade. Não desista tão rápido."
    good guy
    good guy
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]Ler campo sim/não em qualquer posição do formulário contínuo Empty Ler campo sim/não em qualquer posição do formulário contínuo

    Mensagem  good guy 20/12/2017, 12:04

    Olá Silvio,

    Me veio esta ideia correndo porque já estava na hora de ir embora do serviço e tive que postar às pressas. Havia ainda uns ajustes a fazer nessa questão. Mas pelo menos fico feliz de você ter podido se sair bem e corrigir o seu próprio código. Parabéns !!!

    Conteúdo patrocinado


    [Resolvido]Ler campo sim/não em qualquer posição do formulário contínuo Empty Re: [Resolvido]Ler campo sim/não em qualquer posição do formulário contínuo

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 2/5/2024, 10:32