ledangvan > 06-05-17, 10:20 PM
maidinhdan > 06-05-17, 10:41 PM
(06-05-17, 10:20 PM)ledangvan Đã viết: Có bác nào biết chỉ giùm tôi có cách nào kết nối lại link table không cần activex Control không ?
Function TaoLinkTable(DuongdanFile As String, MatkhauFile As String, TenTableCanLink As String, DatTenLinkTable As String) As Boolean
On Error GoTo Loi
Dim tdf As TableDef
Dim TestLinkTable As Boolean
Dim myDB As Database
If KiemtraTableTontai(DatTenLinkTable) Then
CurrentDb.TableDefs.Delete DatTenLinkTable
End If
Set myDB = CurrentDb
Set tdf = myDB.CreateTableDef(DatTenLinkTable)
With tdf
.Connect = "Ms Access;UID=Admin;PWD=" & MatkhauFile & ";DATABASE=" & DuongdanFile
'.Connect = ";PWD=" & PwdString & ";DATABASE=" & strPath
.SourceTableName = TenTableCanLink
End With
myDB.TableDefs.Append tdf
TestLinkTable = True
LoiExit:
TaoLinkTable = TestLinkTable
Exit Function
Loi:
If Err = 3110 Then
Resume LoiExit
Else
If Err = 3011 Then
Resume Next
End If
End If
End Function
Function KiemtraTableTontai(tblName As String) As Boolean
Dim tdf As TableDef
Set tdf = CurrentDb.TableDefs(tblName)
Set tdf = Nothing
KiemtraTableTontai = True
End Function
ledangvan > 06-05-17, 11:10 PM
(06-05-17, 10:41 PM)maidinhdan Đã viết:(06-05-17, 10:20 PM)ledangvan Đã viết: Có bác nào biết chỉ giùm tôi có cách nào kết nối lại link table không cần activex Control không ?
Thử cái này xem: Chép 2 hàm này vào mà dùng
Mã PHP:Function TaoLinkTable(DuongdanFile As String, MatkhauFile As String, TenTableCanLink As String, DatTenLinkTable As String) As Boolean
On Error GoTo Loi
Dim tdf As TableDef
Dim TestLinkTable As Boolean
Dim myDB As Database
If KiemtraTableTontai(DatTenLinkTable) Then
CurrentDb.TableDefs.Delete DatTenLinkTable
End If
Set myDB = CurrentDb
Set tdf = myDB.CreateTableDef(DatTenLinkTable)
With tdf
.Connect = "Ms Access;UID=Admin;PWD=" & MatkhauFile & ";DATABASE=" & DuongdanFile
'.Connect = ";PWD=" & PwdString & ";DATABASE=" & strPath
.SourceTableName = TenTableCanLink
End With
myDB.TableDefs.Append tdf
TestLinkTable = True
LoiExit:
TaoLinkTable = TestLinkTable
Exit Function
Loi:
If Err = 3110 Then
Resume LoiExit
Else
If Err = 3011 Then
Resume Next
End If
End If
End Function
Mã PHP:Function KiemtraTableTontai(tblName As String) As Boolean
Dim tdf As TableDef
Set tdf = CurrentDb.TableDefs(tblName)
Set tdf = Nothing
KiemtraTableTontai = True
End Function
maidinhdan > 06-05-17, 11:23 PM
(06-05-17, 11:10 PM)ledangvan Đã viết:(06-05-17, 10:41 PM)maidinhdan Đã viết:(06-05-17, 10:20 PM)ledangvan Đã viết: Có bác nào biết chỉ giùm tôi có cách nào kết nối lại link table không cần activex Control không ?
Thử cái này xem: Chép 2 hàm này vào mà dùng
Mã PHP:Function TaoLinkTable(DuongdanFile As String, MatkhauFile As String, TenTableCanLink As String, DatTenLinkTable As String) As Boolean
On Error GoTo Loi
Dim tdf As TableDef
Dim TestLinkTable As Boolean
Dim myDB As Database
If KiemtraTableTontai(DatTenLinkTable) Then
CurrentDb.TableDefs.Delete DatTenLinkTable
End If
Set myDB = CurrentDb
Set tdf = myDB.CreateTableDef(DatTenLinkTable)
With tdf
.Connect = "Ms Access;UID=Admin;PWD=" & MatkhauFile & ";DATABASE=" & DuongdanFile
'.Connect = ";PWD=" & PwdString & ";DATABASE=" & strPath
.SourceTableName = TenTableCanLink
End With
myDB.TableDefs.Append tdf
TestLinkTable = True
LoiExit:
TaoLinkTable = TestLinkTable
Exit Function
Loi:
If Err = 3110 Then
Resume LoiExit
Else
If Err = 3011 Then
Resume Next
End If
End If
End Function
Mã PHP:Function KiemtraTableTontai(tblName As String) As Boolean
Dim tdf As TableDef
Set tdf = CurrentDb.TableDefs(tblName)
Set tdf = Nothing
KiemtraTableTontai = True
End Function
Cách dùng như nào chỉ anh với Dân ơi
ledangvan > 07-05-17, 12:00 AM
maidinhdan > 07-05-17, 12:37 AM
(07-05-17, 12:00 AM)ledangvan Đã viết: Sax, Gửi file lên đây hoặc gửi vào email em minh họa cho,
.Connect = "Ms Access;UID=Admin;PWD=" & MatkhauFile & ";DATABASE=" & DuongdanFile
.Connect = ";DATABASE=" & DuongdanFile
Private Sub cmdLinktable_Click()
Dim linkfile As String
linkfile = CurrentProject.Path & "\db2_be.mdb"
TaoLinkTable linkfile, "", "A", "AX"
TaoLinkTable linkfile, "", "B", "BX"
MsgBox "Da Link thanh cong"
End Sub
ledangvan > 07-05-17, 09:54 AM
(07-05-17, 12:37 AM)maidinhdan Đã viết:(07-05-17, 12:00 AM)ledangvan Đã viết: Sax, Gửi file lên đây hoặc gửi vào email em minh họa cho,
Giúp anh với nhé : http://www.mediafire.com/file/s4uwih26j9...Ketnoi.rar
.Connect = "Ms Access;UID=Admin;PWD=" & MatkhauFile & ";DATABASE=" & DuongdanFile
.Connect = ";DATABASE=" & DuongdanFile
Private Sub cmdLinktable_Click()
Dim linkfile As String
linkfile = CurrentProject.Path & "\db2_be.mdb"
TaoLinkTable linkfile, "", "A", "AX"
TaoLinkTable linkfile, "", "B", "BX"
MsgBox "Da Link thanh cong"
End Sub
maidinhdan > 07-05-17, 07:30 PM
(07-05-17, 09:54 AM)ledangvan Đã viết: Tạo link thì OK tuy nhiên anh muốn nó link tất cả các table theo dữ liệu mà anh lựa chọn chứ không mặc định nó tên là db2_be
Có nghĩa là khi anh an open hoặc Link thì nó mở File cho anh lựa chọn và link các table của file lựa chọn đó
ledangvan > 08-05-17, 09:20 AM
(07-05-17, 07:30 PM)maidinhdan Đã viết:(07-05-17, 09:54 AM)ledangvan Đã viết: Tạo link thì OK tuy nhiên anh muốn nó link tất cả các table theo dữ liệu mà anh lựa chọn chứ không mặc định nó tên là db2_be
Có nghĩa là khi anh an open hoặc Link thì nó mở File cho anh lựa chọn và link các table của file lựa chọn đó
Anh xem lại Tiêu đề và câu mình đã đặt ra, Muốn hỏi câu khác thì làm Topic mới.
Và cũng lưu ý: Trình bày câu hỏi rõ ràng, tốt nhất có ví dụ minh họa. Đừng tiết kiệm vài phút gõ bàn phím.
Thân mến!
ongke0711 > 08-05-17, 01:33 PM
(08-05-17, 09:20 AM)ledangvan Đã viết: Anh hỏi cái này vì hiện tại việc Open và kết nối lại link anh dùng thông qua Activex Control, tuy nhiên ở một số máy chạy win64 hay offce 2007 nó hay bị lỗi nên anh không muốn dùng thông qua Activex Control, nên anh mới đặt câu hỏi như vậy.
Trong demo của em gửi cho anh, lúc anh để nguyên tên db2_be thì nó kết nối đúng, khi anh đổi file đó thành db2_be1 thì nó vẫn báo "Đã kết nối" tuy nhiên 2 bảng link A và B thì bị xóa đi.
Trong hàm của em anh thấy có kiểm tra tồn tại của bảng, nhưng sao khi anh đổi tên dữ liệu đáng ra nó phải báo là không có bảng hay dữ liệu không đúng chứ nhỉ.
Private Sub cmdBrowse_Click()
Dim dlgopen As Object 'FileDialog'
Dim strFolder As String
Set dlgopen = Application.FileDialog(4) '(msoFileDialogFolderPicker)'
strFolder = "Chưa chọn folder nào cả"
With dlgopen
If .Show = -1 Then
strFolder = dlgopen.SelectedItems(1)
Me.txtPath = strFolder
End If
End With
Option Compare Database
Option Explicit
#If VBA7 Then
Public Declare PtrSafe Function GetOpenFileName Lib "comdlg32.dll" Alias _
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Public Type OPENFILENAME
lStructSize As Long
hwndOwner As LongPtr
hInstance As LongPtr
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As LongPtr
lpTemplateName As String
End Type
#Else
Public Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
"GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long
Public Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type
#End If
Function LaunchCD(strform As Form) As String
Dim OpenFile As OPENFILENAME
Dim lReturn As Long
Dim sFilter As String
OpenFile.lStructSize = Len(OpenFile)
OpenFile.hwndOwner = strform.Hwnd
sFilter = "All Files (*.*)" & Chr(0) & "*.*" & Chr(0) & _
"JPEG Files (*.JPG)" & Chr(0) & "*.JPG" & Chr(0)
OpenFile.lpstrFilter = sFilter
OpenFile.nFilterIndex = 1
OpenFile.lpstrFile = String(257, 0)
OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
OpenFile.lpstrFileTitle = OpenFile.lpstrFile
OpenFile.nMaxFileTitle = OpenFile.nMaxFile
OpenFile.lpstrInitialDir = "C:\"
OpenFile.lpstrTitle = "Select a file using the Common Dialog DLL"
OpenFile.flags = 0
lReturn = GetOpenFileName(OpenFile)
If lReturn = 0 Then
MsgBox "Ban khong chon file nao!", vbInformation, _
"Thong bao"
Else
LaunchCD = Trim(Left(OpenFile.lpstrFile, InStr(1, OpenFile.lpstrFile, vbNullChar) - 1))
End If
End Function
Function KiemtraTableTontai(tblName As String) As Boolean
On Error Resume Next
Dim tdf As TableDef
Set tdf = CurrentDb.TableDefs(tblName)
If Err.Number = 3265 Then
KiemtraTableTontai = False
Else
KiemtraTableTontai = True
End If
End Function