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

    Módulo para uso geral

    avatar
    henrique73
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 24
    Registrado : 29/05/2013

    Módulo  para uso geral Empty Módulo para uso geral

    Mensagem  henrique73 27/4/2021, 23:51

    Tenho este módulo abaixo e para cada formulário preciso criar um novo, entretanto o formulário alvo é o mesmo e os dados de pesquisa também, então queria subsituir o nome do formulário de pesquisa (neste caso do exemplo "Consulta pendentes dias" para uma pesquisa do formulário corrente/ativo.  dessa forma, acredito que um único módulo, vai atender todos os formulários de consulta.

    Public Function abrirdias(idx As Byte)
    'On Error Resume Next

    If idx = 1 Then
    strSQL = "SELECT  * FROM sinistro WHERE ramo=[Forms]![Pesquisa chaves]![ramo] " & _
             "AND sinistro=[Forms]![Pesquisa chaves]![sinistro] " & _
             "AND ano=[Forms]![Pesquisa chaves]![ano];"
     End If

     If idx = 2 Then
    strSQL = "SELECT  * FROM sinistro WHERE ramo=746 " & _
             "AND sinistro=[Forms]!]Consulta pendentes dias]![sinistro] " & _
             "AND ano=[Forms]!]Consulta pendentes dias]![ano];"
     End If
             
    [Form_Chaves form].RecordSource = strSQL
    [Form_Chaves form].Requery

    End Function

    Obrigado
    Cesar
    Marcelo David
    Marcelo David
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3324
    Registrado : 21/04/2011

    Módulo  para uso geral Empty Re: Módulo para uso geral

    Mensagem  Marcelo David 28/4/2021, 12:01

    Bom dia, poderia declarar uma variável do tipo Form, e quando chamar a função passe o formulário atual.
    Ficaria mais ou menos assim sua função:

    Considerando que os formulários Pesquisa chaves e Consulta pendentes dias são fixos:

    Public Function abrirdias(frm As Form,idx As Byte)
    'On Error Resume Next

    If idx = 1 Then
    strSQL = "SELECT  * FROM sinistro WHERE ramo=[Forms]![Pesquisa chaves]![ramo] " & _
            "AND sinistro=[Forms]![Pesquisa chaves]![sinistro] " & _
            "AND ano=[Forms]![Pesquisa chaves]![ano];"
    End If

    If idx = 2 Then
    strSQL = "SELECT  * FROM sinistro WHERE ramo=746 " & _
            "AND sinistro=[Forms]![Consulta pendentes dias]![sinistro] " & _
            "AND ano=[Forms]![Consulta pendentes dias]![ano];"
    End If
           
    frm.RecordSource = strSQL
    frm.Requery

    End Function


    .................................................................................
    Marcelo David | Módulo  para uso geral LinkedIn_Icon.jpg.original LinkedIn
    https://www.freetool.dev

    henrique73 gosta desta mensagem

    Noobezinho
    Noobezinho
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4121
    Registrado : 29/06/2012

    Módulo  para uso geral Empty Re: Módulo para uso geral

    Mensagem  Noobezinho 28/4/2021, 13:16

    Olá amigos!

    Dando o meu pitaco

    Mais uma opção.

    Detalhe: Como pode-se ver, para testar tem que estar com o formulário na tela (ativo), se estiver na tela do VBA, vai dar erro.
    Digitei direto esse código, não tenho como testa-lo.

    Código:

    Public Function abrirdias()

      Screen.ActiveForm.RecordSource = "SELECT  * FROM sinistro WHERE ramo= " & Screen.ActiveForm!ramo & "" & _
                                     "AND sinistro=" & Screen.ActiveForm!sinistro & "" & _
                                     "AND ano=" & Screen.ActiveForm!ano

      Screen.ActiveForm.Requery

    End Function

    { }'s

    Balem


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.
    avatar
    henrique73
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 24
    Registrado : 29/05/2013

    Módulo  para uso geral Empty Re: Módulo para uso geral

    Mensagem  henrique73 28/4/2021, 15:24

    Esse módulo que postei funciona perfeitamente!!!!!

    em verde é fixo nunca muda.  em vermelho é o nome do formulário que quero deixar genérico, tenho ao menos 15 formulários com nomes e finalizades diferentes, e queria apenas um códido no "if idx = 2 then"

    If idx = 1 Then
    strSQL = "SELECT  * FROM sinistro WHERE ramo=[Forms]![Pesquisa chaves]![ramo] " & _
            "AND sinistro=[Forms]![Pesquisa chaves]![sinistro] " & _
            "AND ano=[Forms]![Pesquisa chaves]![ano];"
    End If


    """ ele pega os dados do ramo sinis e ano do formulário citado " consulta pendente dias " e abre o pesquisa chaves com esses dados, o pesquisa chaves e sempre o destino, o que muda são as origens os formulários  das diversas consultas.  preciso que ele pesquise no formulário corrente o sinistro e ano.

    If idx = 2 Then
    strSQL = "SELECT  * FROM sinistro WHERE ramo=746 " & _
            "AND sinistro=[Forms]!]Consulta pendentes dias]![sinistro] " & _
            "AND ano=[Forms]!]Consulta pendentes dias]![ano];"
    End If
           
    [Form_Chaves form].RecordSource = strSQL
    [Form_Chaves form].Requery

    End Function

    Tentei misturar os códigos aqui, mas deu pau. de qualquer forma obrigado pela ajuda de ambos, estou funçando tentando resolver, mas vejam se consegui ser claro na necessidade.
    DamascenoJr.
    DamascenoJr.
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 2816
    Registrado : 22/11/2016

    Módulo  para uso geral Empty Re: Módulo para uso geral

    Mensagem  DamascenoJr. 30/4/2021, 10:13

    Tente assim (mas acho que ainda não resolverá)
    If idx = 2 Then
    strSQL = "SELECT  * FROM sinistro WHERE ramo=746 " & _
           "AND sinistro=[Forms]!" & Screen.ActiveForm.Name & "![sinistro] " & _
           "AND ano=[Forms]!" & Screen.ActiveForm.Name & "![ano];"
    End If


    Não resolvendo, sugiro anexar um pequeno exemplo para entendermos a rotina de abertura dos formulários e assim sabermos qual formulário realmente estará ativo na tela e em qual deve ser buscado as informações de filtro.


    .................................................................................
    Ajude-se a ser ajudado, anexe seu projeto.
    Sempre tente entender o código,
    não somente copie e cole.
    Positive as mensagens que achar útil clicando no '+' no canto superior direito delas.

    henrique73 gosta desta mensagem

    Noobezinho
    Noobezinho
    Moderador
    Moderador

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 4121
    Registrado : 29/06/2012

    Módulo  para uso geral Empty Re: Módulo para uso geral

    Mensagem  Noobezinho 30/4/2021, 11:01

    Amigos

    Estamos conjecturando, não adianta tentar ajudar sem a parte

    do BD em questão.

    Todos os algoritmos apresentados nesse tópico são  funcionais.

    O que me aparece é que o autor do tópico não está sabendo como

    usá-los.

    Aguardemos que ele poste parte desse BD>

    Balem


    .................................................................................
    A pergunta que não quer calar:
    Por quê quando alguém vem pedir ajuda e conforme o caso pedimos
    para enviar parte do projeto, não temos mais continuidade do tópico?  
    Crê que temos bolas de cristal ou está com medo que "roubemos"  a
    idéia/projeto dele?  Twisted Evil
    Se é tão bom assim...


    Ajude a ser ajudado:
    Seja objetivo na dúvida, dê os detalhes do que precisa, sem rodeios.
    Quando anexar teu projeto, diga onde está o problema, ganhamos mais tempo
    sem precisar procurar o mesmo.

    henrique73 gosta desta mensagem

    avatar
    alecmuller
    Novato
    Novato

    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 17
    Registrado : 03/12/2019

    Módulo  para uso geral Empty Re: Módulo para uso geral

    Mensagem  alecmuller 13/5/2021, 12:45

    As opções que já foram apresentadas com certeza são mais eficientes e econômicas (em relação a linhas de código e objetos em form) da que te apresento agora, mas lá vai..

    Tenho um form que pode ser aberto por 5 ou 6 outros forms diferentes, e ao fechar eu preciso que seja executada uma determinada rotina para cada um deles.
    Como eu resolvi isso:
    No form de origem (através do qual eu irei abrir o form final), eu coloquei no botão de abrir o outro form com o comando de, ao abrir este, já inserir num campo desacoplado o valor 1. Ao fechar o form final, se estiver como 1 neste campo, ele vai fazer determinada rotina.
    Logo, se o form de origem for o 2, ele vai colocar essa informação no form final, que vai rodar a rotina necessária para este caso. E assim por diante.

    Se a solução que já foi passada pelos demais senhores não funcionar, pode tentar fazer em maneira semelhante como eu fiz.

    Basta colocar no form de destino uma caixa de texto que receberá o valor (não precisa usar nenhum campo na tabela, esse valor não precisa ser armazenado no banco) e adaptar seu código para seguir os caminhos diferentes que sejam necessários.

    Se não tiver ficado claro ou não tenha funcionado, avise que ajudo como puder!

      Data/hora atual: 16/6/2021, 15:48