maidinhdan > 23-03-21, 05:43 PM
Ham_TaoLinkAllTable(DuongDanFile,[Mat khau co the bo trong neu file khong co mat khau])
=>
Ham_TaoLinkAllTable Me.txtlinkfile1, Me.txtpass 'File co Pass
Ham_TaoLinkAllTable Me.txtlinkfile2 ' File khong Pass, chi can dien Link File la dc
' --------------------------------------------------------------------------------------------------------
' Ten Modules/Class: modLinkTable
' Ten ham/thu tuc : Ham_TaoLinkAllTable
' Tao tren may PC : HENDAN
' Author/ Tac gia : maidinhdan@gmail.com , Ngay, gio tao: 23/03/2021 4:19:39 PM
' Parameters/Tham so :
' Cu phap/ Purpose : Ham_TaoLinkAllTable(DuongDanFile,[Mat khau co the bo trong neu file khong co mat khau])
' Pham vi ap dung : Tao LinkTable nhanh voi nhieu File Access khac nhau va co so luong table lon
' --------------------------------------------------------------------------------------------------------
Public Function Ham_TaoLinkAllTable(DuongDanFile As String, Optional MatkhauFile As String) As Boolean
On Error GoTo Loi
'Chen cac Thu tuc cua ban o day
Dim dbHienHanh As DAO.Database, i As Integer
Set dbHienHanh = CurrentDb
Dim TableHienHanh As String
'Duyet lay tat ca table Access hien hanh, bao gom ca cac table dang link, ngoai tru table he thong
For i = 0 To dbHienHanh.TableDefs.Count - 1
If Left(dbHienHanh.TableDefs(i).Name, 4) <> "MSys" Then
TableHienHanh = dbHienHanh.TableDefs(i).Name
Debug.Print "HienHanh: ___________", TableHienHanh
End If
Next i
' Khoi tao mot ket noi den Link file chi dinh; cac dong mau xanh la cay de Admin Test thoi, khi dung hay bo di
Dim dbKhac As DAO.Database ', i As Integer
' Dim DuongDanFile As String, MatkhauFile As String
Dim tdf As TableDef
' DuongDanFile = CurrentProject.Path & "\DataTest.mdb"
' MatkhauFile = "111444"
' DuongDanFile = CurrentProject.path & "\TaoFileMDB.mdb"
' MatkhauFile = ""
i = 0 'Set bien i lai tu dau
Set dbKhac = DBEngine.Workspaces(0).OpenDatabase(DuongDanFile, False, False, "MS Access;PWD=" & MatkhauFile)
Dim TableKhac As String
''Duyet lay tat ca table Access theo Link file chi dinh, ngoai tru table he thong
For i = 0 To dbKhac.TableDefs.Count - 1
If Left(dbKhac.TableDefs(i).Name, 4) <> "MSys" Then
TableKhac = dbKhac.TableDefs(i).Name
'So sanh Table trong File chi dinh co khac voi table hien hanh khong? Khac thi xoa; Khong thi bo qua
If KiemtraTableTontai(TableKhac) Then 'Hàm kiem tra table hien hanh co ton tai khong?
CurrentDb.TableDefs.Delete TableKhac
Debug.Print TableKhac & "________Da Xoa va Se tao lai" 'Thong bao Table dang ton tai, se xoa va se tien hanh lien ket lai
Else
Debug.Print TableKhac & "________SeTaoMoi" 'Thong bao Table chua co, va se tien hanh lien ket lai
End If
'Tien hanh link lai lien ket voi table trong file chi dinh
Set dbHienHanh = CurrentDb
Set tdf = dbHienHanh.CreateTableDef(TableKhac)
'Danh dau ket noi den file Access chi dinh de tien hanh link table
With tdf
.Connect = "Ms Access;UID=Admin;PWD=" & MatkhauFile & ";DATABASE=" & DuongDanFile
.SourceTableName = TableKhac
End With
' ra lenh ket noi
dbHienHanh.TableDefs.Append tdf
End If
Next i
'Xoa bien khoi bo nho
Set dbHienHanh = Nothing
Set dbKhac = Nothing
Ham_TaoLinkAllTable = True
' Doan xu ly cac loi
LoiExit:
Exit Function
Loi:
Ham_TaoLinkAllTable = False
If Err = 3110 Then
Resume LoiExit
Else
If Err = 3011 Then
Resume Next
End If
End If
End Function
ledangvan > 23-03-21, 05:54 PM
ongke0711 > 24-03-21, 12:58 PM
Function XoalinkedTables() As Boolean
On Error GoTo EH
Dim dbs As DAO.Database
Dim tdf As DAO.TableDef
Set dbs = CurrentDb
'Xoa linked table'
For Each tdf In dbs.TableDefs
If Len(tdf.Connect) > 0 Then
If tdf.Connect Like "*;DATABASE=*" Then 'Chi xóa link cua Access database'
'On Error Resume Next '* Khong có dòng này, se không xóa hêt tdf
'DoCmd.DeleteObject acTable, tdf.Name '
dbs.TableDefs.Delete tdf.Name
End If
End If
Next tdf
XoalinkedTables = True
Exit Function
EH:
XoalinkedTables = False
End Function
maidinhdan > 24-03-21, 03:55 PM
(24-03-21, 12:58 PM)ongke0711 Đã viết: Cái vụ Linked Table này trước đây tôi cũng vật vã với nó ở việc "Xoá linked table hiện tại".
Sẳn cái folder Data của maidinhdan, tôi viết cái hàm XoaLinkedTable(). Cái hàm này có cái lỗi là không xoá được hoàn toàn các Linked Table trong Database hiện hành. Các bạn ngâm cứu xem nguyên nhân ở đâu nhé.
Link file: https://www.mediafire.com/file/hu9yvs2gf...e.rar/file
Public Function XoaTatCaTablehienhanh()
On Error GoTo Loi
'Chen cac Thu tuc cua ban o day
Dim dbHienHanh As DAO.Database, i As Integer
Set dbHienHanh = CurrentDb
Dim TableHienHanh As String
'Duyet lay tat ca table Access hien hanh, bao gom ca cac table dang link, ngoai tru table he thong
For i = 0 To dbHienHanh.TableDefs.Count - 1
If Left(dbHienHanh.TableDefs(i).Name, 4) <> "MSys" Then
TableHienHanh = dbHienHanh.TableDefs(i).Name
CurrentDb.TableDefs.Delete TableHienHanh
End If
Next i
'Xoa bien khoi bo nho
Set dbHienHanh = Nothing
MsgBox "Da xoa tat ca table hien co, vui long khoi dong lai ung dung", vbInformation, "Thông báo"
' Doan xu ly cac loi
LoiExit:
Exit Function
Loi:
If Err = 3110 Then
Resume LoiExit
Else
If Err = 3011 Then
Resume Next
End If
End If
End Function
ongke0711 > 24-03-21, 04:39 PM
(24-03-21, 03:55 PM)maidinhdan Đã viết: * Nguyên nhân Lỗi của hàm anh là do nó không thể xóa Table hệ thống/ hoặc table nó không tồn tại; như vậy phải viết thêm vài dòng để xử lý nó.
maidinhdan > 24-03-21, 04:51 PM
(24-03-21, 04:39 PM)ongke0711 Đã viết:(24-03-21, 03:55 PM)maidinhdan Đã viết: * Nguyên nhân Lỗi của hàm anh là do nó không thể xóa Table hệ thống/ hoặc table nó không tồn tại; như vậy phải viết thêm vài dòng để xử lý nó.
Cái hàm của em thì anh test OK rồi. Nguyên nhân lỗi của cái hàm anh làm không phải như em nói vì:
- Anh có kèm điều kiện .Connect >0 --> tức chỉ chỉ có linked table mới có chuỗi .Connect, nếu table hệ thống (MSys) thì chuỗi .Connect = Null
- Trong code anh duyệt qua toàn bộ TableDef của CurrentDb thì nếu Table nào không tồn tại thì nó sẽ không có Name.
- Trong chuỗi Connect, anh có thêm điều kiện "*; DATABASE=*" mục đích chỉ xoá Linked Table nào liên quan đến CSDL Access, còn những Linked Table khác tới các CSDL khác như SQL Server, Excel, CVS... sẽ không bị xoá.
dotrung > 25-03-21, 03:20 PM
mrtoanbin > 29-03-21, 08:34 PM
HTQuang > 02-04-21, 10:22 AM
maidinhdan > 07-05-21, 03:43 PM