Chào mừng đến với Diễn đàn Dân Kế Toán - Kế toán tổng hợp thực tế.
Kết quả 1 đến 7 của 7
  1. #1
    Ngày tham gia
    Aug 2015
    Bài viết
    0

    Link table từ MDB có password

    Tôi có một vấn đề cầu cứu các PRO:
    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)

  2. #2
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Link table từ MDB có password

    Chào! Mình đã vào tận trang chủ của Microsoft để tham khảo trường hợp của bạn. Nhưng những gì mình tìm được vẫn chưa đáp ứng. Khi bạn auto link table nó vẫn hỏi Pass cho dù bạn dùng cách nào đi nữa! Vì vậy

    Và mình gợi ý bạn 1 cách khác, đơn giản hơn, đó là xoá password của file đó đi, liên kết, sau đó set password trở lại

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

    Dim TempDb as Database
    Dim P as String ' Password

    Set tempDB = OpenDatabase(CurrentProject.Path & "\" & "DBDATA.MDB", True, False, "MS Access;PWD= mypassword")


    Sau đó xóa pass đi

    tempDB.NewPassword p, ""
    tempDB.Close

    Tiến hành liên kết table:
    DoCmd.TransferDatabase acLink, "Microsoft Access", CurrentProject.Path & "\" & "DBDATA.MDB", acTable, "TableName", "Tablename"

    Sau đó set password lại cho file Data

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


    Xem demo


    ----------------------------------

    Sorry ! Mình có sai sót ở đây! Mặc dù liên kết được nhưng sẽ bị lỗi không mở table liên kết do sai pass! :chongmat:

    Để mình nghiên cứu rồi post sau!

  3. #3
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Link table từ MDB có password




    Trích dẫn Gửi bởi LoveBlue
    Chào! Mình đã vào tận trang chủ của Microsoft để tham khảo trường hợp của bạn. Nhưng những gì mình tìm được vẫn chưa đáp ứng. Khi bạn auto link table nó vẫn hỏi Pass cho dù bạn dùng cách nào đi nữa! Vì vậy

    Và mình gợi ý bạn 1 cách khác, đơn giản hơn, đó là xoá password của file đó đi, liên kết, sau đó set password trở lại

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

    Dim TempDb as Database
    Dim P as String ' Password

    Set tempDB = OpenDatabase(CurrentProject.Path & "\" & "DBDATA.MDB", True, False, "MS Access;PWD= mypassword")


    Sau đó xóa pass đi

    tempDB.NewPassword p, ""
    tempDB.Close

    Tiến hành liên kết table:
    DoCmd.TransferDatabase acLink, "Microsoft Access", CurrentProject.Path & "\" & "DBDATA.MDB", acTable, "TableName", "Tablename"

    Sau đó set password lại cho file Data

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


    Xem demo


    ----------------------------------

    Sorry ! Mình có sai sót ở đây! Mặc dù liên kết được nhưng sẽ bị lỗi không mở table liên kết do sai pass! :chongmat:

    Để mình nghiên cứu rồi post sau!
    Không chạy được đâu, vì khi link anh đã xóa pass rồi. Sau khi link xong, bác lại đặt pass cho nó. Thì làm sao mở được.

  4. #4
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Link table từ MDB có password

    Thật ra cũng không phải là không giải quyết được.
    Bạn tạo 2 thủ tục 1
    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

  5. #5
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Link table từ MDB có password

    Nếu muốn set pass mới thì phải biết pass cũ.
    Nếu biết pass cũ thì cứ mở ra mà lấy dữ liệu. Xài xong thì thoát.
    Tại sao lại phải hủy pass làm gì? Mình vẫn đang biết pass mà?

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    31
    Ðề: Link table từ MDB có password




    Trích dẫn Gửi bởi muontennguoi
    Nếu muốn set pass mới thì phải biết pass cũ.
    Nếu biết pass cũ thì cứ mở ra mà lấy dữ liệu. Xài xong thì thoát.
    Tại sao lại phải hủy pass làm gì? Mình vẫn đang biết pass mà?
    Ý bạn ấy là viết code link dữ liệu trong file đã cài password bằng code. Mà lại không muốn phải nhập pass khi link. Chứ không thì đơn giản quá rồi!

  7. #7
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Link table từ MDB có password




    Trích dẫn Gửi bởi muontennguoi
    Nếu muốn set pass mới thì phải biết pass cũ.
    Nếu biết pass cũ thì cứ mở ra mà lấy dữ liệu. Xài xong thì thoát.
    Tại sao lại phải hủy pass làm gì? Mình vẫn đang biết pass mà?
    Em đang thiết kế chương trình gồm 3 phần:
    - File DB chính: là giao diện để người dùng sử dụng.
    - Các nguồn dữ liệu từ bên ngoài (excel, dbf,...)
    - File lưu dữ liệu đã được xử lý.
    Em link dữ liệu từ nguồn bên ngoài và file lưu dữ liệu (file này được đặt pass) vào file DB chính khi chạy. Nhưng em lại muốn có thể thay đổi được thư mục chứa các dữ liệu (cả 3 phần trên).
    Khi thay đổi thư mục, em dùng code xóa các link cũ và linh mới lại. Vấn đề là khi link mới gặp pass của file lưu dữ liệu.
    Cách của LoveBlue rất hay.

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •