Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Import dữ liệu từ database có pass
#1
Nhờ các Pro chỉ giáo:
Tiên có 1 Function dùng để Import các table từ 1 database có pass, lâu nay chạy trên access 2007 0k.
Hôm nay chạy trên access 2013 cứ yêu cầu nhập pass mỗi khi Import xong 1 table.
Function như sau:
Mã:
Function ImportTableFromBackupDB(strTableList As String, ByVal FilePathName As String)
    Dim i As Long
    Dim sTableName As String
    Dim dbs As DAO.Database
    Set dbs = OpenDatabase(FilePathName, False, False, "Ms Access" & ";pwd=a123")
    For i = 1 To DMax("[TableID]", strTableList)
        sTableName = DLookup("[TableName]", strTableList, "[TableID]=" & i & "")
        DoCmd.TransferDatabase acImport, "Microsoft Access", FilePathName, acTable, sTableName, sTableName
    Next
    Set dbs = Nothing
End Function

Nhờ các pro chỉ giúp bị lỗi chỗ nào và cách khắc phục.
Cảm ơn nhiều !
Chữ ký của Minh Tiên -----------------------------------------------
Đường tuy ngắn, không đi không đến
Việc tuy nhỏ, không làm không nên.
                                           Tuân Tử
-----------------------------------------------
Reply
Những người đã cảm ơn
#2
DoCmd.TransferDatabase không hỗ trợ password, bạn dùng DoCmd.CopyObject

link tham khảo:

http://www.experts-exchange.com/Database...29963.html


Mã:
Function ImportPasswordedDatabase()
' copies all tables from a passworded database into this database

    Dim tdf As DAO.TableDef
    Dim appacc As Object
    Dim db As Database
    Set appacc = CreateObject("Access.Application")

    With appacc
       .AutomationSecurity = 1
      .OpenCurrentDatabase "C:\CopyFromDatabase.accdb", False, "YourPassword"
    End With

    For Each tdf In appacc.CurrentDb.TableDefs
        If Left(tdf.Name, 4) <> "msys" Then
            appacc.DoCmd.CopyObject "c:\CopyToThisDb.accdb", , acTable, tdf.Name
        Else
            'do nothing
        End If
    Next tdf
    appacc.CloseCurrentDatabase
    Set appacc = Nothing
  ' next line doesn't seem to work
    'CurrentDb.TableDefs.Refresh
    Application.RefreshDatabaseWindow
End Function

Ghi chú: code trên mình chưa test, bạn test thử nha
Chữ ký của MatTroiNguQuen Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn
#3
à mình vừa nhớ ra trước đây có đọc bài viết của bác Noname về xóa mật khẩu CSDL, thao tác xong thì đặt lại mật khẩu cũ, sao không áp dụng vào trường hôp này nhỉ 014

Mã:
Function ImportTableFromBackupDB(strTableList As String, ByVal FilePathName As String)
    Dim i As Long
    Dim sTableName As String
    Dim dbs As DAO.Database
    Set dbs = DBEngine.OpenDatabase(FilePathName, True, False, ";pwd=a123")
    dbs.NewPassword "a123", ""
    
    For i = 1 To DMax("[TableID]", strTableList)
        sTableName = DLookup("[TableName]", strTableList, "[TableID]=" & i & "")
        DoCmd.TransferDatabase acImport, "Microsoft Access", FilePathName, acTable, sTableName, sTableName
    Next
    
    dbs.NewPassword "", "a123"
    dbs.Close
    Set dbs = Nothing
End Function
Chữ ký của MatTroiNguQuen Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn Minh Tiên
#4
Chào MTNQ !
Function của mình lúc chạy lúc không như thời tiết mưa nắng thế. Chiều nay thì cũng Function này chạy trên acc2013 thì chạy vi vu. Hôm qua thì đòi pass nheo nhéo ! Ko biết cái anh Acc của mình kiểu gì nữa.
À mình sẽ test theo Function của bạn và Bác Noname xem thế nào rồi báo cáo sau !
Cảm ơn bạn đã giúp.
Thân !
Chữ ký của Minh Tiên -----------------------------------------------
Đường tuy ngắn, không đi không đến
Việc tuy nhỏ, không làm không nên.
                                           Tuân Tử
-----------------------------------------------
Reply
Những người đã cảm ơn
#5
Báo cáo làm theo cách xóa pass ở bài 3 không được bạn MTNQ ơi !
Dùng Function của bạn ở bài 3 bị báo lỗi: File đã có người dùng rồi ! Nên không chạy được.
Bạn có cách nào khác không ?
Function của mình mới test lại thì lại đòi pass nheo nhéo nữa rồi.
Để mình nghiên cứu theo bài 2 của bạn thử xem sao.
Cảm ơn bạn !
Chữ ký của Minh Tiên -----------------------------------------------
Đường tuy ngắn, không đi không đến
Việc tuy nhỏ, không làm không nên.
                                           Tuân Tử
-----------------------------------------------
Reply
Những người đã cảm ơn
#6
bài 3 mình đã test rùi ok mà, bạn copy code mình đưa và chạy thử xem?
Chú ý dòng này nhé:
Set dbs = DBEngine.OpenDatabase(FilePathName, True, False, ";pwd=a123")
Chữ ký của MatTroiNguQuen Thời gian nước chảy... da mòn
Ngủ quên một chốc thấy còn bộ xương!
Reply
Những người đã cảm ơn Minh Tiên
#7
Chào MTNQ !
Mình đã test lại bài 3 của bạn.
Bỏ 2 dòng xóa pass và đặt lại pass là OK !
Cảm ơn bạn nhiều !
Chữ ký của Minh Tiên -----------------------------------------------
Đường tuy ngắn, không đi không đến
Việc tuy nhỏ, không làm không nên.
                                           Tuân Tử
-----------------------------------------------
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
  Form lọc dữ liệu huuduy.duy 16 852 20-08-16, 05:43 PM
Bài mới nhất: ongke0711
  [Hỏi] Làm cách nào để ẩn cửa sổ database cannguyen 1 123 23-05-16, 03:57 PM
Bài mới nhất: cpucloi
  [Help] Báo trùng dữ liệu giữa STT và SKK nam8384 5 389 16-05-16, 08:58 PM
Bài mới nhất: ongke0711
Thumbs Up [Hỏi] khi nhập liệu không cho trùng cùng lúc 3 textbox hugox03 1 415 03-08-15, 04:50 PM
Bài mới nhất: ledangvan
  [Help] Import file .txt vào Table conmeo 9 926 21-06-15, 02:37 PM
Bài mới nhất: conmeo

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ơ