Đánh giá chủ đề:
  • 8 Votes - 1.63 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Tùy chọn liên kết lại các table từ file data có password
#1


Tips này hướng dẫn chúng ta cập nhật lại link cho table khi chuyển file data có password sang một vị trí khác, hoặc chúng ta có nhiều file data giống nhau password và cấu trúc, chỉ khác nhau nội dung.
Chúng ta không cần phải khai báo lại password mà chỉ nhập password ở lần  link lần đầu tiên (khi thiết kế)
(relink table from Database Access with password)
Writen by: Noname
Writen Site: http://thuthuataccess.com/forum
Please do not removed my info if using or share this code


Để sử dụng được code này, bạn vui lòng khai báo thư viện Office.

- Đầu tiên, bạn tạo 1 form mới, trên form,
+vẽ 1 textbox đặt tên là txtPath. dùng để nhập đường dẫn file data.
+ vẽ 1 nút nhấn, với caption là ... dùng để chọn file data, và ghi kết quả.
Vẽ 1 nút nhấn với caption là refresh link để thực thi hành động cập nhật lại đường dẫn table
[Hình: chonfiledata.png]

Trong ví dụ đính kèm dưới đây, bạn có 2 file đính kèm là data3 và data4 với password đều là 123456.
Đầu tiên, bạn link table theo cách link thông thường, nó sẽ hỏi password của bạn, bạn nhập password bình thường, chọn các table để liên kết. Và kể từ đây bạn không cần phải nhập password thêm lần nào nữa.

Bạn tạo 1 module mới và copy các đoạn code sau vào:

Đoạn code này cho phép ta gọi hàm getfile để tìm tới file data
Mã:
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

Đoạn code này lấy về password lưu trong hệ thống:
Mã:
' lâìy vêÌ password cuÒa lâÌn connect trýõìc
Function getconnect(T As String) As String
Dim con As String
con = DLookup("[Connect]", "MSysObjects", "[name]='" & T & "'")
getconnect = con
End Function
Đoạn code này link table với đường dẫn và password có sẵn
Mã:
'Liên kêìt table
Sub LinkTable(T As String, path As String, connectString As String)
Dim tblLink As TableDef
Dim DBlink As Database
Set DBlink = OpenDatabase(path, False, False, connectString)
On Error GoTo Err
DoCmd.DeleteObject acTable, T
Err:
DoCmd.TransferDatabase acLink, "Microsoft Access", path, acTable, T, T
'DBlink.Close
Set DBlink = Nothing
End Sub

Đoạn code này kiểm tra các table nào là liên kết, nếu nó là liên kết thì sẽ tiến hành liên kết theo đường dẫn mới
Mã:
Sub refreshLinkTable(path As String)
'Writen by:Noname
'Writen site: http://thuthuataccess.com/
'Please do not remove my info if using or share this modules
Dim r As Recordset
Dim s As String
s = "SELECT ForeignName FROM MSysObjects WHERE ForeignName Is Not Null"
Set r = CurrentDb().OpenRecordset(s)
If r.RecordCount > 0 Then
r.MoveLast
For i = 0 To r.RecordCount - 1
   LinkTable r(0), path, getconnect(r(0))
   r.MovePrevious
Next i
End If
r.Close
Set r = Nothing
End Sub

Giờ trong hành động nhấn chuột của nút Open, ta nhập code sau vào:
Mã:
Private Sub cmdOpen_Click()
txtPath.Value = getFile("Select Data File", "data file", "*.mdb")
End Sub

Hành động nút refresh link ta nhập code sau vào:

Mã:
Private Sub cmdreLink_Click()
refreshLinkTable Me.txtPath
MsgBox "link table thanh cong"
End Sub

Xong rồi đấy!
Chúc thành công.


File đính kèm
.rar   chondatacopassword.rar (Kích cỡ: 37.57 KB / Tải về: 968)
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn chihienphuco , KínhCận , dtv197 , trungn077 , Minh Tiên , hugox03 , thiennamlong
#2
Noname ơi, cám ơn bạn đã nhiệt tình hướng dẫn, nó phát sinh thêm lỗi này nữa, mong bạn quan tâm dùm nhé:
- Nếu mình đổi mật khẩu ở file Data3 hoặc Data4 khi Link nó báo lỗi ngay dòng : Set DBlink = OpenDatabase(path, False, False, connectString)

- Còn áp dụng vào chương trình của mình thì khi Link nó báo lỗi ngay dòng : con = DLookup("[Connect]", "MSysObjects", "[name]='" & T & "'")

Mình cũng không biết nguyên nhân do đâu nữa, mong bạn trợ giúp.
Noname ơi, cám ơn bạn đã nhiệt tình hướng dẫn, nó phát sinh thêm lỗi này nữa, mong bạn quan tâm dùm nhé:
- Nếu mình đổi mật khẩu ở file Data3 hoặc Data4 khi Link nó báo lỗi ngay dòng : Set DBlink = OpenDatabase(path, False, False, connectString)

- Còn áp dụng vào chương trình của mình thì khi Link nó báo lỗi ngay dòng : con = DLookup("[Connect]", "MSysObjects", "[name]='" & T & "'")

Mình cũng không biết nguyên nhân do đâu nữa, mong bạn trợ giúp.
Chữ ký của DoquangLam Hãy chia sẻ kinh nghiệm cùng mình trên ThuThuatAccess nhé! Chúc vui vẻ rose
Reply
Những người đã cảm ơn
#3
(12-09-10, 09:01 PM)DoquangLam Đã viết: Noname ơi, cám ơn bạn đã nhiệt tình hướng dẫn, nó phát sinh thêm lỗi này nữa, mong bạn quan tâm dùm nhé:
- Nếu mình đổi mật khẩu ở file Data3 hoặc Data4 khi Link nó báo lỗi ngay dòng : Set DBlink = OpenDatabase(path, False, False, connectString)

