MaximoAccess

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

Obrigado

Administração do MaximoAccess

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

    Usando um Arquivo externo de parametrização no Access..

    HARYSOHN
    HARYSOHN
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12227
    Registrado : 01/03/2011

    Usando um Arquivo externo de parametrização no Access.. Empty Usando um Arquivo externo de parametrização no Access..

    Mensagem  HARYSOHN em Sex Jun 10, 2011 4:20 pm

    Segue modelo de Arquivo exetrno onde voce pode especificar Valores padrão que podem ser modificados em arquivo externo, sem precisar modificar seus códigos em forms e relatórios...

    Suponhamos que voce tenha um relatorio que exiba arquivos contendo Fotos....O que ocorre quando não há foto disponivel para aquele registro na tabela??
    Ele aparece em branco correto? Sim aparece em branco..
    Mas voce pode usar este arquivo de parametros para especificar caminhos padrao.. em nao encontrando caminho para a foto na tabela, ele exibe um arquivo padrao contido no HD...

    O bacana disso... é que se voce ja tiver algum programa em funcionamento e quiser modificar a foto ou algum caminho, caso se mude o local da rede etc.. basta apenas alterar o caminho no arquivo externo ou mesmo a fotopadrao.. sem precisar modifica o seu sistema...

    COMO USAR:

    Cole o seguinte código em um módulo e dê o Nome de GERAL
    Código:

    Option Compare Database
    Public QuemChamou As Form
    Public TipoOp As String
    Public DirFotosNovas As String
    Public DirFotos As String
    Public FotoPadrao As String
    Public FotoInexistente As String
    Public DigitalPadrao As String
    Public DirBanco As String
    Public DirBancoDados As String

    Public Sub Parametros_de_Inicializacao(Arquivo As String)
    Dim Linha As String, Conteudo As String
    Diretorio = SoDir(CurrentDb.Properties(0))
    Close
    Open Diretorio & Arquivo For Input As #1
    Do While Not EOF(1)
    Outro:
    Line Input #1, Linha
    If Not IsEmpty(Linha) And Not IsNull(Linha) And Len(Trim(Linha)) <> 0 Then
    If Left(Linha, 1) <> ";" Then
    Conteudo = Trim(Item(Linha, 2, ":="))
    If EstaVazio(Conteudo) = True Then GoTo Outro
    Select Case UCase(Trim(Item(Linha, 1, ":=")))
    Case "DIRFOTOSNOVAS"
    DirFotosNovas = Conteudo
    Case "DIRFOTOS"
    DirFotos = Conteudo
    Case "FOTOPADRAO"
    FotoPadrao = Conteudo
    Case "FOTOINEXISTENTE"
    FotoInexistente = Conteudo
    Case "DIRBANCO"
    DirBanco = Conteudo
    Case "DIRBANCODADOS"
    DirBancoDados = Conteudo
    End Select
    End If
    End If
    Loop
    Close
    End Sub

    Public Function EstaVazio(Texto) As Boolean
    EstaVazio = IIf(Not IsNull(Texto) And Len(Trim(Texto)) <> 0 And Not IsEmpty(Texto), False, True)
    End Function

    Pode observar que tenho algumas funções públicas no código:

    Public DirFotosNovas As String
    Public DirFotos As String
    Public FotoPadrao As String
    Public FotoInexistente As String
    Public DigitalPadrao As String
    Public DirBanco As String
    Public DirBancoDados As String
    Vai encontrar esses parametros no arquivo externo SYSPEN.PAR (é nele que se faz as alterações, que serao reconhecidas automaticamente pelo código no BD)
    Altere de acordo com sua necessidade

    Aplicação no Código no BD

    Em um relatório que le uma foto em um caminho na Tabela:

    'Referencia a Foto Perfil 4
    If IsNull(Me.txtPerfil4) = False Then
    Me.FotoPerfil4.Picture = Me.txtPerfil4
    Else
    Parametros_de_Inicializacao "SysPen.par" 'Aqui carrega os parametros contidos no arquivo externo SYSPEN.PAR
    Me.FotoPerfil4.Picture = FotoPadrao 'Pode observar que este parâmetro esta no arquivo Syspen.Par.. e representa o caminho para uma foto padrão, que em caso de nao encontrando o caminho contido na caixatexto txt.perfil4.. ele lê o caminho da foto padrao.. (esta foto tem que estar gravada na raiz da aplicação...
    End If

    Voce pode colocar no evento Ao csarregar do Form...

    Private Sub Report_Load()
    Parametros_de_Inicializacao "SysPen.par"
    End Sub

    e chamar a função onde desejar usar parametros no seu código...




    Quaisquer dúvidas, abram um tópico que estou pronto a responde-las....

    AUTOR.: Harysohn Pedrosa Pina, com ajuda de Jefferson Cleber (RJ)

    ENJOY!!!


    LINK para arquivo de parâmetros:

    https://www.dropbox.com/s/8h5qi1vpxqdi654/SysPen.par


    Última edição por Harysohn em Qui Jun 23, 2011 4:03 pm, editado 1 vez(es)
    HARYSOHN
    HARYSOHN
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12227
    Registrado : 01/03/2011

    Usando um Arquivo externo de parametrização no Access.. Empty Re: Usando um Arquivo externo de parametrização no Access..

    Mensagem  HARYSOHN em Dom Jun 12, 2011 1:34 pm

    Amigos... Aqui coloco um exemplo de carregamento de ComBox utilizando o SYSPEN.PAR


    '************************************************************
    'AUTOR: Harysohn - Paz, Justiça e Liberdade
    '************************************************************

    'Carrega as ComBox's usadas no Form
    Private Sub CarregaCombo()
    Parametros_de_Inicializacao "SysPen.par" 'Neste arquivo externo de parametros há a seguinte linha: DirBancoDados: = C:\SysPen\
    Dim NomeBD As String 'Aqui crio uma variável onde aplicarei o nome do Banco de dados
    Dim StrCboDetento As String 'Aqui crio uma variável para a ComBox
    Dim StrPath As String 'Aqui crio uma variável para receber o caminho da base de dados


    NomeBD = "Syspen_be.accdb"' ' Aqui aplico o nome do Banco de dados à Variável

    StrPath = DirBancoDados & NomeBD ' 'String com path para conexão com a base de dados, aqui adicionei o caminho contido no Syspen.Par + o nome da dase de dados contidos na Váriável NomeBD

    Set dbBanco = OpenDatabase(StrPath) 'Aqui Abro O BD através do caminho contido na variável StrPath, que é o Caminho no Syspen.Par + Variável NomeBD

    'Aqui o carregamento da ComBox
    'ComBox CboDetento
    StrCboDetento = "SELECT Detentos.ID, Detentos.[Nome] FROM Detentos IN '" & StrPath & "'" _ 'Note que aqui esta o caminho do BD Caminho no Syspen.Par + Variável NomeBD (C:\Syspen\Syspen_be.Accdb)
    & "WHERE UnidadeRequisitante='Mineiros' and RegimeAtual='Fechado';" 'Filtros para dados em campos na tabela
    Me.CboDetento.RowSource = StrCboDetento 'Aqui chama a variável StrCboDetento que contem a Tabela + o StrPath (que é o caminho para o BD)
    Me![CboDetento].ColumnCount = 4 'Quantidade de colunas na ComBox
    Me![CboDetento].ColumnWidths = "0cm;7cm;0cm;0cm" 'Tamanho das colunas, dependendo da quantidades de campos no Sql StrCboDetento


    End Sub

    PERFECT..... dessa forma caso queira muda o BD de endereço é so alterar o Caminho no Syspen.Par colocando o caminho que desejar sem precisar mexer no Sistema...


    Última edição por Harysohn em Dom Jun 12, 2011 2:51 pm, editado 5 vez(es)
    HARYSOHN
    HARYSOHN
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12227
    Registrado : 01/03/2011

    Usando um Arquivo externo de parametrização no Access.. Empty Re: Usando um Arquivo externo de parametrização no Access..

    Mensagem  HARYSOHN em Dom Jun 12, 2011 2:33 pm

    Bem amigos.. mais um exemplo de como usar o arquivo de parâmetros...
    Dessa vez carregando um relartório via RecordSource


    Private Sub Report_Open(Cancel As Integer)
    '************************************************************
    'AUTOR: Harysohn - Paz, Justiça e Liberdade
    '************************************************************

    Parametros_de_Inicializacao "SysPen.par" 'Neste arquivo externo de parametros há a seguinte linha: DirBancoDados: = C:\SysPen\
    Dim dbBanco As Database 'Váriável para o Banco de Dados
    Dim StrDetento As String ''Aqui crio uma variável para a a tabela a ser pesquisada
    Dim StrPath As String 'Aqui crio uma variável para receber o caminho da base de dados
    Dim NomeBD As String ' 'Aqui crio uma variável onde aplicarei o nome do Banco de dados

    NomeBD = "Syspen_be.accdb" ' Aqui aplico o nome do Banco de dados à Variável


    StrPath = DirBancoDados & NomeBD 'String com path para conexão com a base de dados, aqui adicionei o caminho contido no Syspen.Par + o nome da dase de dados contidos na Váriável NomeBD


    Set dbBanco = OpenDatabase(StrPath) 'Aqui Abro O BD através do caminho contido na variável StrPath, que é o Caminho no Syspen.Par + Variável NomeBD



    'Carrega a Váriável com o SQL
    StrDetento = "SELECT * FROM Detentos IN '" & StrPath & "'" _ 'Note que aqui esta o caminho do BD Caminho no Syspen.Par + Variável NomeBD (C:\Syspen\Syspen.Accdb)

    & "WHERE UnidadeRequisitante='Mineiros' and RegimeAtual='Fechado';" 'Filtros para dados na tabela

    Me.RecordSource = StrDetento 'Aqui carrega o relatório Via recordSource com a variável StrDetento, que contem A tabela e o seu endereço via StrPath
    End Sub


    PERFECT....


    ENJOY!!


    Última edição por Harysohn em Dom Jun 12, 2011 8:01 pm, editado 1 vez(es)
    HARYSOHN
    HARYSOHN
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12227
    Registrado : 01/03/2011

    Usando um Arquivo externo de parametrização no Access.. Empty Re: Usando um Arquivo externo de parametrização no Access..

    Mensagem  HARYSOHN em Dom Jun 12, 2011 7:59 pm

    Amigos.. aqui outro exemplo da utilidade do Arquivo de Parâmetros...

    em um relatorio:
    1 - Visualizar os registros
    2 - Colocar valores fixos em campos via RecordSet (Tipo Nome da empresa, endereço etc..)


    Private Sub Report_Load()
    '************************************************************
    'AUTOR: Harysohn - Paz, Justiça e Liberdade

    '************************************************************

    '*******************************************************************************
    'Popula Campos fixos da unidade no Relatório
    '*******************************************************************************
    Dim dbLocal As DAO.Database 'Variável para o local do Banco de Dados
    Dim ws As DAO.Workspace 'Variável para Conexão DAO
    Dim rsAdm As DAO.Recordset 'Variável para o Recordset
    Parametros_de_Inicializacao "SysPen.par" 'Neste arquivo externo de parametros há a seguinte linha: DirBancoDados: = C:\SysPen\
    Set ws = DBEngine.Workspaces(0)
    Set dbLocal = ws.OpenDatabase(DirBancoDados & "\Syspen_Be_Local.accdb", False, False, "MS Access;PWD=senha") 'Aqui onde especifico a conexão com o BD, aplico o contido no Arquivo de Parâmetros Syspen.par fazendo a junção com o nome do BD - DIrBancodados é o caminho gravado no Sypen.Par - DirBancoDados: = C:\SysPen\)

    strSQLAdm = "SELECT * FROM Administração" 'Carrego a vsariável com a instrução SQL
    Set rsAdm = dbLocal.OpenRecordset(strSQLAdm) 'Seto o RecordSet para abri-lo juntamente com a vsariável strSQLAdm

    '**********************************************************
    'Para o redorsetcrsAdm
    '**********************************************************
    Me.TxtUnidade = rsAdm![Nome da Unidade] 'Aqui faço a inserção do recorset em campos "Não acoplados" no relatório

    'Fecho o RecordSet e finalizo a conexão com o BD
    rsAdm.Close
    Set rsAdm = Nothing
    Set dbLocal = Nothing
    End Sub

    Private Sub Report_Open(Cancel As Integer)
    Parametros_de_Inicializacao "SysPen.par" 'Neste arquivo externo de parametros há a seguinte linha: DirBancoDados: = C:\SysPen\
    Dim dbBanco As Database 'Váriável para o Banco de Dados
    Dim StrDetento As String ''Aqui crio uma variável para a a tabela a ser pesquisada
    Dim StrPath As String 'Aqui crio uma variável para receber o caminho da base de dados
    Dim NomeBD As String ' 'Aqui crio uma variável onde aplicarei o nome do Banco de dados

    NomeBD = "Syspen_be.accdb" ' Aqui aplico o nome do Banco de dados à Variável


    StrPath = DirBancoDados & NomeBD 'String com path para conexão com a base de dados, aqui adicionei o caminho contido no Syspen.Par + o nome da dase de dados contidos na Váriável
    Set dbBanco = OpenDatabase(StrPath) 'Aqui Abro O BD através do caminho contido na variável StrPath, que é o Caminho no Syspen.Par + Variável NomeBD

    'Carrega a Váriável com o SQL
    StrDetento = "SELECT Detentos.[Nome] & Space (1) & [Sobrenome] As Detento, Detentos.[Nome Contato Emergência], Detentos.[Nome Contato Emergência1]," _
    & "Detentos.[Relação do Contato de Emergência], Detentos.[Relação do Contato de Emergência1], Detentos.[Telefone 1 do Contato de Emergência], " _
    & "Detentos.[Telefone 1 do Contato de Emergência1], Detentos.[Telefone 2 do Contato de Emergência], Detentos.[Telefone 2 do Contato de Emergência1]" _
    & "FROM Detentos IN '" & StrPath & "'" _ 'Note que aqui esta o caminho do BD Caminho no Syspen.Par + Variável NomeBD (C:\Syspen\Syspen.Accdb)
    & "WHERE UnidadeRequisitante='Mineiros' and RegimeAtual='Fechado' And ([Nome Contato Emergência] Is Not Null or [Nome Contato Emergência1] Is Not Null) ;" 'Filtros para dados na tabela


    Me.RecordSource = StrDetento 'Aqui carrega o relatório Via recordSource com a variável StrDetento, que contem A tabela e o seu endereço via StrPath

    End Sub


    Assim voce terá em seu relatório todos os registros especificados em em todas as páginas a exibição de apenas 1 registro que nesse caso é no rodape ou cabeçalho do report

    Enjoy!
    HARYSOHN
    HARYSOHN
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12227
    Registrado : 01/03/2011

    Usando um Arquivo externo de parametrização no Access.. Empty Re: Usando um Arquivo externo de parametrização no Access..

    Mensagem  HARYSOHN em Dom Jun 12, 2011 8:57 pm

    Mais um excelente uso do Arquivo de parâmetros...

    Em uma SQL, supondo que seu sistema rode em Filiais... e que para cada filial use Criterios de consultas diferentes....
    Pode aplicar isso no Arquivo de paramentros.. e ao instalar o BD em outra filial, so altera o Arquivo de Parâmetros..


    Private Sub Report_Open(Cancel As Integer)
    Parametros_de_Inicializacao "SysPen.par" 'Neste arquivo externo de parametros há a seguinte linha: 'RegimeAtual: = FECHADO

    Dim dbBanco As Database
    Dim StrDetento As String
    Dim StrPath As String
    Dim NomeBD As String
    Dim VarReg As String 'Aqui crio a variável para armazenar o texto contido no arquivo de parâmetros

    VarReg = RegimeAtual 'Aqui carrego a variável com o texto do Arquivo de parâmetros 'RegimeAtual: = FECHADO

    NomeBD = "Syspen_be.accdb"

    'String com path para conexão com a base de dados.
    StrPath = DirBancoDados & NomeBD
    Set dbBanco = OpenDatabase(StrPath)

    'RecordSource
    StrDetento = "SELECT Detentos.[Nome] & Space (1) & [Sobrenome] As Detento, Detentos.[Nível], Detentos.[Cela], Detentos.[Anotações] FROM Detentos IN '" & StrPath & "'" _
    & "WHERE UnidadeRequisitante='Mineiros' and RegimeAtual='" & VarReg & "'" _ 'Aqui faço a leitura da Variável que assume o valor do Texto do Arquivo de Parâmetros.. Ficando o RegimeAtual = Fechado (que é o meu critério de pesquisa)

    CONVÉM FRISAR Que não basta o texto estar no arquivo de parâmetros.. ele tem que esta em uma Funçao pública no Módulo Geral, citado no exemplo na origem do tópico
    HARYSOHN
    HARYSOHN
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12227
    Registrado : 01/03/2011

    Usando um Arquivo externo de parametrização no Access.. Empty Re: Usando um Arquivo externo de parametrização no Access..

    Mensagem  HARYSOHN em Sab Jun 18, 2011 6:20 pm

    Com Códigos do Amigo Alexandre Neves... Utilização do arquivo de parêmetros para gravar numeros sequenciais em tabela no Back End, com forms desvinculados, gravando novo registro com numero intermediario caso algum registro tenha sido excluido



    '***************************************************************************************
    'AUTOR: Alexandre Neves (Numerção) e Harysohn - Paz, Justiça e Liberdade (Arq.Parâmetros)
    '***************************************************************************************


    Em um módulo:

    'Para atribuir primeiro número disponível
    Function NumeroLivreVago(CampoID As String, NomeTabela As String, EnderecoBD As String) As Long
    'criada por Alexandre Neves
    'em 2011-06-15
    'para Harysohn
    'do fórum MaximoAccess

    Dim Rst As DAO.Recordset, I As Integer
    Set Rst = CurrentDb.OpenRecordset("SELECT " & CampoID & " FROM " & NomeTabela & " IN '" & EnderecoBD & "' ORDER BY ID;")
    If Rst.RecordCount = 0 Or IsNull(Rst(0)) Then
    NumeroLivreVago = 1
    Else
    I = 1
    Do
    If Rst(0) <> I Then
    NumeroLivreVago = I
    Exit Do
    End If
    I = I + 1
    Rst.MoveNext
    Loop
    End If
    Set Rst = Nothing
    End Function


    No Formulario ao click do Botão


    Parametros_de_Inicializacao "SysPen.par"

    Dim Db As DAO.Database
    Dim ws As DAO.Workspace
    Dim rs As DAO.Recordset

    Dim NomeBD As String 'Variável para o nome do BD
    Dim StrPath As String 'Variável para receber o caminho do BD

    Dim I
    Dim LastNumber

    NomeBD = "Syspen_Be.Accdb" 'Aqui carrega a variável com o nome do BD
    StrPath = DirBancoDados & NomeBD 'Aqui csarrego a variável com o caminho contido no Syspe.Par + Variável Nome BD

    If Me.txtID.Value = "" Then GoTo Continuar

    If Not IsNull(Me.txtID) Then
    DoCmd.OpenForm "frmAviso" 'Form para aviso diversos
    Call LimpaCampos 'Chama Função que limpa campos no Form
    Cancel = True
    DoCmd.Close
    Exit Sub
    Else
    Continuar:

    'Verifica se o campo ID está nulo. Se estiver
    'significa que é um novo registro.
    If IsNull(txtID) Then
    'Atribui ao campo o próximo número livre dentro
    'do campo codFunc na tabela Detentos.
    Me.txtID.Value = NumeroLivreVago("ID", "Detentos", StrPath) 'Aqui vai a variável do caminho completo do BD que é analizado em conjuto com o o módulo correndo assim o código contido no módulo

    Restantes dos códigos via recordset que gravam os dados na tabela



    Enjoy!
    HARYSOHN
    HARYSOHN
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12227
    Registrado : 01/03/2011

    Usando um Arquivo externo de parametrização no Access.. Empty Re: Usando um Arquivo externo de parametrização no Access..

    Mensagem  HARYSOHN em Qui Jun 23, 2011 3:37 pm

    Exemplo de uso do Syspen.Par, carregando aplicando caminhos de pastas do windows com o usuário logado


    No syspen.Par carreguei o Inicio e o Final do Caminho
    DirUser:=C:\Users\
    DirUserFinal:=\AppData\Roaming\Microsoft\Windows\Libraries\Pictures.library-ms

    E no módulo do Form:


    '**************************************
    Carreguei o usuário em uma Variável (StrUser)
    e na variável caminho Juntei as 3 Variáveis:
    DirUser + StrUser + DirUserFinal

    Dessa forma ele carregou as expressões inicial e final e aplica o usuário logado no intermédio das duas expressões
    '******************************************

    Parametros_de_Inicializacao "SysPen.par"
    Dim VarCaminho As String
    Dim StrUser As String

    StrUser = VBA.Environ("UserName")
    VarCaminho = DirUser & StrUser & DirUserFinal

    Assim a Variável caminho assume o valor:

    C:\Users\Administrador\Pictures\




    '********************************************************************************
    'Código completo utilizado nesta solução com o Syspen.Par
    '********************************************************************************




    Sub ActualizaLista()
    Parametros_de_Inicializacao "SysPen.par"
    Dim VarCaminho As String
    Dim StrUser As String
    Dim
    StrPasta As String

    '************************************************************************************************
    'Crio a Variável StrUser que receberá o usuário logado no Windows
    'Crio a Variável Pasta que assumirá o valor da pasta desejada
    'Crio a variável Caminho que reberá duas variávei púbblicas do Syspen.Par + nome do Usuário Logado
    'Aplico a variácel Caminho no lugar onde vai o caminho completo da pasta a ser aberta
    '**************************************************************************************************

    StrUser = VBA.Environ("UserName")
    StrPasta = "FotosVeiculos"
    VarCaminho = DirUser & StrUser & DirUserFinal & StrPasta

    Dim objFS, objPasta, objFicheiro
    Set objFS = CreateObject("Scripting.FileSystemObject")
    'Set objPasta = objFS.GetFolder("C:\Users\Administrador\Pictures\FotosVeiculos")
    Set objPasta = objFS.GetFolder(VarCaminho)
    ListaFicheiros.RowSource = ""
    For Each objFicheiro In objPasta.Files
    ListaFicheiros.AddItem objFicheiro.Name
    Next
    End Sub



    Perfect!
    HARYSOHN
    HARYSOHN
    Maximo VIP
    Maximo VIP

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 12227
    Registrado : 01/03/2011

    Usando um Arquivo externo de parametrização no Access.. Empty Re: Usando um Arquivo externo de parametrização no Access..

    Mensagem  HARYSOHN em Sex Jul 01, 2011 10:19 am

    Bem amigos.. postei um exemplo no repositório do uso de uma função (Módulo) o qual insere valores de uma tabela em outra, com um código simples no módulo do form, que por sua vez remete à função no módulo...

    Eis a adptação deste exemplo para utilização em um BackEnd onde se pode modificar o caminho do mesmo via arquivo de parâmetros..


    Em um módulo

    Option Compare Database
    Option Explicit


    Function AppendTable(toTableName As String, frmTableName As String, _
    Campo As String, Campo2, Campo3, Campo4 As String) As Boolean

    Parametros_de_Inicializacao "SysPen.par"
    Dim db As DAO.Database
    Dim ws As DAO.Workspace

    Set ws = DBEngine.Workspaces(0)

    'Acrescentar a uma tabela valores de outra tabela.
    'ToTableName: Nome da tabela para inserção
    'FrmTableName: Nome da tabela dos dados de origem
    'Campo: Nome do campo que receberá os valores
    'Campo1: Nome do campo que receberá os valores
    'Campo2: Nome do campo que receberá os valores
    'Campo2: Nome do campo que receberá os valores

    'Retorna True se tiver sucesso, false caso contrário

    'USO no Módulo do Form: AppendTable "toTableName", "frmTableName", "Campo", "Campo1, Campo2, Campo3"
    On Error GoTo errhandler
    Dim strSql As String



    'Cria Append Into Select SQL da nossa sequencia dos valores dos campos
    strSql = "INSERT INTO " & toTableName & "(" & Campo & ", " & Campo2 & ", " & Campo3 & "," & Campo4 & ")" & _
    " SELECT " & "[" & frmTableName & "]." & Campo & ",[" & frmTableName & "]." & Campo2 & ", " & Campo3 & ", " & Campo4 & _
    " FROM " & frmTableName & ";"


    'Imprimir o SQL para que possamos colar na consulta construída se houver erros
    Debug.Print strSql
    'Usa o BD no diretório do mesmo

    Set db = ws.OpenDatabase(DirBancoDados & "\Syspen_Be_Local.accdb", False, False, "MS Access;PWD=senha")

    'Executa a consulta SQL Query
    db.Execute strSql

    'Se nao há erros retorna true
    AppendTable = True
    ExitHere:

    Set db = Nothing

    'Notifica ao usuário que o preocesso está completo.
    MsgBox "Operação realizada com sucesso!"
    Exit Function
    errhandler:
    'Quando há um erro retorna false
    AppendTable = False
    With err
    MsgBox "Error " & .Number & vbCrLf & .Description, _
    vbOKOnly Or vbCritical, "AppendTable"
    End With
    Resume ExitHere
    End Function




    Function CreateField( _
    ByVal strTableName As String, _
    ByVal strCampo As String) _
    As Boolean

    'Cria um campo de texto com o nome = strCampo Na tabela strTableName
    'Aceita
    'StrTableName: Nome da tabela irá criar o campo
    'StrCampo: Nome do novo campo
    'Retorna True se tiver sucesso, false caso contrário


    On Error GoTo errhandler
    Dim db As DAO.Database
    Dim ws As DAO.Workspace
    Dim fld As DAO.Field
    Dim tdf As DAO.TableDef
    Parametros_de_Inicializacao "SysPen.par"


    Set ws = DBEngine.Workspaces(0)

    Set db = ws.Application(DirBancoDados & "\Syspen_Be_Local.accdb", False, False, "MS Access;PWD=senha")

    Set tdf = db.TableDefs(strTableName)
    'Primeiro, crie um campo com datatype = Text
    Set fld = tdf.CreateField(strCampo, dbText)

    With tdf.Fields
    .Append fld
    .Refresh
    End With

    CreateField = True

    ExitHere:
    Set fld = Nothing
    Set tdf = Nothing
    Set db = Nothing
    Exit Function
    errhandler:
    CreateField = False
    With err
    MsgBox "Error " & .Number & vbCrLf & .Description, _
    vbOKOnly Or vbCritical, "CreateAdditionalField"
    End With
    Resume ExitHere
    End Function


    Function RenameField(strTableName As String, OldstrCampo As String, strCampo As String)
    ' Esta rotina muda os campos na tabela strTableName.
    'Aceita
    'StrTableName: Nome da tabela em que vai alterar o campo
    'OldstrCampo: Nome do campo Antigo
    'StrCampo: Nome do novo campo
    'Retorna True se tiver sucesso, false caso contrário


    Dim db As Database
    Dim td As TableDef
    Dim fld As Field
    Dim ws As DAO.Workspace
    Parametros_de_Inicializacao "SysPen.par"


    Set ws = DBEngine.Workspaces(0)

    On Error GoTo errhandler

    Set db = ws.OpenDatabase(DirBancoDados & "\Syspen_Be_Local.accdb", False, False, "MS Access;PWD=senha")

    Set td = db.TableDefs(strTableName)

    ' Renomeia o campo
    td.Fields(OldstrCampo).Name = strCampo



    ExitHere:
    Set fld = Nothing
    Set td = Nothing
    Set db = Nothing
    Exit Function
    errhandler:

    With err
    MsgBox "Error " & .Number & vbCrLf & .Description, _
    vbOKOnly Or vbCritical, "ChangeField Reference: " & OldstrCampo
    End With
    Resume ExitHere

    End Function

    Public Function ifFieldExists(fldName As String, TableName As String) As Boolean
    Parametros_de_Inicializacao "SysPen.par"
    Dim rs As Recordset 'Sub DAO Vars
    Dim db As DAO.Database
    Dim ws As DAO.Workspace

    On Error GoTo fs
    Set ws = DBEngine.Workspaces(0)
    'verifica se uma tabela está lá e relatórios Verdadeiro ou Falso.

    Set db = ws.OpenDatabase(DirBancoDados & "\Syspen_Be_Local.accdb", False, False, "MS Access;PWD=senha")


    'Se há tabela, abre-a

    Set rs = db.OpenRecordset("Select " & fldName & " from " & TableName & ";")

    ifFieldExists = True
    rs.Close
    db.Close

    Exit Function

    fs:
    'Se a tabela nao é encontrada, fecha e seta a função para False
    Set rs = Nothing
    db.Close
    Set db = Nothing

    ifFieldExists = False
    Exit Function
    End Function


    Enjoy!

      Data/hora atual: Sex Dez 04, 2020 8:51 am