• Import dữ liệu từ database có pass
  • Import dữ liệu từ database có pass

    Minh Tiên > 16-01-15, 11:10 PM

    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 !
  • RE: Import dữ liệu từ database có pass

    MTNQ > 17-01-15, 01:30 PM

    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
  • RE: Import dữ liệu từ database có pass

    MTNQ > 17-01-15, 04:29 PM

    à 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
  • RE: Import dữ liệu từ database có pass

    Minh Tiên > 17-01-15, 05:25 PM

    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 !
  • RE: Import dữ liệu từ database có pass

    Minh Tiên > 17-01-15, 05:44 PM

    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 !
  • RE: Import dữ liệu từ database có pass

    MTNQ > 17-01-15, 06:23 PM

    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")
  • RE: Import dữ liệu từ database có pass

    Minh Tiên > 17-01-15, 08:42 PM

    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 !