DoquangLam > 28-08-10, 11:30 PM
Noname > 29-08-10, 12:08 AM
Function getFile(Tit As String, formatName As String, formatType As String)
Dim dlgOpen As FileDialog
Set dlgOpen = Application.FileDialog(msoFileDialogOpen)
With dlgOpen
.Title = Tit
.Filters.Clear
.Filters.Add formatName, formatType
.AllowMultiSelect = False
result = .Show
If (result <> 0) Then
getFile = Trim(dlgOpen.SelectedItems.Item(1))
End If
End With
End Function
Sub LinkTable(T As String, path As String)
' kiêÒm tra table, nêìu coì rôÌi thiÌ xoìa ði
On Error GoTo Err
DoCmd.DeleteObject acTable, T
Err:
'link lai tablelink moi
DoCmd.TransferDatabase acLink, "Microsoft Access", path, acTable, T, T
End Sub
Private Sub cmdOpen_Click()
txtPath.Value = getFile("Select Data File", "data file", "*.mdb")
End Sub
Private Sub cmdreLink_Click()
LinkTable "tblKhachhang", txtPath
LinkTable "tblTiendien", txtPath
LinkTable "tblTienNuoc", txtPath
'Sửa tên các table tương ứng thành của bạn
msgbox " Đã nhập thành công dữ liệu file " & txtpath
End Sub
DoquangLam > 29-08-10, 05:08 PM
Noname > 29-08-10, 05:20 PM
DoquangLam > 29-08-10, 05:29 PM
Noname > 29-08-10, 05:31 PM
haquocquan > 30-08-10, 03:44 AM
(29-08-10, 05:08 PM)DoquangLam Đã viết: Noname ơi, Trong Table mình có hàng trăm table cũng phải liệt kê để liên kết hả. Có cách nào cho tự động copy Table từ chương trình gốc ra không.Chọn File thì bạn làm như Noname. Còn tự động liên kết các table thì bạn có thể làm như thế này xem sao:
Function TableLinkUpdate()
Dim rsfilemdb As Recordset
Dim dbdata As Database
Dim datatbl As TableDef
CurrentDb.Execute "Delete * from tblFileMDB"
Set rsfilemdb = CurrentDb.OpenRecordset("tblFileMDB", dbOpenDynaset)
Set dbdata = OpenDatabase(Getthumuc() & "\datasys\data.mdb")
For Each datatbl In dbdata.TableDefs
rsfilemdb.AddNew
rsfilemdb!tableName = datatbl.Name
rsfilemdb.Update
Next datatbl
Set dbdata = Nothing
rsfilemdb.MoveLast
rsfilemdb.MoveFirst
Do Until rsfilemdb.EOF
If InStr(1, rsfilemdb!tableName, "MSys") > 0 Then
rsfilemdb.Delete
End If
rsfilemdb.MoveNext
Loop
Set rsfilemdb = Nothing
End Function
Sub RefreshLinkTable()
Dim rstbl As Recordset
Set rstbl = CurrentDb.OpenRecordset("tblFileMDB", dbOpenDynaset)
rstbl.MoveLast
rstbl.MoveFirst
Do Until rstbl.EOF
' KiÓm tra xem ®· cã link. NÕu kh«ng cã, tiÕn hµnh link.
If KiemtratblCurrent(rstbl!tableName) = False Then
DoCmd.TransferDatabase acLink, "Microsoft Access", Application.CurrentProject.Path & "\data.mdb", acTable, rstbl!tableName, rstbl!tableName
Else
' KiÓm tra xem Link cã ®óng ®êng dÉn. NÕu kh«ng ®óng, link l¹i
If getLinked(rstbl!tableName) <> Application.CurrentProject.Path & "\data.mdb" Then
DoCmd.DeleteObject acTable, rstbl!tableName
DoCmd.TransferDatabase acLink, "Microsoft Access", Application.CurrentProject.Path & "\data.mdb", acTable, rstbl!tableName, rstbl!tableName
End If
End If
rstbl.MoveNext
Loop
rstbl.Close
Set rstbl = Nothing
End Sub
Function getLinked(tbl As String) As String
getLinked = Mid(CurrentDb.TableDefs(tbl).Connect, 11)
End Function
Function KiemtratblCurrent(tblName As String) As Boolean
Dim table As TableDef
For Each table In CurrentDb.TableDefs
If table.Name = tblName Then
KiemtratblCurrent = True
Exit Function
End If
Next table
KiemtratblCurrent = False
End Function
DoquangLam > 30-08-10, 04:33 PM
Noname > 30-08-10, 04:38 PM
DoquangLam > 30-08-10, 04:42 PM