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]Loop para abrir vários formulários de acordo com o critério de registros

    Compartilhe

    Fire
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 76
    Registrado : 15/06/2014

    [Resolvido]Loop para abrir vários formulários de acordo com o critério de registros

    Mensagem  Fire em Seg 08 Set 2014, 15:11

    Bom dia pessoal gostaria de ajuda novamente.
    Tenho um formulario paciente que nele tem um subform pedido de exames.
    criei para cada exame um form para digitar ok
    hoje eu uso esse codigo em vba para digitar o exame
    If Me.Exame = "HEMOGRAMA COMPLETO" Then
    DoCmd.OpenForm "DigHemograma", , , "Código=" & Me.Código & ""
    End If
    este campo exame esta no subform então ao clicar em cima ira abrir o form para digitar
    o que eu gostaria seria um botão no formulario que ela abrir logo todos os form do pedido do paciente.

    Dilson
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1602
    Registrado : 11/11/2009

    Re: [Resolvido]Loop para abrir vários formulários de acordo com o critério de registros

    Mensagem  Dilson em Sex 12 Set 2014, 03:35

    Olá,

    E se nesse subformulário tiver muitos tipos diferentes de nomes de exames, não irá poluir a tela de seu programa com tantos forms se abrindo ? Reflita bem para não chatear os usuários desse sistema.

    Tente:

    Dim rs As Recordset
    Dim qRegistros As Long
    Dim qForm As String
    Dim qCodigo As Long
    Dim i As Long
    Set rs = CurrentDb.OpenRecordset("SuaTabela")
    rs.MoveLast
    rs.MoveFirst
    qRegistros = rs.RecordCount
    For i = 1 To qRegistros
    qForm = rs("Exame")
    qCodigo = rs("Codigo")
    If qForm = "HEMOGRAMA COMPLETO" Then
    DoCmd.OpenForm "DigHemograma", , , "Código=" & qCodigo & ""
    ElseIf qForm = "ELETRO" Then
    DoCmd.OpenForm "DigEletro", , , "Código=" & qCodigo & ""
    ElseIf qForm = "ECO" Then
    DoCmd.OpenForm "DigEco", , , "Código=" & qCodigo & ""
    End If
    rs.MoveNext
    Next i
    rs.Close


    .................................................................................
    Atenção:
    => Antes de implementar qualquer dica, faça um backup do seu projeto;
    => Retorne para marcar o Resolvido ou continuar a discussão;
    => Sempre realize pesquisas antes de postar uma pergunta;

    Fire
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 76
    Registrado : 15/06/2014

    Re: [Resolvido]Loop para abrir vários formulários de acordo com o critério de registros

    Mensagem  Fire em Sex 19 Set 2014, 17:58

    Dilson obrigado pela ajuda.
    Ja tinha perdido a esperança de conseguir um codigo vba para resolver este pro.
    Tentei colocar ele na pratica mais não estou conseguindo ele esta puxando codigo de outros pacientes da tbl.
    Não sou um mestre em access e nem em codigo vba (aprendiz).





    Dilson
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1602
    Registrado : 11/11/2009

    Re: [Resolvido]Loop para abrir vários formulários de acordo com o critério de registros

    Mensagem  Dilson em Ter 23 Set 2014, 10:05

    Entendo.
    Você precisará informar o número referencial (Chave primária) do paciente em questão.

    Pode criar uma caixa de texto para informar qual código do paciente quer abrir os forms de consulta correspondente.

    Depois dessa definição altere no código o trecho:

    Set rs = CurrentDb.OpenRecordset("SELECT * FROM SuaTabela WHERE" _
                                 & " SuaChaveEstrangeiraPaciente=" & Me!SuaTextCodigoDoPaciente)


    Se encontrar dificuldade na implementação, pode se desejar, colocar uma amostra da sua base aqui que posso ver o que pode ser feito.


    .................................................................................
    Atenção:
    => Antes de implementar qualquer dica, faça um backup do seu projeto;
    => Retorne para marcar o Resolvido ou continuar a discussão;
    => Sempre realize pesquisas antes de postar uma pergunta;

    Fire
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 76
    Registrado : 15/06/2014

    Re: [Resolvido]Loop para abrir vários formulários de acordo com o critério de registros

    Mensagem  Fire em Ter 23 Set 2014, 14:38

    Bom dia Dilson mais uma vez obrigado pela ajuda.
    Fiz umas modificações nesse codigo que vc me enviou então deu certo agora ele puxa pelo codigo do paciente mais sendo que ele abre todos os form para digitar
    sendo que eu gostaria que ele fosse so dos exames solicitados.
    Estou colocando em anexo uma imagem do form para vc ver. O botão que tem comando114 e que eu estou testando o codigo.
    Hoje eu faço clicando em cima de cada exame solicitado.
    A modificação que fiz no codigo que vc enviou foi essa.
    Dim rs As Recordset
    Dim qRegistros As Long
    Dim qForm As String
    Dim i As Long
    Set rs = CurrentDb.OpenRecordset("TbPedidoEx")
    rs.MoveLast
    rs.MoveFirst
    qRegistros = rs.RecordCount
    For i = 1 To qRegistros
    qForm = rs("Exame")
    If qForm = "HEMOGRAMA COMPLETO" Then
    DoCmd.OpenForm "DigHemograma", , , "Código=" & Código & ""
    End If
    If qForm = "GLICEMIA" Then
    DoCmd.OpenForm "DigGlicose", , , "Código=" & Código & ""
    End If
    If qForm = "SUMARIO DE URINA" Then
    DoCmd.OpenForm "DigSumario", , , "Código=" & Código & ""
    End If
    rs.MoveNext
    Next i
    rs.Close
    Anexos
    bd imagem.docx
    Você não tem permissão para fazer download dos arquivos anexados.
    (166 Kb) Baixado 7 vez(es)

    Dilson
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1602
    Registrado : 11/11/2009

    Re: [Resolvido]Loop para abrir vários formulários de acordo com o critério de registros

    Mensagem  Dilson em Ter 23 Set 2014, 15:18

    O que você deseja é abrir os 11 exames que aparecem relacionado para a paciente MARIA DE FATIMA GOMES ? é isso ?

    A imagem tem pouco dado significativo. O que ainda pude observar é que tens uma numeração de requisição e que deduzo que está relacionando os dados do formulário com o do subformulário. Se eu estiver certo, a chave primária e estrangeira é o n° de requisição e com isso bastaria declarar a condição no sql assim:


    Set rs = CurrentDb.OpenRecordset("SELECT * FROM TbPedidoEx WHERE" _
    & " SuaChaveEstrangeiraRequisição=" & Me!SuaTextCodigoDaRequisção)


    Obs: Me!SuaTextCodigoDaRequisção é igual a textbox Requisição que vejo na imagem que enviou.

    Ajudar resolver sem saber a estrutura de suas tabelas fica bem difícil, por isso analise e tente algo ou me mande um print da relação de tabelas.


    .................................................................................
    Atenção:
    => Antes de implementar qualquer dica, faça um backup do seu projeto;
    => Retorne para marcar o Resolvido ou continuar a discussão;
    => Sempre realize pesquisas antes de postar uma pergunta;

    Fire
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 76
    Registrado : 15/06/2014

    Re: [Resolvido]Loop para abrir vários formulários de acordo com o critério de registros

    Mensagem  Fire em Ter 23 Set 2014, 15:30

    Dilson isso mesmo o numero da requisição corresponde ao subform.
    Vou testar
    Mesmo desde ja obg pela ajuda.

    Fire
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 76
    Registrado : 15/06/2014

    Re: [Resolvido]Loop para abrir vários formulários de acordo com o critério de registros

    Mensagem  Fire em Ter 23 Set 2014, 15:52

    Dilson coloquei o codigo mais dar o seguinte erro (Parametros insuficientes eram esperados 1)

    Fire
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 76
    Registrado : 15/06/2014

    Re: [Resolvido]Loop para abrir vários formulários de acordo com o critério de registros

    Mensagem  Fire em Ter 23 Set 2014, 17:41

    Dilson da uma olha no bd (claro se possivel )
    vc vai no form liberação e colocar algum numero que corresponde na lista
    obg
    Anexos
    LABORATORIO TESTE.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (297 Kb) Baixado 20 vez(es)

    Dilson
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1602
    Registrado : 11/11/2009

    Re: [Resolvido]Loop para abrir vários formulários de acordo com o critério de registros

    Mensagem  Dilson em Qui 25 Set 2014, 10:39

    Ficou bom. As telas se abrem e ficam aninhadas umas por cima da outra. O usuário lançará o resultado, vai salvar, fechar e, já estará a próxima aberta para digitação.

    Para o algoritmo dar certo, precisa renomear o controle Código (que mostra o n° da requisição no formulário), ao qual baseamos o filtro no recordset. Os nomes iguais de Nome do Controle e Fonte do Controle estavam causando confusão no entendimento do VBA (A comunidade MaximoAccess em várias discussões já haviam prevenido o uso de nomes diferentes entre nome e fonte de controles).

    Eu modifique de Código para txtCódigo como pode ver:

    Dim rs As Recordset
    Dim qRegistros As Long
    Dim qForm As String
    Dim qReq As Long
    Dim i As Long
    qReq = Me!txtCódigo
    Set rs = CurrentDb.OpenRecordset _
                      ("SELECT * FROM TbPedidoEx WHERE" _
                                   & " Codigo=" & qReq)
    rs.MoveLast
    rs.MoveFirst
    qRegistros = rs.RecordCount
    For i = 1 To qRegistros
        qForm = rs("Exame")
        If qForm = "HEMOGRAMA COMPLETO" Then
           DoCmd.OpenForm "DigHemograma"
        ElseIf qForm = "GLICEMIA" Then
           DoCmd.OpenForm "DigGlicose"
        ElseIf qForm = "SUMARIO DE URINA" Then
           DoCmd.OpenForm "DigSumario"
        ElseIf qForm = "ACIDO URICO" Then
           DoCmd.OpenForm "DigAcidoU"
        ElseIf qForm = "AMILASE" Then
           DoCmd.OpenForm "DigAmil"
        ElseIf qForm = "BETA HCG" Then
           DoCmd.OpenForm "DigBHCG"
        End If
     rs.MoveNext
    Next i
    rs.Close


    Não esqueça de marcar o Resolvido.


    .................................................................................
    Atenção:
    => Antes de implementar qualquer dica, faça um backup do seu projeto;
    => Retorne para marcar o Resolvido ou continuar a discussão;
    => Sempre realize pesquisas antes de postar uma pergunta;

    Dilson
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1602
    Registrado : 11/11/2009

    Re: [Resolvido]Loop para abrir vários formulários de acordo com o critério de registros

    Mensagem  Dilson em Qui 25 Set 2014, 10:58

    Movido da sala Formulários para Módulos e VBA
    Titulo renomeado de: Puxar dados em um Subformulario para: Loop para abrir vários formulários de acordo com o critério de registros


    .................................................................................
    Atenção:
    => Antes de implementar qualquer dica, faça um backup do seu projeto;
    => Retorne para marcar o Resolvido ou continuar a discussão;
    => Sempre realize pesquisas antes de postar uma pergunta;

    Assis
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 2746
    Registrado : 06/11/2009

    Re: [Resolvido]Loop para abrir vários formulários de acordo com o critério de registros

    Mensagem  Assis em Qui 25 Set 2014, 11:42

    Bom dia

    Fire

    Da maneira que grava a idade dos pacientes na tabela, eles vão ter eternamente a mesma idade.

    Para tirar as duvidas: Adiante a data do seu PC só 1 dia e teste. Eles vão ter a mesma idade....


    .................................................................................
    *** Só sei que nada sei ***

    Fire
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 76
    Registrado : 15/06/2014

    Re: [Resolvido]Loop para abrir vários formulários de acordo com o critério de registros

    Mensagem  Fire em Qui 25 Set 2014, 14:09

    Dilson Bom dia
    Não estou conseguindo dar um erro variavel não definida
    Set rs = CurrentDb.OpenRecordset("SELECT * FROM TbPedidoEx WHERE" & " Codigo=" & qReq)

    Bom dia Assis
    obg pela dica

    Dilson
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1602
    Registrado : 11/11/2009

    Re: [Resolvido]Loop para abrir vários formulários de acordo com o critério de registros

    Mensagem  Dilson em Qui 25 Set 2014, 14:30

    Vai dar mesmo, pois você não colocou como escrevi, veja:

    Set rs = CurrentDb.OpenRecordset _
                      ("SELECT * FROM TbPedidoEx WHERE" _
                                                & " Codigo=" & qReq)


    Se não quiser com a linha quebrada, faça assim:
    Set rs = CurrentDb.OpenRecordset("SELECT * FROM TbPedidoEx WHERE Codigo=" & qReq)


    .................................................................................
    Atenção:
    => Antes de implementar qualquer dica, faça um backup do seu projeto;
    => Retorne para marcar o Resolvido ou continuar a discussão;
    => Sempre realize pesquisas antes de postar uma pergunta;

    Fire
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 76
    Registrado : 15/06/2014

    Re: [Resolvido]Loop para abrir vários formulários de acordo com o critério de registros

    Mensagem  Fire em Qui 25 Set 2014, 14:39

    Dilson vc é o cara!!!! cheers cheers

    Valeu mesmo deu certo

    Dilson
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1602
    Registrado : 11/11/2009

    Re: [Resolvido]Loop para abrir vários formulários de acordo com o critério de registros

    Mensagem  Dilson em Qui 25 Set 2014, 14:47

    Agradecemos por informar que resolveu.
    Volte sempre que precisar.

    Abraço!




    .................................................................................
    Atenção:
    => Antes de implementar qualquer dica, faça um backup do seu projeto;
    => Retorne para marcar o Resolvido ou continuar a discussão;
    => Sempre realize pesquisas antes de postar uma pergunta;

      Data/hora atual: Sex 09 Dez 2016, 07:40