• [Hàm] Lấy dữ liệu giữa 2 file Access có cùng cấu trúc table
  • RE: Xin giúp về code appen từ 2 file access

    maidinhdan > 07-10-16, 07:43 PM

    Tiên Post Code lên được rồi, Dân chỉ cài Access 2003.
  • RE: Xin giúp về code appen từ 2 file access

    huuduy.duy > 07-10-16, 10:49 PM

    (07-10-16, 07:43 PM)maidinhdan Đã viết: Tiên Post Code lên được rồi, Dân chỉ cài Access 2003.

    Đợi Tiên Post lên lâu quá, em gởi file đã chuyển về 2003. 
    Anh Dân xem thử
    https://drive.google.com/file/d/0Bz23-2t...sp=sharing
  • RE: Xin giúp về code appen từ 2 file access

    maidinhdan > 08-10-16, 12:08 AM

    (05-10-16, 11:11 AM)Minh Tiên Đã viết: Chào Dân !
    Tiên đang Import dữ liệu bằng cách dùng SQL ( theo bài viết của pausteigel thì phải) như sau:

    1. Tạo link table từ CSQL đích vào CSDL hiện tại - Nguồn.
    2. Dùng code CurrentDb.Execute "INSERT INTO tableDich(Field1, Field2,...) SELECT  Field1, Field2, ... FROM tableNguon;"
    3. Xóa link table.

    Tiên đã test thử với table hơn 200.000 record tốc độ chỉ 10 giây (Theo code của Dân mất 26 giây ).
    '- ưu điểm của SQL là:
       + Nhanh;
       + Cấu trúc table nguồn và đích ko cần giống nhau ( Chỉ cần các Field có cùng kiểu dữ liệu ).
    - Nhượt:
       + Code hơi dài (Code Link, Xóa Link, SQL)

    Dân cùng các Pro test lại thử có đúng ko nhé !
    Thân./.

    (07-10-16, 10:49 PM)huuduy.duy Đã viết:
    (07-10-16, 07:43 PM)maidinhdan Đã viết: Tiên Post Code lên được rồi, Dân chỉ cài Access 2003.

    Đợi Tiên Post lên lâu quá, em gởi file đã chuyển về 2003. 
    Anh Dân xem thử
    https://drive.google.com/file/d/0Bz23-2t...sp=sharing

    Qua kiểm chứng thực tế, tôi thấy đoạn Code của Minh tiên là hay nhất.

    Xin Post code của Tiên để anh em tham khảo
    1. Code Link table
    Mã PHP:
    Function CreateLinkTable(strPathFile As StringstrPass As StringstrTable As StringstrBaseTable As String) As Boolean
        On Error 
    GoTo CreateAttachedError
        
        Dim tdf 
    As TableDef
        Dim strConnect 
    As String
        Dim fRetval 
    As Boolean
        Dim myDB 
    As Database
        
    ' Kiem tra xem bang co ton tai khong?
        If TableExists(strTable) Then
            '
    MsgBox "Co table dang Link"
            CurrentDb.TableDefs.Delete strTable
        End 
    If
        Set myDB CurrentDb
        Set tdf 
    myDB.CreateTableDef(strTable)
        
        With tdf
            
    .Connect "Ms Access;UID=Admin;PWD=" strPass ";DATABASE=" strPathFile
            
    '.Connect = ";PWD=" & PwdString & ";DATABASE=" & strPath
            .SourceTableName = strBaseTable
        End With
        myDB.TableDefs.Append tdf
        fRetval = True
        
    CreateAttachedExit:
        CreateLinkTable = fRetval
        Exit Function
        
    CreateAttachedError:
        If Err = 3110 Then
            Resume CreateAttachedExit
        Else
            If Err = 3011 Then
                Resume Next
            End If
        End If
    End Function

    Function TableExists(tblName As String) As Boolean
        On Error GoTo ErrHandler
        Dim tdf As TableDef
        Set tdf = CurrentDb.TableDefs(tblName)
        Set tdf = Nothing
        TableExists = True
    ErrHandler:
    End Function 

    2. Nap du lieu vao Table va Xoa link table
    Mã PHP:
            CreateLinkTable(strPathstrPass"tblB1_Link""tblB1")
            sql "INSERT INTO tblB1 SELECT * FROM tblB1_Link;"
            CurrentDb.Execute sql
            
    If TableExists("tblB1_Link"Then CurrentDb.TableDefs.Delete "tblB1_Link" 


    Đoạn code này là rất ngắn và ok rồi.

    Gợi ý : Nên viết thêm code So sánh dữ liệu rồi hãy nạp vào Data.

    Nhờ ý tưởng này, mình viết cho mình thêm 01 code khác rất hay. Vài hôm nửa Post Demo lên cho anh em tham khảo

    Cảm ơn bác Tiên.
  • RE: Xin giúp về code appen từ 2 file access

    hoangnhanst > 24-08-22, 05:38 PM

    (08-10-16, 12:08 AM)maidinhdan Đã viết:
    (05-10-16, 11:11 AM)Minh Tiên Đã viết: Chào Dân !
    Tiên đang Import dữ liệu bằng cách dùng SQL ( theo bài viết của pausteigel thì phải) như sau:

    1. Tạo link table từ CSQL đích vào CSDL hiện tại - Nguồn.
    2. Dùng code CurrentDb.Execute "INSERT INTO tableDich(Field1, Field2,...) SELECT  Field1, Field2, ... FROM tableNguon;"
    3. Xóa link table.

    Tiên đã test thử với table hơn 200.000 record tốc độ chỉ 10 giây (Theo code của Dân mất 26 giây ).
    '- ưu điểm của SQL là:
       + Nhanh;
       + Cấu trúc table nguồn và đích ko cần giống nhau ( Chỉ cần các Field có cùng kiểu dữ liệu ).
    - Nhượt:
       + Code hơi dài (Code Link, Xóa Link, SQL)

    Dân cùng các Pro test lại thử có đúng ko nhé !
    Thân./.

    (07-10-16, 10:49 PM)huuduy.duy Đã viết:
    (07-10-16, 07:43 PM)maidinhdan Đã viết: Tiên Post Code lên được rồi, Dân chỉ cài Access 2003.

    Đợi Tiên Post lên lâu quá, em gởi file đã chuyển về 2003. 
    Anh Dân xem thử
    https://drive.google.com/file/d/0Bz23-2t...sp=sharing

    Qua kiểm chứng thực tế, tôi thấy đoạn Code của Minh tiên là hay nhất.

    Xin Post code của Tiên để anh em tham khảo
    1. Code Link table
    Mã PHP:
    Function CreateLinkTable(strPathFile As StringstrPass As StringstrTable As StringstrBaseTable As String) As Boolean
        On Error 
    GoTo CreateAttachedError
        
        Dim tdf 
    As TableDef
        Dim strConnect 
    As String
        Dim fRetval 
    As Boolean
        Dim myDB 
    As Database
        
    ' Kiem tra xem bang co ton tai khong?
        If TableExists(strTable) Then
            '
    MsgBox "Co table dang Link"
            CurrentDb.TableDefs.Delete strTable
        End 
    If
        Set myDB CurrentDb
        Set tdf 
    myDB.CreateTableDef(strTable)
        
        With tdf
            
    .Connect "Ms Access;UID=Admin;PWD=" strPass ";DATABASE=" strPathFile
            
    '.Connect = ";PWD=" & PwdString & ";DATABASE=" & strPath
            .SourceTableName = strBaseTable
        End With
        myDB.TableDefs.Append tdf
        fRetval = True
        
    CreateAttachedExit:
        CreateLinkTable = fRetval
        Exit Function
        
    CreateAttachedError:
        If Err = 3110 Then
            Resume CreateAttachedExit
        Else
            If Err = 3011 Then
                Resume Next
            End If
        End If
    End Function

    Function TableExists(tblName As String) As Boolean
        On Error GoTo ErrHandler
        Dim tdf As TableDef
        Set tdf = CurrentDb.TableDefs(tblName)
        Set tdf = Nothing
        TableExists = True
    ErrHandler:
    End Function 

    2. Nap du lieu vao Table va Xoa link table
    Mã PHP:
            CreateLinkTable(strPathstrPass"tblB1_Link""tblB1")
            sql "INSERT INTO tblB1 SELECT * FROM tblB1_Link;"
            CurrentDb.Execute sql
            
    If TableExists("tblB1_Link"Then CurrentDb.TableDefs.Delete "tblB1_Link" 


    Đoạn code này là rất ngắn và ok rồi.

    Gợi ý : Nên viết thêm code So sánh dữ liệu rồi hãy nạp vào Data.

    Nhờ ý tưởng này, mình viết cho mình thêm 01 code khác rất hay. Vài hôm nửa Post Demo lên cho anh em tham khảo

    Cảm ơn bác Tiên.

    EM ĐANG HỌC NÊN CHƯA HIỂU MẤY MONG AH CHỈ CHO EM CÁCH GHI ĐÈ DỮ LIỆU CÓ ĐIỀU KIỆN ĐI Ạ (VD: MA_KH, NGAY_VAO TRÙNG VỚI DỮ LIỆU CÓ SẴN FILE ĐÍCH THÌ GHI ĐÈ DỮ LIỆU MỚI LÊN FILE ĐÍCH, NẾU KO TRÙNG THÌ GHI THÊM BÌNH THƯỜNG)
    HOANGNHANST1995@GMAIL.COM