MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    copiar automaticamente arquivo pdf de pasta na raiz C:\ para tabela access

    Compartilhe

    ademilsonsilverio
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 29/11/2016

    copiar automaticamente arquivo pdf de pasta na raiz C: para tabela access

    Mensagem  ademilsonsilverio em 5/4/2017, 18:04

    Caros Mestres, baixei um ex. do mestre HarrY  mas o bd não copia na tabela PDFfinal os pdf's baixados na pasta C:\CoordAux\Visualizador_PDF\Relatórios.
    sou somente um curioso e já revolvi os repositorios mas não estou conseguindo.
    o BD é visualizador_PDF.accbd
    desde já obrigado pela ajuda
    segue código abaixo:

    Option Compare Database
    Option Explicit

    Dim list() As String 'Variável tipo array a ser dimensionada.
    Dim entries
    Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyEscape Then
    If MsgBox("Sair do Painel da Documentação ? ", vbYesNo + vbQuestion, "Aviso") = vbYes Then

    KeyCode = 0

    DoCmd.Quit
    Else
    Rem DoCmd.CancelEvent
    Exit Sub
    End If
    End If
    If (Shift = acCtrlMask And KeyCode = vbKeyP) Then
    MsgBox "Não é Possível Imprimir Formulários ?", vbExclamation, "Aviso"
    KeyCode = 0
    End If
    End Sub

    Private Sub Form_Open(Cancel As Integer)
    chkMostraSys = False 'desativa as checkboxes
    chkMostraQryTemp = False
    With cboObjetos
    .SetFocus
    .Text = "Tabelas" 'inicia com tabelas
    .SelStart = 0
    .SelLength = Len(.Text)
    End With
    End Sub

    Function PreencheLista(fld As Control, ID, Row, Col, Code)
    ' Código adaptado por JR - [Você precisa estar registrado e conectado para ver este link.]
    ' Brasília - DF, 1999.

    ' Elaborado a partir do artigo Q124344:
    ' How to Fill a List Box with Database Object Names
    ' da KnowLedge Base da Microsoft

    ' Função definida pelo usuário para preencher
    ' uma combo box ou list box. Esse tipo de função possui uma estrutura
    ' padrão, descrita no Help do Access.

    On Error GoTo ErrorHandler

    Dim ReturnVal
    Dim X As String

    If IsNull(Me!cboObjetos) Then
    X = "Tabelas"
    Else
    X = Me!cboObjetos
    End If

    ReturnVal = Null
    Select Case Code
    Case acLBInitialize ' Inicializa.
    entries = 0
    entries = GetNames(X, list()) 'Preenche a matriz list().
    ReturnVal = entries
    Case acLBOpen ' Abre.
    ReturnVal = Timer ' ID único para o controle.
    Case acLBGetRowCount ' Obtém nº total de linhas.
    ReturnVal = entries
    Case acLBGetColumnCount ' Obtém nº total de colunas
    ReturnVal = 1
    Case acLBGetColumnWidth ' Obtém a largura das colunas.
    ReturnVal = -1 ' -1 significa largura automática.
    Case acLBGetValue ' Obtém os dados para a listbox.
    ReturnVal = list(Row)
    Case acLBEnd ' Fim.
    ReDim list(0) ' Redimensiona a variável array
    entries = 0
    End Select
    PreencheLista = ReturnVal ' Preenche a lista

    ErrorHandler:
    Resume Next

    End Function

    Function GetNames(objtype As String, names() As String)
    Dim cnt As DAO.Container, db As DAO.Database, i As Integer, Arlen
    Dim tdf As DAO.TableDef, qry As DAO.QueryDef

    Set db = DBEngine(0)(0)

    Arlen = 0 'Zera o contador de objetos.

    ' Traduz os nomes em português dos objetos
    ' exibidos na combo box para o VBA.
    ' Isso será necessário quando referenciarmos um container.
    Select Case objtype
    Case "Formulários"
    objtype = "Forms"
    Case "Relatórios"
    objtype = "Reports"
    Case "Módulos"
    objtype = "Modules"
    Case "Macros"
    objtype = "Scripts" 'Macros são chamadas de Scripts.
    End Select

    Select Case objtype
    Case "Tabelas"
    If db.TableDefs.Count <> 0 Then
    Arlen = db.TableDefs.Count
    ReDim list(0 To Arlen - 1)
    i = 0
    For Each tdf In db.TableDefs
    If Not IsTemp(tdf) Then
    If isSystem(tdf) Imp ShowSysTdf() Then
    names(i) = tdf.Name
    i = i + 1
    End If
    End If
    Next tdf
    End If

    Case "Consultas"
    If db.QueryDefs.Count <> 0 Then
    Arlen = db.QueryDefs.Count
    ReDim list(0 To Arlen - 1)
    i = 0
    For Each qry In db.QueryDefs
    If IsTemp(qry) Imp ShowQryTmp() Then
    names(i) = qry.Name
    i = i + 1
    End If
    Next qry
    End If

    Case Else
    Set cnt = db.Containers(objtype)
    If cnt.Documents.Count <> 0 Then
    Arlen = cnt.Documents.Count
    ReDim list(0 To cnt.Documents.Count - 1)
    i = 0
    For i = 0 To (Arlen) - 1 ' Preenche o array Names()
    ' com os nomes dos objetos.
    names(i) = cnt.Documents(i).Name

    Next i
    End If
    End Select
    If i <> 0 Then
    'Redimensiona a matriz list() para um nº de itens
    'menor, no caso de não exibirmos os objetos ocultos
    'ou temporários, preservando os dados da matriz original.
    ReDim Preserve list(0 To i)
    GetNames = i ' Retorna o comprimento do array para a
    ' função FillNameList().
    Else
    GetNames = Arlen
    End If
    End Function

    Private Sub cboObjetos_AfterUpdate()
    'Atualiza a Lista após escolher um item na combo box.
    lstObjects.Requery
    End Sub

    Private Sub chkMostraSys_AfterUpdate()
    'Atualiza a Lista após selecionar a caixa de verificação chkMostraSys.
    lstObjects.Requery
    End Sub

    Private Sub chkMostraQryTemp_AfterUpdate()
    'Atualiza a Lista após selecionar a caixa de verificação chkMostraQryTemp.
    lstObjects.Requery
    End Sub

    Function IsTemp(obj As Object) As Boolean
    ' Verifica se o objeto é temporário.
    ' Tabelas temporárias começam com ~TMPCLP.
    ' Consultas temporárias começam com ~sq.
    IsTemp = (Left(obj.Name, 7) = "~TMPCLP") Or _
    (Left(obj.Name, 3) = "~sq")
    End Function

    Function isSystem(tdf As TableDef) As Boolean
    ' Verifica se a tabela é de sistema, comparando
    ' os seus atributos com a constante dbSystemObject,
    ' ou verificando se o seu nome começa com USys.
    isSystem = ((tdf.Attributes And dbSystemObject) <> 0) Or _
    Left(tdf.Name, 4) = "USys"
    End Function

    Function ShowSysTdf() As Boolean
    ' Retorna True ou False, caso o usuário
    ' escolha mostrar, ou não, as tabelas de
    ' de sistema
    ShowSysTdf = Nz(Me!chkMostraSys, False)
    End Function

    Function ShowQryTmp() As Boolean
    ' Retorna True ou False, caso o usuário
    ' escolha mostrar, ou não, as consultas
    ' temporárias
    ShowQryTmp = Nz(Me!chkMostraQryTemp, False)
    End Function

    Private Sub lstObjects_Click()
    If Me.cboObjetos.Value = "Consultas" Then
    DoCmd.OpenQuery Me.lstObjects.Column(1)

    Else
    If Me.cboObjetos.Value = "Tabelas" Then
    DoCmd.OpenTable Me.lstObjects.Column(1)

    End If
    End If
    End Sub
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5553
    Registrado : 15/03/2013

    Re: copiar automaticamente arquivo pdf de pasta na raiz C:\ para tabela access

    Mensagem  ahteixeira em 6/4/2017, 08:43

    Olá Ademilson, Bem-Vindo ao fórum.

    Não compreendi bem a questão, mas para copiar ficheiros podemos usar a função nativa do Access "FileCopy".
    Veja se ajuda: [Você precisa estar registrado e conectado para ver este link.]
    Abraço

    ademilsonsilverio
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 29/11/2016

    Re: copiar automaticamente arquivo pdf de pasta na raiz C:\ para tabela access

    Mensagem  ademilsonsilverio em 6/4/2017, 12:51

    Obrigado mesmo por sua atenção.
    poisé, tenho um BD que armazena e abre pdf's, nele tem um tabela PDF que reloca para uma consulta de inserção para ser apresentada no fomulário PDF visuzaliza. o que preciso é um comando para copiar da Pasta na raiz C:\CorrdAux\PdfBaixado\ para a tabela PDF campo idPDF para que a consulta trabalhe, sem precisar ter que copiar toda vez o caminho do PDF.
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5553
    Registrado : 15/03/2013

    Re: copiar automaticamente arquivo pdf de pasta na raiz C:\ para tabela access

    Mensagem  ahteixeira em 6/4/2017, 13:14

    Olá,
    Explique melhor.
    A) Pretende guardar o caminho do ficheiro que baixou?
    B) Está a copiar o ficheiro pdf para a tabela?
    C) Outra situação?

    Ficamos aguardar.
    Abraço

    ademilsonsilverio
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 29/11/2016

    Re: copiar automaticamente arquivo pdf de pasta na raiz C:\ para tabela access

    Mensagem  ademilsonsilverio em 7/4/2017, 02:20

    Muito obrigado pela preocupação, vejo que todos realmente estão comprometidos em ajudar, não consegui mais abrir o bd que visualiza o pdf, devido a erro 438 não encontra o objeto, erro no acrobatpdf, ja fiz tudo que esta no repositorio e nas outras salas, mas não resolveu. agradeço mesmo, vou procurar outro jeito de abrir varios pdfs em um só formulário.
    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5553
    Registrado : 15/03/2013

    Re: copiar automaticamente arquivo pdf de pasta na raiz C:\ para tabela access

    Mensagem  ahteixeira em 7/4/2017, 08:31

    Olá Ademilson,
    Não compreendo onde está a dúvida do titulo do tópico.
    Devmos ser coerentes e não desviar da questão.

    No enanto vamos a isso.

    Quanto ao erro, sou da opinião de postar a base de dados para qualquer membro poder testar e ajudar.

    Se compreendi bem e quer ver os ficheiros PDF num único formulário, teste abrir um PDF no exemplo abaixo:
    [Você precisa estar registrado e conectado para ver este link.]
    Nota: Deve ter o Acrobat instalado.
    Abraço

    ifahidalgo
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 329
    Registrado : 13/10/2011

    Re: copiar automaticamente arquivo pdf de pasta na raiz C:\ para tabela access

    Mensagem  ifahidalgo em 11/4/2017, 19:08

    Crie uma função

    Private Sub fncCarregaPdf(Optional j As Byte = 0)
    Dim origem As String
    On Error Resume Next
    origem = txtlocalarq
    Select Case j
    Case 0 'botão 1
    Me!AcroPDF0.LoadFile origem
    End Select
    End Sub


    no botão para pegar o pdf;
    On Error Resume Next
    wzGetFileName
    Call fncCarregaPdf(0)


    abre caixa de dialogo para buscar o pdf
    Sub wzGetFileName()

    Dim wzhwndOwner As Long
    Dim wzAppName As String
    Dim wzDlgTitle As String
    Dim wzOpenTitle As String
    Dim wzFile As String
    Dim wzInitialDir As String
    Dim wzFilter As String
    Dim wzFilterIndex As Long
    Dim wzView As Long
    Dim wzflags As Long
    Dim wzfOpen As Boolean
    Dim ret As Long

    WizHook.Key = 51488399

    wzhwndOwner = 0&
    wzAppName = "Guardar documentos"
    wzDlgTitle = "Abri o documento"
    wzOpenTitle = "Abrir o documento"
    wzFile = String(255, Chr(0))
    wzInitialDir = ""
    wzFilter = "Arquivos em PDF " _
    & "(*.pdf)"
    wzFilterIndex = 1
    wzInitialDir = CurrentProject.Path & "\"
    wzView = 1
    wzflags = 64
    wzfOpen = True

    ret = WizHook.GetFileName(wzhwndOwner, _
    wzAppName, wzDlgTitle, wzOpenTitle, wzFile, _
    wzInitialDir, wzFilter, wzFilterIndex, _
    wzView, wzflags, wzfOpen)

    ' Si no se ha pulsado el botón Cancelar (-302)
    If ret <> -302 Then
    Me.txtlocalarq = wzFile
    End If
    End Sub


    botão salvar informação
    ArquivoDeOrigem = txtlocalarq ' Define o nome do arquivo de origem.
    ArquivoDeDestino = txtdestinoCI & "CI-" & Me.cmborgao.Value & " " & Me.cmbsetor.Value & " " & Me.txtnumerocontrol.Value & "" & Me.txtano.Value & ".pdf" 'Define o nome do arquivo dedestino.
    FileCopy ArquivoDeOrigem, ArquivoDeDestino ' Copia a origem no destino.
    txtdestino = ArquivoDeDestino

    não sei se é isso. desculpa a invasão.

    avatar
    ahteixeira
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5553
    Registrado : 15/03/2013

    Re: copiar automaticamente arquivo pdf de pasta na raiz C:\ para tabela access

    Mensagem  ahteixeira em 11/4/2017, 23:21

    Olá a todos,
    Ivan, toda a ajuda é bem-vinda. Wink

    Ficamos aguardar retorno do colega Ademilson.
    Abraço

      Data/hora atual: 22/10/2018, 20:09