(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./.
Mình nhất trí 2 tay với đoạn Tiên nói đúng là tốc độ truy xuất của nó chậm, như bài đầu tiên Dân có phân tích là 1 triệu record sẽ mất đến 3 phút.
Mình xin bổ sung thêm 2 cái nhược của code Tiên nói:
1. Khi file nguồn có từ 2 người truy cập cùng 1 thời điểm.
2. Có nhiều file nguồn => Suy ra, máy chủ sẽ chậm. ( Tác giả bài viết này là muốn gom dữ liệu từ các máy con. )
3. Code Tiên chỉ thích hợp cho đối tượng là máy con truy xuất đến máy chủ (Linktable trong trường hợp này không thích hợp: Bởi LinkTable là kiểu kết nối không gián đoạn.)
* Kết:
+ Dân và Tiên làm ứng dụng thì việc đưa code SQL vào VBA là chuyện nhỏ, nhưng người mới bắt đầu thì chuyện đó hơi khó.
+ Để mình viết cho tiên code dùng CurrentDb.Execute ....của tiên nhưng không cần Link table ( cái này mình tính viết cho bạn ấy sợ bạn ấy thấy nhiều dài dòng nên không viết)