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


    [Resolvido]Fechar Recordset

    avatar
    Convidad
    Convidado


    [Resolvido]Fechar Recordset Empty Fechar Recordset

    Mensagem  Convidad 5/12/2011, 20:15

    Olá!
    Estou testando um código DAO.Recordset (segundo ouvi é mais rápido que ADO), mas ainda não domino a sintaxe.
    Apliquei este que transcrevo abaixo, funciona perfeito, mas creio que não está fechando o Recorset.
    Alguém pode dar uma olhada?

    Private Sub FornNF_NotInList(NewData As String, Response As Integer)
    On Error GoTo Trato
    Dim blnOk As Boolean
    Dim strMessage As String
    Dim dbsComind As Database
    Dim rstFornec As DAO.Recordset

    strMessage = "Deseja adicionar '" & NewData & "' ao cadastro de Fornecedores?"
    If Confirmar(strMessage) Then
    If FormIsOpen("for_Fornec") Then
    DoCmd.Close acForm, "for_Fornec"
    End If
    Set dbsComind = CurrentDb
    Set rstFornec = dbsComind.OpenRecordset("tab_Fornec")
    rstFornec.AddNew
    rstFornec!RazSocForn = NewData
    rstFornec!AtivForn = True
    rstFornec!DatCadForn = Date
    rstFornec.Update
    Response = acDataErrAdded
    Else
    Response = acDataErrContinue
    FornNF.Undo
    ParkNF.SetFocus
    blnOk = Confirmar("Deseja abrir o cadastro de Fornecedores e cadastrar agora?")
    If Not blnOk Then
    Exit Sub
    Else
    If FormIsOpen("for_Fornec") Then
    blnOk = Confirmar("O formulário já está aberto" & vbCrLf & _
    "Deseja alternar para o cadastro de Fornecedores?")
    If Not blnOk Then
    Exit Sub
    Else
    Forms!for_Fornec.SetFocus
    DoCmd.GoToRecord , "", acNewRec
    End If
    Else
    DoCmd.OpenForm "for_Fornec", acNormal, "", "", , acNormal
    DoCmd.GoToRecord , "", acNewRec
    End If
    End If
    End If
    Exit Sub
    Trato:
    MsgBox Err.Description
    End Sub

    Obrigado!
    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]Fechar Recordset Empty Re: [Resolvido]Fechar Recordset

    Mensagem  criquio 5/12/2011, 21:20

    Olá! Olhando assim de relance, me parece que faltou colocar o Dao no Database tambem e faltou fechar e "destruir" o Recordset e o Database:

    Dim dbsComind As DAO.Database
    Dim rstFornec As DAO.Recordset

    ...


    rstFornec.Close ' Fecha a tabela
    Set rstFornec = Nothing ' Limpa a tabela da memória
    dbsComind.Close ' Fecha o Database
    Set dbsComind = Nothing
    ' Limpa o Database da memória


    .................................................................................
    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.

    avatar
    Convidad
    Convidado


    [Resolvido]Fechar Recordset Empty Re: [Resolvido]Fechar Recordset

    Mensagem  Convidad 5/12/2011, 21:45

    É justamente o que me pareceu faltar...

    Este código de "destruição" eu encaixo depois de alimentar a tabela?

    ...
    rstFornec.Update ' É Aqui?
    rstFornec.Close ' Fecha a tabela
    Set rstFornec = Nothing ' Limpa a tabela da memória
    dbsComind.Close ' Fecha o Database
    Set dbsComind = Nothing ' Limpa o Database da memória

    ou no final da Sub?
    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]Fechar Recordset Empty Re: [Resolvido]Fechar Recordset

    Mensagem  criquio 5/12/2011, 22:28

    A finalização deve ocorrer após todas as ações referentes ao recordset tiverem sido encerradas. Por exemplo, se tem alguma ação que deve ocorrer em virtude do andamento do recordset, a finalização deve ocorrer após as instruções dessa ação, pois caso ocorra algum problema que impeça a ação de ser executada, não aparece nenhuma mensagem informando que ela foi executada por exemplo.


    .................................................................................
    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.

    avatar
    Convidad
    Convidado


    [Resolvido]Fechar Recordset Empty Re: [Resolvido]Fechar Recordset

    Mensagem  Convidad 5/12/2011, 22:40

    Entendi.
    Obrigado, Criquio!

    Conteúdo patrocinado


    [Resolvido]Fechar Recordset Empty Re: [Resolvido]Fechar Recordset

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 8/11/2024, 02:58