Đánh giá chủ đề:
  • 5 Votes - 1.8 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Link table từ file Access có password
#1
Hỏi : Tôi xây dựng chương trình có 2 file: 1 file để thực hiện các thao tác trên FORM và xử lý thông tin (DBSYS.mdb) và 1 file để lưu trữ dữ liệu(DBDATA.mdb)
- Để cho người khác không thể vào được các dữ liệu lưu trữ, tôi đặt pass vào file DBDATA.
- Tôi tạo biến về đường dẫn để có thể tùy ý người sử dụng thay đổi thư mục của chương trình. Khi thay đổi thư mục của chương trình, thì sẽ tự tạo lại các link đến các table trong DBDATA.
Vấn đề là: để thực hiện các lệnh link thì phải gõ pass. Nhưng mỗi một lệnh linktable, lại phải gõ pass một lần.
Các PRO xem có cách nào giúp tôi: đặt sẵn và dùng VBA tại file chính (DBSYS) có thể link table từ DBDATA mà không cần phải gõ pass không (chỉ có sử dụng lệnh trong DBSYS mới không yêu cầu pass, còn các hình thức khác đều yêu cầu pass)


Đáp:
Đầu tiên bạn kết nối với file ở dạng exclusive :

Mã:
Dim TempDb as Database
    Dim P as String ' Password
    P= "mypassword"
    Set tempDB = OpenDatabase(CurrentProject.Path & "\" &  "DBDATA.MDB", True, False, "MS Access;PWD= " & p)

Sau đó xóa pass đi
Mã:
tempDB.NewPassword p, ""
    tempDB.Close
Tiến hành liên kết table:

Mã:
DoCmd.TransferDatabase acLink, "Microsoft Access", CurrentProject.Path & "\" &"DBDATA.MDB", acTable, "TableName", "Tablename"
'Sau đó set password lại cho file Data

Mã:
Set tempDB = OpenDatabase(CurrentProject.Path & "\" & "DBDATA.MDB", True, False)
    tempDB.NewPassword "", p
    tempDB.Close
    Set tempDB = Nothing

Chú ý : Khi sử dụng chương trình thì phải unSet Password đi. Và khi sử dụng xong hoặc có lỗi ta sẽ setPassword trở lại:
Bạn tạo thủ tục 1

Mã:
Sub setPass(oldPass as String, newPass As String)
    Set tempDB = OpenDatabase(CurrentProject.Path & "\" & "DBDATA.MDB", True, False, "MS Access;PWD=" & oldPass)
    tempDB.NewPassword oldPass, NewPass
    tempDB.Close
    End Sub

Như Vậy, khi cần xài dữ liệu, bạn gọi : setPass mypassword, "" mục đích xóa pass của file đi
Và khi sử dụng xong hoặc chương trình có lỗi, bạn nhớ setPass trở lại password gốc setPass "", mypassword
Xem Demo
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Những người đã cảm ơn Cafe Via He
#2
Cảm ơn Noname
Minh thấy DBSYS.mdb có table SYSuser với Uername và Pass, Noname có thể bổ sung thêm hàm mã hóa và giải mã Pass để ACE tham khảo được không.
Chữ ký của vanrongvn Hãy chia sẻ kinh nghiệm cùng mình trên ThuThuatAccess nhé! Chúc vui vẻ rose
Những người đã cảm ơn
#3
Cái đoạn code này không còn phù hợp nữa, đã có chủ đề tương tự giải quyết vấn đề rồi.

Mọi người tham khảo bài này
http://thuthuataccess.com/forum/Thread-t...1-password
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
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
  Cài đặt ODBC -nền tảng kết nối Access và nguồn dữ liệu khác Noname 33 19,289 01-12-16, 06:49 PM
Bài mới nhất: atula77
  Xây dựng Class Modules trong Access ( Cơ bản đến Nâng cao) maidinhdan 2 180 13-11-16, 05:32 PM
Bài mới nhất: cpucloi
  Hướng Dẫn Demo tổng hợp xuất Table, Query sang Excel có điều kiện ở vị trí nào cũng được maidinhdan 18 2,783 20-10-16, 11:51 AM
Bài mới nhất: jeck09nt
  Ms Access VBA và Google drive, một vài ý tưởng trong chia sẻ và đồng bộ số liệu... paulsteigel 46 3,848 07-10-16, 02:43 PM
Bài mới nhất: kieu manh
  Ứng dụng đổi tên file trong windows hàng loạt tranthanhan1962 7 1,210 19-09-16, 04:16 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ơ