Olá,
A proposito de tópico e conforme prometido, segue abaixo exemplo de sistema multi empresa.
Aproveito para postar algum código utilizado nas operações mais importantes:
Verifica caminhos e liga à tabela de Utilizadores
Função abrir ficheiro e ligar
Função verifica se existe tabela ligada
Abraço
A proposito de tópico e conforme prometido, segue abaixo exemplo de sistema multi empresa.
Aproveito para postar algum código utilizado nas operações mais importantes:
Verifica caminhos e liga à tabela de Utilizadores
- Código:
Private Sub Form_Load()
' Autor ..: Alvaro Teixeira (ahteixeira)
' Data ...: 07-07-2016
On Error GoTo Err_Form_Load
Dim pathComuns, strTabela As String
Dim x
pathComuns = Application.CurrentProject.Path & "\AppDados\AppComuns.mdb"
strTabela = "tblUtilizadores"
If Not Dir(pathComuns) <> "" Then
MsgBox "Verifique se existe o caminho e ficheiro:" & pathComuns, vbCritical, "Erro no acesso ao ficheiro"
DoCmd.Close acForm, "frmLogin"
DoCmd.Quit
Else
If fncTabelaEstaLigada(strTabela) Then
DoCmd.DeleteObject acTable, strTabela
End If
DoCmd.TransferDatabase acLink, "Microsoft Access", _
pathComuns, acTable, strTabela, strTabela
End If
If fncTabelaEstaLigada(strTabela) Then
x = Nz(DCount("NomeUtilizador", "tblUtilizadores"), 0) > 0
End If
Exit_Form_Load:
Exit Sub
Err_Form_Load:
MsgBox Err.Number & " - " & Err.Description, vbCritical, "Erro"
Resume Exit_Form_Load
End Sub
Função abrir ficheiro e ligar
- Código:
Function fncAbrirFicheiroLigar() As String
' Autor ..: Alvaro Teixeira (ahteixeira)
' Código .: fncAbrirFicheiro
' Data ...: 11-08-2016
' Para ...: MaximoAccess.com
' Obs ....: Requer referencia a Microsoft Office XX Object Library
' Abrir, escolher ficheiro (tipo Abrir do Word),
' verifica tabelas da base de dados escolhida se existe ligação
' com mesmo nome apaga tabela(s) ligada(s)
' por fim liga tabelas da base de dados escolhida.
On Error GoTo PROC_ERR
Dim db As DAO.Database
Dim tbl As TableDef
Set db = CurrentDb()
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
fd.Title = "Selecione o ficheiro da empresa"
fd.InitialFileName = Application.CurrentProject.Path & "\AppDados\Empresas\"
fd.Filters.Add "Ficheiro MDB", "*.mdb", 1
fd.Show
If (fd.SelectedItems.Count > 0) Then
Dim dbe As DAO.Database
Dim tdefs As TableDefs, tdef As TableDef
Set dbe = DBEngine.OpenDatabase(fd.SelectedItems(1))
For Each tdef In dbe.TableDefs
If Left(tdef.Name, 4) <> "MSys" Then
If fncTabelaEstaLigada(tdef.Name) Then DoCmd.DeleteObject acTable, tdef.Name
DoCmd.TransferDatabase acLink, "Microsoft Access", _
fd.SelectedItems(1), acTable, tdef.Name, tdef.Name
End If
Next tdef
dbe.Close
Set dbe = Nothing
DoCmd.Close acForm, "frmEscolheEmpresa"
DoCmd.OpenForm "frmMenu"
Else
MsgBox "Operação cancelada pelo utilizador.", vbInformation, ""
End If
PROC_EXIT:
db.Close
Set db = Nothing
Exit Function
PROC_ERR:
DoCmd.Hourglass False
If Err.Number = 3011 Then
MsgBox "Ficheiro MDB inválido.", vbCritical, ""
Else
MsgBox Err.Number & " - " & Err.Description, vbCritical, ""
End If
Resume PROC_EXIT
End Function
Função verifica se existe tabela ligada
- Código:
Function fncTabelaEstaLigada(sNomeTabela As String) As Boolean
' Autor ..: Alvaro Teixeira (ahteixeira)
' Código .: fncTabelaEstaLigada
' Data ...: 07-07-2016
' Para ...: MaximoAccess.com
' Verifica apenas se existe a ligação/vinculo, não verifica se existe o ficheiro ou tabela da ligação
fncTabelaEstaLigada = DCount("*", "MSysObjects", "MSysObjects.Name = '" & sNomeTabela & "' AND MSysObjects.Type = 6")
End Function
Abraço
- Anexos
- AppMulti_v1.zip
- Você não tem permissão para fazer download dos arquivos anexados.
- (92 Kb) Baixado 1057 vez(es)