-
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 String, strPass As String, strTable As String, strBaseTable 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(strPath, strPass, "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 String, strPass As String, strTable As String, strBaseTable 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(strPath, strPass, "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