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


    Gerar Relatório no Word a partir de duas tabelas

    avatar
    Rinaldo_al
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Anónimo
    Mensagens : 8
    Registrado : 07/12/2009

    Gerar Relatório no Word a partir de duas tabelas Empty Gerar Relatório no Word a partir de duas tabelas

    Mensagem  Rinaldo_al 28/5/2014, 13:42

    Companheiros estou precisando de ajuda, o problema é o seguinte:
    Tenho as seguintes tabelas
    1) TabCadPol  -> refere-se ao cadastro dos funcionários, onde existe os campos: Matricula, Nome, Cargo...(O campo matricula é chave primária, tipo texto);
    2) TabSelDiaRonda – refere-se aos dias em que ocorre plantão. Campos: matricula, dtInicio, dtFim   e outros...
    Estou precisando imprimir num documento do WORD todos as pessoas cadastradas na TabSeldiaRonda, da seguinte forma:
    Matrícula Nome                Cargo        Assinatura
    300.123-1 Fulano de Tal Fiscal        ______________
    300.123-2 Cicrano de Tal Ajudante    ______________
    300.123-3 Beltrano de Tal Agente      ______________

    Notem que o campo matrícula é comum nas tabelas TabSelDiaRonda e TabCadPol, enquanto que os campos Nome e Cargo apenas estão disponíveis na TabCadPol;
    É bom ressaltar que a quantidade de registro na TabSelDiaRonda varia de acordo com o período.
    Eu consegui elaborar o documento no relatório do Access, mas quanto tentei no Word consegui fazer apenas impressão dos dados existentes na TabSelDiaRonda, e não encontrei (devido ao meu pouco conhecimento) coletar TabCadPol os campos Nome e Cargo. Alguém pode me ajudar ????
    avatar
    Rinaldo_al
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Anónimo
    Mensagens : 8
    Registrado : 07/12/2009

    Gerar Relatório no Word a partir de duas tabelas Empty encontrei a resposta, mas ainda preciso de ajuda

    Mensagem  Rinaldo_al 29/5/2014, 19:02

    Companheiros encontrei um código e fiz algumas alterações, e está funcionando. Gostaria de saber se alguém pode me ajudar a colocar um acréscimo no código para que os nomes coletados estejam em ordem alfabética (A-Z), segue abaixo o código para que sejam feitas as adaptações.

    Private Sub BtWordRelatorioRonda_Click()
    #Const DESENV = -1

    On Error GoTo TrataErro

    Dim oApp As Object 'Cria uma variável objeto
    Dim strSQL As String

    '-------------------------------------------------------------------------------------------
    ' Código para criação de array visando coleta dos campos Nome e Cargo da Tabela TABCADPOLICIAIS
    Dim rsRonda As Recordset, rsCad As Recordset
    Dim vNome(0 To 30) As String, vCargo(0 To 30) As String, vMatricula(0 To 30) As String
    Dim i As Integer

    Set rsRonda = CurrentDb.OpenRecordset("TblSelecaoDiaRonda")
     
          Do While Not rsRonda.EOF
           Set rsCad = CurrentDb.OpenRecordset("SELECT * FROM TabCadpoliciais WHERE Matricula  ='" & rsRonda!Matricula & "'")
               
               vMatricula(i) = Format(rsRonda!Matricula, "00\.000-0")
               vNome(i) = rsCad!nome
               vCargo(i) = rsCad!Cargo
                     
            ' faz incremento a variável "i"
               i = i + 1
          rsRonda.MoveNext
       Loop
     
    '----------------------------------------------------------------------------------------------

    ' Inicia o MS Word
    Set oApp = CreateObject("Word.Application") 'Cria e abre o objeto Word
    With oApp

    ' Torna o MS Word oculto
       .Visible = False
       
    ' Abre o documento base
       .Documents.Add Template:=CurrentProject.path & "\Documentos\Escalas\RelatórioRonda.doc", NewTemplate:=False, DocumentType:=0

       
    'Move cada campo para o indicador definido no documento
    .ActiveDocument.Bookmarks("Estado").Select
    .Selection.Text = (CStr(Forms!FrmRondaBlitz!Estado))

    .ActiveDocument.Bookmarks("Diretor").Select
    .Selection.Text = (CStr(Forms!FrmRondaBlitz!Diretor))

    '----------------------------------------------------------------------------------------
    'parte do código destinado ao array contendo Matricula, nome e cargo
             
           .ActiveDocument.Bookmarks("Matricula0").Select
           .Selection.Text = vMatricula(0)
        '-----------
           .ActiveDocument.Bookmarks("Nome0").Select
           .Selection.Text = vNome(0)
        '-----------
           .ActiveDocument.Bookmarks("Cargo0").Select
           .Selection.Text = vCargo(0)
        '-----------
           .ActiveDocument.Bookmarks("Matricula1").Select
           .Selection.Text = vMatricula(1)
        '-----------
           .ActiveDocument.Bookmarks("Nome1").Select
           .Selection.Text = vNome(1)
        '-----------
           .ActiveDocument.Bookmarks("Cargo1").Select
           .Selection.Text = vCargo(1)
        '-----------
           .ActiveDocument.Bookmarks("Matricula2").Select
           .Selection.Text = vMatricula(2)
        '-----------
           .ActiveDocument.Bookmarks("Nome2").Select
           .Selection.Text = vNome(2)
        '-----------
           .ActiveDocument.Bookmarks("Cargo2").Select
           .Selection.Text = vCargo(2)
        '-----------
           .ActiveDocument.Bookmarks("Matricula3").Select
           .Selection.Text = vMatricula(3)
        '-----------
           .ActiveDocument.Bookmarks("Nome3").Select
           .Selection.Text = vNome(3)
        '-----------
           .ActiveDocument.Bookmarks("Cargo3").Select
           .Selection.Text = vCargo(3)
        '-----------
           
    'Salva o arquivo gerado

     .ActiveDocument.SaveAs CurrentProject.path & "\Documentos\Escalas\Realizadas\Relatório Ronda " & Replace(Me.DataRonda, "/", "-") & " " & ".doc"

    MsgBox "Documento salvo com sucesso...", vbInformation

    'fecha recordsets

       rsRonda.Close
       Set rsRonda = Nothing
       
       rsCad.Close
       Set rsCad = Nothing

    'Fecha o documento
    .ActiveDocument.Close
    End With
    'Fecha o Word
    oApp.Quit
    Dim x As String
    x = "C:\JRSisae\Dados\Documentos\Escalas\Realizadas\" & "Relatório Ronda " & Replace(Me.DataRonda, "/", "-") & " " & ".doc"

    'Dim Word As New Word.Application
    Dim MiWord
    Set MiWord = CreateObject("Word.Application")

    With MiWord
    .Documents.Open x
    .Visible = True
       Call ShellExecute(0, vbNullString, x, vbNullString, vbNullString, 1)

    End With
    'Libera a memória
    Set oApp = Nothing
    Saida:
    Exit Sub

    TrataErro:
    'Se um campo do formulário estiver vazio, remove o texto do Indicador e continua
    If Err.Number = 94 Then
    oApp.Selection.Text = ""
    Resume Next
    End If
    MsgBox "Form_FrmRondaBlitz - btWord_Click" & vbCrLf & Err.Description, vbExclamation + vbOKOnly, "Erro: " & CStr(Err.Number)
    #If DESENV Then
    oApp.Quit
    Set oApp = Nothing
    Stop
    Resume
    #End If
    Resume Saida
    End Sub

    Question

      Data/hora atual: 23/11/2024, 17:17