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]Atualizar caixa texto em relatório.

    avatar
    Convidado
    Convidado


    [Resolvido]Atualizar caixa texto em relatório. Empty Atualizar caixa texto em relatório.

    Mensagem  Convidado 25/2/2013, 23:14

    Amigos.. algo que parce simples mas confesso que estou encontrando dificuldades...

    Tenho um relatorio que é carregado com dados de uma tabela temporária, carrego esta tabela apartir de outra no BE, em seguida gero um numero de autenticação do documento e realizo um Update no campo, porem o relatorio não exibe este valor... Tentei fechar e reabrir o relatorio no evento que gera o numero, tentei dar um requery em varios eventos.. mas de nenhum jeito consegui exibir no campo o valor que foi atualizado na tabela.

    Segue o código:

    Private Sub Report_Load()
    DoCmd.Maximize
    DoCmd.ShowToolbar "Ribbon", acToolbarYes
    Call EscondeBotoes(False)
    Call CarregaAdm
    Me.AutenticaCertidao
    End Sub

    Sub CarregaAdm()
    '*******************************************************************************
    'Popula Campos fixos da unidade no Relatório
    '*******************************************************************************
    Parametros_de_Inicializacao "SysApac.par"
    Dim dbLocal As DAO.Database
    Dim ws As DAO.Workspace
    Dim rsAdm As DAO.Recordset
    Dim StrSQLADM As String

    Set ws = DBEngine.Workspaces(0)
    Set dbLocal = ws.OpenDatabase(DirBancoDados & "\SysApac_Be.db", False, False, "MS Access;PWD=senha")

    StrSQLADM = "SELECT * FROM Administração"
    Set rsAdm = dbLocal.OpenRecordset(StrSQLADM)

    '**********************************************************
    'Para o redorsetcrsAdm
    '**********************************************************
    Me.txtUnidade = rsAdm![Nome da Unidade]

    rsAdm.Close
    dbLocal.Close
    Set rsAdm = Nothing
    Set dbLocal = Nothing
    End Sub

    Private Sub Report_Open(Cancel As Integer)
    Call ImportaTabelas
    X = 1
    End Sub

    Sub AutenticaCertidao()
    Dim ws As DAO.Workspace
    Dim db As DAO.Database
    Dim MSG As String
    Dim NumeroAut As String
    NumeroAut = Autentica
    If DCountX("*", "tblAutenticacao", "CpNumAutenticacao = '" & Me.txtAut & "'") = 1 Then
    Exit Sub
    End If
    MSG = MsgBox("Deseja Autenticar esta Certidão?!", vbYesNo, "ATENÇÃO!")

    Select Case MSG
    Case vbYes
    Set ws = DBEngine.Workspaces(0)
    Set db = ws.OpenDatabase(DirBancoDados & "SysApac_be.db", False, False, "MS Access;PWD=senha")
    db.Execute "INSERT INTO tblAutenticacao(CpDataGeracao, CpNumAutenticacao,ObjetoAutenticado, ID_Registro)" _
    & "Values(""" & Date & """,""" & NumeroAut & """, """ & Me.Name & """, """ & Me.txtID & """)"
    db.Execute "UPDATE tblRemissao Set CpAutentica = '" & NumeroAut & "' WHERE ID_Remissao = " & Me.txtID & ""
    CurrentDb.Execute "UPDATE tblRemissaoTMP Set CpAutentica = '" & NumeroAut & "' WHERE ID_Remissao = " & Me.txtID & ""
    Aut = True
    Case vbNo
    End Select
    End Sub



    Grato pela ajuda.
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1314
    Registrado : 21/01/2012

    [Resolvido]Atualizar caixa texto em relatório. Empty Re: [Resolvido]Atualizar caixa texto em relatório.

    Mensagem  Cláudio Más 26/2/2013, 13:40

    Piloto, não analisei detalhadamente o código.
    Até porque acredito que a solução seja atualizar a tabela antes de abrir o relatório.
    Se o relatório será aberto ao clicar em um botão em um formulário, por exemplo, inclua nesse botão o código para atualizar a tabela, e depois abrir o relatório.
    avatar
    Convidado
    Convidado


    [Resolvido]Atualizar caixa texto em relatório. Empty Re: [Resolvido]Atualizar caixa texto em relatório.

    Mensagem  Convidado 26/2/2013, 13:56

    Estas certo Amigo Claudio, no entanto para gerar o numero de autenticação eu necessito ter primeiro o relatorio carregado pois utilizo o Dcount para verificar se existe a autenticação gerada, caso não atualizo a tabela, e é ai que está o problema.

    Não existindo a autenticação, ele gera o código alfanumérico e atualiza a tabela, porém o relatorio já esta carregado e este campo não é exibido...

    Observe abaixo que na instrução com o Dcount necessito ter o relatório carregado para executar a sub corretamente,


    Sub AutenticaCertidao()
    Dim ws As DAO.Workspace
    Dim db As DAO.Database
    Dim MSG As String
    Dim NumeroAut As String
    NumeroAut = Autentica
    If DCountX("*", "tblAutenticacao", "CpNumAutenticacao = '" & Me.txtAut & "'") = 1 Then

    Exit Sub
    End If
    MSG = MsgBox("Deseja Autenticar esta Certidão?!", vbYesNo, "ATENÇÃO!")

    Select Case MSG
    Case vbYes
    Set ws = DBEngine.Workspaces(0)
    Set db = ws.OpenDatabase(DirBancoDados & "SysApac_be.db", False, False, "MS Access;PWD=senha")
    db.Execute "INSERT INTO tblAutenticacao(CpDataGeracao, CpNumAutenticacao,ObjetoAutenticado, ID_Registro)" _
    & "Values(""" & Date & """,""" & NumeroAut & """, """ & Me.Name & """, """ & Me.txtID & """)"
    db.Execute "UPDATE tblRemissao Set CpAutentica = '" & NumeroAut & "' WHERE ID_Remissao = " & Me.txtID & ""
    CurrentDb.Execute "UPDATE tblRemissaoTMP Set CpAutentica = '" & NumeroAut & "' WHERE ID_Remissao = " & Me.txtID & ""
    Aut = True
    Case vbNo
    End Select
    End Sub


    Se tento fechar o relatorio para reabrir em seguida, emite mensagem que esta operação não é valida no processamento do relatorio.
    Cumprimentos.
    Cláudio Más
    Cláudio Más
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 1314
    Registrado : 21/01/2012

    [Resolvido]Atualizar caixa texto em relatório. Empty Re: [Resolvido]Atualizar caixa texto em relatório.

    Mensagem  Cláudio Más 26/2/2013, 14:15

    Me.txtAut se refere a um campo do relatório, certo?
    Que por sua vez, tem uma tabela ou consulta como fonte de registro.
    Creio que poderia percorrer (loop) essa tabela/consulta antes de abrir o relatório, para fazer o update.
    Mais ou menos assim:

    Código:
    Dim rs As Recordset
    Set rs = CurrentDb.OpenRecordset("tabela ou consulta do relatório")
    Do While Not rs.EOF
        If DCountX("*", "tblAutenticacao", "CpNumAutenticacao = '" & rs!txtAut & "'") = 0 Then
            MSG = MsgBox("Deseja Autenticar esta Certidão?!", vbYesNo, "ATENÇÃO!")
            Select Case MSG
                Case vbYes
                    Set ws = DBEngine.Workspaces(0)
                    Set db = ws.OpenDatabase(DirBancoDados & "SysApac_be.db", False, False, "MS Access;PWD=senha")
                    db.Execute "INSERT INTO tblAutenticacao(CpDataGeracao, CpNumAutenticacao,ObjetoAutenticado, ID_Registro)" _
                        & "Values(""" & Date & """,""" & NumeroAut & """, """ & rs!Name & """, """ & rs!txtID & """)"
                    db.Execute "UPDATE tblRemissao Set CpAutentica = '" & NumeroAut & "' WHERE ID_Remissao = " & rs!txtID & ""
                    CurrentDb.Execute "UPDATE tblRemissaoTMP Set CpAutentica = '" & NumeroAut & "' WHERE ID_Remissao = " & rs!txtID & ""
            End Select
        End If
        rs.MoveNext
    Loop
    avatar
    Convidado
    Convidado


    [Resolvido]Atualizar caixa texto em relatório. Empty Re: [Resolvido]Atualizar caixa texto em relatório.

    Mensagem  Convidado 26/2/2013, 14:34

    É uma boa ideia, irei testar.

    Cumprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Atualizar caixa texto em relatório. Empty Re: [Resolvido]Atualizar caixa texto em relatório.

    Mensagem  Convidado 26/2/2013, 16:08

    Com o Dcount não dará certo pois sempre que nao encontrar um registro direcionara para insercao... então teria que ser dois loop's...

    Um para a tblAutenticacao (onde ficam os numeros gerados)
    Outro para a tblRemissao (onde fica gravada copia do numero da tabela acima)

    A logica é a seguinte...
    1 - Gero um numero
    2 - gravo na tblAutenticacao, para servir de historico de numeros gerados
    3 - gravo o mesmo numero na tbl do documento autenticado, dizendo assim que este documento esta autenticado e seu numero pode ser verificado na tblAutenticacao (equivalencia numerica)

    Então seria dois lops... um dentro de outro... Tentei com Rs.FindFirst mas tambem nao daria

    Seria então o primeiro loop na em uma tabela, comparando o numero com todos os registros da segunda tabela (2 loop)
    E assim sucessivamente,

    Estou fazendo algo aqui,. logo mais posto o resultado.

    Cumprimentos.
    avatar
    Convidado
    Convidado


    [Resolvido]Atualizar caixa texto em relatório. Empty Re: [Resolvido]Atualizar caixa texto em relatório.

    Mensagem  Convidado 26/2/2013, 16:31

    De acordo com o que citei acima ficou assim:


    Sub AutenticaCertidao()
    Parametros_de_Inicializacao "SysApac.par"
    Dim ws As DAO.Workspace
    Dim db As DAO.Database
    Dim rs As DAO.Recordset, RsAut As DAO.Recordset
    Dim MSG As String, NumeroAut As String
    Dim X As Long, Y As Long
    NumeroAut = Autentica
    Set ws = DBEngine.Workspaces(0)
    Set db = ws.OpenDatabase(DirBancoDados & "SysApac_be.db", False, False, "MS Access;PWD=senha")
    Set rs = db.OpenRecordset("SELECT * From tblRemissao")
    Set RsAut = db.OpenRecordset("SELECT * From tblAutenticacao")
    RsAut.MoveFirst
    rs.MoveLast: rs.MoveFirst
    Y = rs.RecordCount
    Do While Not RsAut.EOF
    For X = 1 To Y
    If RsAut!CpNumAutenticacao = rs!CpAutentica Then
    'Se foi encontrado o numero encerra a sub
    Exit Sub
    Else
    rs.MoveNext
    End If
    Next X
    RsAut.MoveNext
    rs.MoveFirst
    Loop

    'caso não foram encontrado coincidentes executa inserção
    MSG = MsgBox("Deseja Autenticar esta Certidão?!", vbYesNo, "ATENÇÃO!")

    Select Case MSG
    Case vbYes
    Set ws = DBEngine.Workspaces(0)
    Set db = ws.OpenDatabase(DirBancoDados & "SysApac_be.db", False, False, "MS Access;PWD=senha")
    db.Execute "INSERT INTO tblAutenticacao(CpDataGeracao, CpNumAutenticacao,ObjetoAutenticado, ID_Registro)" _
    & "Values(""" & Date & """,""" & NumeroAut & """, """ & Me.Name & """, """ & Me.txtID & """)"
    db.Execute "UPDATE tblRemissao Set CpAutentica = '" & NumeroAut & "' WHERE ID_Remissao = " & Me.txtID & ""
    CurrentDb.Execute "UPDATE tblRemissaoTMP Set CpAutentica = '" & NumeroAut & "' WHERE ID_Remissao = " & Me.txtID & ""
    Case vbNo
    End Select
    End Sub
    avatar
    Convidado
    Convidado


    [Resolvido]Atualizar caixa texto em relatório. Empty Re: [Resolvido]Atualizar caixa texto em relatório.

    Mensagem  Convidado 26/2/2013, 17:00

    É isso ai Amigo Cláudio a solução apesar de ter mudado um pouco foi graças a sua ideia de utilização do recordset.

    Observe que abro o relatorio filtrado pelo ID_Remissao, assim o utilizando para os devidos Updates.



    Private Sub Report_Open(Cancel As Integer)
    Me.AutenticaCertidao
    Call ImportaTabelas
    X = 1
    End Sub

    Sub AutenticaCertidao()
    Parametros_de_Inicializacao "SysApac.par"
    Dim ws As DAO.Workspace
    Dim db As DAO.Database
    Dim rs As DAO.Recordset, RsAut As DAO.Recordset
    Dim MSG As String, NumeroAut As String
    Dim X As Long, Y As Long

    Set ws = DBEngine.Workspaces(0)
    Set db = ws.OpenDatabase(DirBancoDados & "SysApac_be.db", False, False, "MS Access;PWD=senha")
    Set rs = db.OpenRecordset("SELECT * From tblRemissao")
    Set RsAut = db.OpenRecordset("SELECT * From tblAutenticacao")

    NumeroAut = Autentica

    RsAut.MoveFirst
    rs.MoveLast: rs.MoveFirst
    Y = rs.RecordCount

    Do While Not RsAut.EOF
    For X = 1 To Y
    If RsAut!CpNumAutenticacao = rs!CpAutentica Then
    Exit Sub
    Else
    rs.MoveNext
    End If
    Next X
    RsAut.MoveNext
    rs.MoveFirst
    Loop

    'caso não foram encontrado coincidentes executa inserção
    MSG = MsgBox("Deseja Autenticar esta Certidão?!", vbYesNo, "ATENÇÃO!")

    Select Case MSG
    Case vbYes
    Set ws = DBEngine.Workspaces(0)
    Set db = ws.OpenDatabase(DirBancoDados & "SysApac_be.db", False, False, "MS Access;PWD=senha")
    db.Execute "INSERT INTO tblAutenticacao(CpDataGeracao, CpNumAutenticacao,ObjetoAutenticado, ID_Registro)" _
    & "Values(""" & Date & """,""" & NumeroAut & """, """ & Me.Name & """, """ & Forms!FrmCadRemissao!ID_Rem & """)"
    db.Execute "UPDATE tblRemissao Set CpAutentica = '" & NumeroAut & "' WHERE ID_Remissao = " & Forms!FrmCadRemissao!ID_Rem & ""
    CurrentDb.Execute "UPDATE tblRemissaoTMP Set CpAutentica = '" & NumeroAut & "' WHERE ID_Remissao = " & Forms!FrmCadRemissao!ID_Rem & ""
    Case vbNo
    End Select
    End Sub


    Obrigado
    avatar
    Convidado
    Convidado


    [Resolvido]Atualizar caixa texto em relatório. Empty Re: [Resolvido]Atualizar caixa texto em relatório.

    Mensagem  Convidado 26/2/2013, 17:01

    Ops... Resolvido cheers cheers cheers

    Conteúdo patrocinado


    [Resolvido]Atualizar caixa texto em relatório. Empty Re: [Resolvido]Atualizar caixa texto em relatório.

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 06:07