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

    Selecionar nome e preencher formulário

    avatar
    gokusander
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 72
    Registrado : 21/04/2012

    Selecionar nome e preencher formulário Empty Selecionar nome e preencher formulário

    Mensagem  gokusander em 14/8/2020, 15:30

    Olha eu de novo kkkk

    A dúvida é um pouco diferente, já sei como abrir um formulário, pesquisar um nome, clicar 2x e preencher o formulario que desejo.

    Uso basicamente esse código:

    Código:
    Forms![Frm_Matricula]![Aluno].Text = Me.txtListaAluno.Column(1)

    MAs a dúvida é diferente...

    Estou com outro formulário que irá pesquisar essa mesma lista de nome: pesquisa nome, selecionar e preencher o que selecionei. É possível fazer isso com o mesmo formulário já criado (pra pesquisa)? Ou terei que criar uma cópia?

    Obrigado
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1146
    Registrado : 13/12/2016

    Selecionar nome e preencher formulário Empty Re: Selecionar nome e preencher formulário

    Mensagem  Alexandre Fim em 14/8/2020, 16:53

    Olá Rodrigo,

    Vc quer criar um formulário de pesquisa "genérico", certo?

    Sim, é possivel!

    Desenvolvi um sistema em Access com back-end em MySQL, que ficava hospedado no provedor do cliente (Hostgator), utilizando conexão ADO.

    Eu criei da seguinte forma:

    1 - Criei uma tabela no banco de dados onde constam os dados de tabelas e campos para pesquisa, conforme abaixo:

    Selecionar nome e preencher formulário Sys_pe10

    Esses dados são utilizados para montar o combobos "Campo" da pesquisa e também as colunas da listbox, inclusive, exsite uma columa chamada "largura", que define justamente a largura da coluna da listbox

    No cadastro de Produtos, ao clicar na "Lupa" para pesquisar, o sistema abria a tela de pesquisa, onde o combobox e a listbox eram montados baseados na tela em questão:

    Selecionar nome e preencher formulário Pesq_p10

    No Cadastro de Clientes, é o mesmo procedimento:

    Selecionar nome e preencher formulário Pesq_c10


    E no Form_Load() do formulário de pesquisa, chamava a seguinte rotina:

    Código:

    Public Sub MONTA_LISTA()
    On Error GoTo trata_erro


        Call Conect
        x = 0
        strQUERY = "SELECT "

        strSQL = ""
        strSQL = "SELECT nome, tabela, campo, tipo, largura, alinhamento, exibir"
        strSQL = strSQL & " FROM tb_sys_pesq"
        strSQL = strSQL & " WHERE tabela = '" & vgPESQ & "'"
        strSQL = strSQL & " AND exibir = 'S'"
        rspesq.Open strSQL, cnn, adOpenKeyset, adLockReadOnly

        If Not rspesq.EOF Then
            Do While Not rspesq.EOF
                If rspesq.AbsolutePosition = 1 Then
                    cols = rspesq("nome").Value
                    larg = rspesq("largura").Value
                Else
                    cols = cols & ";" & rspesq("nome").Value
                    larg = larg & ";" & rspesq("largura").Value
                End If
                    cboCampo.AddItem "" & rspesq(0) & ";" & rspesq(1) & ";" & rspesq(2) & ";" & rspesq(3) & ""
                    strQUERY = strQUERY & rspesq(2)
                    If x < rspesq.RecordCount - 1 Then
                        strQUERY = strQUERY & ","
                    End If
                x = x + 1
                rspesq.MoveNext
            Loop
        End If

        FechaRST rspesq

        With lstpesq
            .FontName = "MS Sans Serif"
            .FontSize = 8
            .ForeColor = vbBlack
            .ColumnCount = x
            .ColumnHeads = True
            .ColumnWidths = "" & larg & ""
            .RowSource = "" & cols & ""
            .RowSourceType = "Value List"
            .Requery
        End With

        Exit Sub

    trata_erro:
        FechaRST rspesq
        MsgErro (Err.Number)
        Exit Sub

    End Sub



    OBS.: O código e as imagens acima é apenas para te ajudar a elaborar uma rotina para tua necessidade.
    Existem algumas funções e variáveis pertinentes ao projeto que criei, tais como:

    - FechaRST = Função genérica para fechar e limpar recordset da memória
    - vgPESQ = variável global que recebia o valor do formulário aberto, e que servia como parametro para pesquisa no banco de dados.
       Ex.: No botão pesquisar da tela de Cadastro de Clientes, eu atribuia essa variável com valor 'tb_clientes'.
              No cadastro de Produtos, eu atribuia como 'tb_produtos'
    - Conect = função que fazia a conexão com o banco de dados


    O listbox da pesquisa é desacoplado à tabela e montado em tempo de execução.

    Espero não tenha ficado muito complicado.
    Espero ter ajudado.

    boa sorte


    .................................................................................
    - Procure sempre anexar seu projeto para análise do problema/dúvida.
    - Ao copiar/colar um código VBA, procure entender seu funcionamento.
    - Se o problema foi resolvido, não se esqueça de marcar o tópico como RESOLVIDO.
    avatar
    gokusander
    Intermediário
    Intermediário

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 72
    Registrado : 21/04/2012

    Selecionar nome e preencher formulário Empty Re: Selecionar nome e preencher formulário

    Mensagem  gokusander em 14/8/2020, 17:41

    Shocked Shocked Shocked Shocked Shocked Shocked


    Não sei se chamaria pesquisa genérica. MAs tentar explicar mais ou menos:

    Esse é o que uso atualmente. Pesquiso para lançar as matriculas
    Selecionar nome e preencher formulário 111

    Esse é para lançar os documentos entregues por cada aluno (esse é aquele que você me ajudou agora pouco)
    Selecionar nome e preencher formulário 212


    Sobre seu exemplo, eu entendi a lógica... ao inves de ser interno ele faz "busca externa", mas acho que para meu nível e finalidade ficaria mais facil criar outro formulario. Porque esse sistema de gestão é para uso pessoal, criei para facilitar pra mim mesmo.

    E mysql é bd, que seria outro sistema que teria que me aprofundar. Para ter ideia, ainda estou aprendendo formularios, nem cheguei ainda nos relatorios. Então criar algo como seu exemplo, é realmente nível profissional. Que obviamente fica perfeito, fluido e bonito. Mas meu nível é outro kkkkkk

    Então, juntando tudo, meu nivel, finalidade e conhecimento... acho que ficaria mais facil criar outro formulario pelo visto.

    Posso estar errado talvez.. o que me diz?

      Data/hora atual: 22/9/2020, 14:38