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 - accessjr@bol.com.br
' 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
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 - accessjr@bol.com.br
' 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