- Còn áp dụng vào chương trình của mình thì khi Link nó báo lỗi ngay dòng : con = DLookup("[Connect]", "MSysObjects", "[name]='" & T & "'")

Mình cũng không biết nguyên nhân do đâu nữa, mong bạn trợ giúp.
Noname ơi, cám ơn bạn đã nhiệt tình hướng dẫn, nó phát sinh thêm lỗi này nữa, mong bạn quan tâm dùm nhé:
- Nếu mình đổi mật khẩu ở file Data3 hoặc Data4 khi Link nó báo lỗi ngay dòng : Set DBlink = OpenDatabase(path, False, False, connectString)

- Còn áp dụng vào chương trình của mình thì khi Link nó báo lỗi ngay dòng : con = DLookup("[Connect]", "MSysObjects", "[name]='" & T & "'")

Mình cũng không biết nguyên nhân do đâu nữa, mong bạn trợ giúp.
Bài hướng dẫn bạn không đọc hết rồi!

password ở lần link lần đầu tiên
nghĩa là khi thiết kế, bạn tiến hành link bằng tay. Và lần sau nó căn cứ vào password cũ để lấy!
Các bài hướng dẫn mình không khuyến khích copy 100% mà nên hiểu mình đang làm gì. Có vậy bạn mới khá được!
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#4
Hì, mình đã hiểu rồi, mình làm được rồi. Như vậy mật khẩu phải cố định rồi không đổi được mật khẩu khác, nếu đổi sẽ bị lỗi : Set DBlink = OpenDatabase(path, False, False, connectString)
Chữ ký của DoquangLam Hãy chia sẻ kinh nghiệm cùng mình trên ThuThuatAccess nhé! Chúc vui vẻ rose
Reply
Những người đã cảm ơn
#5
Nếu bạn đổi mật khẩu khác, bạn phải vào và link lại bằng tay, Từ lần sau nó mới nhớ! Chứ làm sao chương trình biết mật khẩu khác của bạn là gì mà link! big hug
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#6
(12-09-10, 10:23 PM)Noname Đã viết: Nếu bạn đổi mật khẩu khác, bạn phải vào và link lại bằng tay, Từ lần sau nó mới nhớ! Chứ làm sao chương trình biết mật khẩu khác của bạn là gì mà link! big hug

Link table từ file có password, mình đang có thêm một vấn đề nhờ các pác giúp nhé:
Mình đã tạo 2 file: DATASYS.mde và DATA.mdb (lưu các table để link vào DATASYS). Khi mình tạo DATA.mdb mình không đặt pass và đã cung cấp cho mọi người dùng.
Mình có ý định dùng lệnh VBA từ DATASYS.mde để đặt pass cho DATA. Set password như hướng dẫn ở trên. Khi sử dụng cách này, có thể tự động link với pass mình vừa đặt theo hướng dẫn trên của Noname không?
Chữ ký của haquocquan Guest, you are welcome!
ღღღღღTài sản của haquocquan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#7
Mấu chốt ở code trên là ở đoạn này:
Trích dẫn:'Liên kêìt table
Sub LinkTable(T As String, path As String, connectString As String)
Dim tblLink As TableDef
Dim DBlink As Database
Set DBlink = OpenDatabase(path, False, False, connectString)
On Error GoTo Err
DoCmd.DeleteObject acTable, T
Err:
DoCmd.TransferDatabase acLink, "Microsoft Access", path, acTable, T, T
'DBlink.Close
Set DBlink = Nothing
End Sub

Khi bạn connect được vào file có password thì bạn có thể tùy nghi link các table trong đó
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#8
connectString chính là pass do mình đặt, phải không Noname?
Chữ ký của haquocquan Guest, you are welcome!
ღღღღღTài sản của haquocquan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn
#9
(05-10-10, 02:01 AM)haquocquan Đã viết: connectString chính là pass do mình đặt, phải không Noname?

Connect String là một chuỗi khai báo phương thức connect, không chỉ dùng cho Access mà có thể dùng nối ODBC, fox,Excel, txt,...
trong trường hợp này thì connect String là
Mã:
MS Access;PWD=yourpass;
Ví dụ password file mẫu ở trên là 123456 thì khai báo connect string:
Mã:
MS Access;PWD=123456;
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn haquocquan
#10
Mình làm như hướng dẫn của Noname. File không có pass vẫn link được bình thường
Chữ ký của haquocquan Guest, you are welcome!
ღღღღღTài sản của haquocquan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Nhập đường dẫn 1 file ảnh vào chương trình để lưu! Noname 29 11,194 08-09-16, 08:24 PM
Bài mới nhất: maidinhdan
  [Thủ Thuật] Demo Liệt kê số lượng User đang mở table nào maidinhdan 9 1,315 09-06-16, 09:01 AM
Bài mới nhất: nguyenhungcuong
  [Thủ Thuật] Ẩn record trong table theo ngày tháng tvn_hut 6 491 24-04-16, 01:00 AM
Bài mới nhất: tvn_hut
  [Thủ Thuật] Demo_Compact & Repaire nhiều file Back End maidinhdan 8 1,117 06-03-16, 10:54 PM
Bài mới nhất: maidinhdan
  [Thủ Thuật] Demo gửi Email có thêm file đính kèm Access maidinhdan 0 681 09-04-15, 11:22 PM
Bài mới nhất: maidinhdan

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