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


2 participantes

    [Resolvido]Modulo de Gerenciamento de RecordSet

    RneoX
    RneoX
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 246
    Registrado : 26/07/2011

    [Resolvido]Modulo de Gerenciamento de RecordSet Empty Modulo de Gerenciamento de RecordSet

    Mensagem  RneoX 15/1/2013, 12:10

    Bom dia Mestres! desculpe minha ausência no fórum estava de férias mas já retornei a ativa!
    meus companheiros quem puder me dar ou já tem uma idéia sobre a luz por favor me ajudem!

    Tenho em mente gerenciar as recordsets por um módulo onde ele reconhece todos os campos do formulário e set automáticamente o rs!nomecampo como no exemplo abaixo!

    Código:
    Option Compare Database
    Option Explicit
    Private db As DAO.Database
    Private rs As DAO.Recordset

    Public Function caminho() As String
        caminho = Application.CurrentProject.Path & "\teste.accdb"
    End Function

    Public Function fecha()
    On Error Resume Next
        rs.Close: Set rs = Nothing
        db.Close: Set db = Nothing
    End Function

    Public Function abre(SQL As String, frm As Form)
    On Error Resume Next
        Dim ctl As Variant
        Set db = OpenDatabase(caminho, False, False)
        Set rs = db.OpenRecordset(SQL)
        Dim campo As Variant
       
        'Pega todos os controles
        For Each ctl In frm.Controls
            Select Case ctl.ControlType
                Case acTextBox, acComboBox, acListBox, acOptionGroup, acCheckBox
                'Execução
                    campo = frm.ctl.Name = rs!ctl.Name
                    frm.ctl.Name = rs!ctl.Name
                'Fim de Execução
            End Select
        'Próximo controle
        Next ctl

    End Function

    Só que o access não reconhece o comando claro por que não usei alguns commandos para ler o record set como este aqui:

    Código:
    With rs
    While Not .EOF
    'Executar
    .MoveNext
    Loop
    End With

    O que estou tentando fazer e já tive alguma luz mas não sei como chegar lá é que cada vez que o for each achar o campo ele registrar em uma coleção e quando pegar todos os campos, executar algo como assim:

    Supondo que achou 4 campos.
    Código:
    !ctlname(1) 'Código
    !ctlname(2) 'Nome
    !ctlname(3) 'Sobrenome
    !ctlname(4) 'Idade

    Como é que eu faço para gerenciar essas records set no formulário?

    Tenho grandes idéias mas não sei como chegar lá... Sad
    Já bati a cabeça para todos os lados, só não sei pq ainda não saiu nada que funcione...


    .................................................................................
    Conhece meus projetos que ajudam os usuários a entender o funcionamento de várias funções encontradas aqui no fórum? também pode usa-lo para seus negócios ou para uso pessoal, não conhece? então visite aqui e veja como está bacana: Projeto Casco do Máximo Access v3.0 (Pré-Release 4.0) 
    Ser livre é ter liberdade para expressar suas idéias,
    Ser diferente é ser especial e o reverso da igualdade,
    Ser criativo é ser poderoso,
    Ter conhecimentos e não dividir-los é ser egoísta e orgulhoso,
    Ensinar é um prazer que todos devem ter por seus alunos, pois é dele que vem nossos troféus.
    criquio
    criquio
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 11229
    Registrado : 30/12/2009

    [Resolvido]Modulo de Gerenciamento de RecordSet Empty Re: [Resolvido]Modulo de Gerenciamento de RecordSet

    Mensagem  criquio 15/1/2013, 12:43

    Você quer elaborar uma função que verifique todos os controles de um formulário e os anexe automaticamente a campos de uma tabela, é isso mesmo? Se for isso, acredito que uma das formas mais eficientes seria nomear formulários e tabelas de forma semelhante e os campos tambem. Exemplo:

    tblClientes frmClientes
    Nome txtNome
    Sobrenome txtSobrenome
    DataNascimento txtDataNascimento

    Dessa forma, com um Loop você percorre os campos do formulário e anexa aos da tabela sem o "txt" e tambem pega o nome do formulário mudando o "frm" para "tbl"


    .................................................................................
    Meu novo site: www.vcssistemas.com.br

    Clique aqui e veja um vídeo que explica como fazer pesquisas no forum.


    DICA: Quando precisar inserir um exemplo do seu aplicativo, siga os procedimentos abaixo:
    1 - faça uma cópia do aplicativo
    2 - retire tudo que não for necessário à solução do problema, exceto o que o aplicativo precisar para funcionar
    3 - use o Compactar/Reparar
    4 - compacte o aplicativo em zip ou rar (zip para postagem como anexo na mensagem)


    Agradeça a quem lhe ajudou, clicando no joinha de uma das mensagens do usuário.
    Positive as mensagens que achar útil, no canto superior direito delas.

    RneoX
    RneoX
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 246
    Registrado : 26/07/2011

    [Resolvido]Modulo de Gerenciamento de RecordSet Empty Re: [Resolvido]Modulo de Gerenciamento de RecordSet

    Mensagem  RneoX 15/1/2013, 13:01

    Bom dia Criquio!
    Obrigado por dar uma mão a este problemão que arranjei...

    então sobre isto eu já fiz, e está exatamente como o da tabela, agora não sei se isto não funciona...

    na tabela e no formulári estão exatamente assim:
    Tabela | Formtxt| FormSource
    Código | Código | Código
    cmp1 " "
    cmp2 " "
    cmp3 " "
    cmp4 " "
    cmp5 " "

    todos estes campos estão exatamente como o da tabela, mas como é que o recordset seta no formulário? isto não está a funcionar... vou anexar para que você entenda melhor a minha idéia.

    (obs, acabei de fazer um loop infinito sem querer e o banco de dados até travou, não sei mais o que fazer Sad )
    Anexos
    [Resolvido]Modulo de Gerenciamento de RecordSet AttachmentDesktop.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (177 Kb) Baixado 26 vez(es)


    .................................................................................
    Conhece meus projetos que ajudam os usuários a entender o funcionamento de várias funções encontradas aqui no fórum? também pode usa-lo para seus negócios ou para uso pessoal, não conhece? então visite aqui e veja como está bacana: Projeto Casco do Máximo Access v3.0 (Pré-Release 4.0) 
    Ser livre é ter liberdade para expressar suas idéias,
    Ser diferente é ser especial e o reverso da igualdade,
    Ser criativo é ser poderoso,
    Ter conhecimentos e não dividir-los é ser egoísta e orgulhoso,
    Ensinar é um prazer que todos devem ter por seus alunos, pois é dele que vem nossos troféus.
    RneoX
    RneoX
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 246
    Registrado : 26/07/2011

    [Resolvido]Modulo de Gerenciamento de RecordSet Empty Re: [Resolvido]Modulo de Gerenciamento de RecordSet

    Mensagem  RneoX 15/1/2013, 13:40

    Olha consegui resolver com isto, será que é o correto a fazer? ou tem uma perca de desempenho nisto?

    Olhe não sei por que razão também, sei que não há necessidade de usar o Do While Not .EOF mas pode ter certeza que usando ele o desempenho foi meramente percepitível, algo de microsegundos, mas sendo em questão de desempenho para grandes quantidade de registros, é uma boa questão a se pensar, os números do registros abaixo também aparecem instantaneamente já sem o Do while ele demora a aparecer questão de 400ms mais tarde...

    veja os códigos ou anexo que postei:

    Módulo:
    Código:
    Option Compare Database
    Option Explicit
    Private db As DAO.Database
    Private rs As DAO.Recordset

    Public Function caminho() As String
        caminho = Application.CurrentProject.Path & "\teste.accdb"
    End Function

    Public Function fecha()
    On Error Resume Next
        rs.Close: Set rs = Nothing
        db.Close: Set db = Nothing
    End Function

    Public Function abre(SQL As String, frm As Form)
    On Error Resume Next
        Dim ctl As Variant
        Set db = OpenDatabase(caminho, False, False)
        Set rs = db.OpenRecordset(SQL)
            With rs
                Do While Not .EOF
                'Do whatever here
                .MoveNext
                Loop
            End With

    Set frm.Recordset = rs
    End Function

    Formulário:
    Código:
    Option Compare Database
    Option Explicit
    Dim SQL As New SQLX
    Private rs As DAO.Recordset
    Private db As DAO.Database
    Private Sub form_load()
    Call abre("SELECT * FROM tblSQL", Me)
    End Sub

    Private Sub Form_Unload(cancel As Integer)
    Call fecha
    End Sub
    Anexos
    [Resolvido]Modulo de Gerenciamento de RecordSet AttachmentDesktop.zip
    Você não tem permissão para fazer download dos arquivos anexados.
    (176 Kb) Baixado 31 vez(es)


    .................................................................................
    Conhece meus projetos que ajudam os usuários a entender o funcionamento de várias funções encontradas aqui no fórum? também pode usa-lo para seus negócios ou para uso pessoal, não conhece? então visite aqui e veja como está bacana: Projeto Casco do Máximo Access v3.0 (Pré-Release 4.0) 
    Ser livre é ter liberdade para expressar suas idéias,
    Ser diferente é ser especial e o reverso da igualdade,
    Ser criativo é ser poderoso,
    Ter conhecimentos e não dividir-los é ser egoísta e orgulhoso,
    Ensinar é um prazer que todos devem ter por seus alunos, pois é dele que vem nossos troféus.
    RneoX
    RneoX
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 246
    Registrado : 26/07/2011

    [Resolvido]Modulo de Gerenciamento de RecordSet Empty Re: [Resolvido]Modulo de Gerenciamento de RecordSet

    Mensagem  RneoX 22/2/2013, 12:13

    Resolvido mas não finalizado, como mudei a estrutura vou abandonar está. Fiz a abertura de um novo tópico já com as soluções e dúvidas diferênte!


    .................................................................................
    Conhece meus projetos que ajudam os usuários a entender o funcionamento de várias funções encontradas aqui no fórum? também pode usa-lo para seus negócios ou para uso pessoal, não conhece? então visite aqui e veja como está bacana: Projeto Casco do Máximo Access v3.0 (Pré-Release 4.0) 
    Ser livre é ter liberdade para expressar suas idéias,
    Ser diferente é ser especial e o reverso da igualdade,
    Ser criativo é ser poderoso,
    Ter conhecimentos e não dividir-los é ser egoísta e orgulhoso,
    Ensinar é um prazer que todos devem ter por seus alunos, pois é dele que vem nossos troféus.

    Conteúdo patrocinado


    [Resolvido]Modulo de Gerenciamento de RecordSet Empty Re: [Resolvido]Modulo de Gerenciamento de RecordSet

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 21:15