Cách cập nhật một vùng dữ liệu sang file đóng bằng ADO (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Kiều Mạnh

I don't program, I beat code into submission!!!
Tham gia
9/6/12
Bài viết
5,538
Được thích
4,129
Giới tính
Nam
Lâu nay hoc được cách lấy và ghi dữ liệu bằng ADO ... giờ đến món Update một vùng dữ liệu qua file khác bằng ADO thấy cứ như gà mắc tắc vậy...--=0

Vì vậy úp bài nhờ các Bạn xử lý dùm

1/ Mình có 1 vùng dữ liệu Sheets("Manh").Range("A2:E100") của File Main.xlsb ....

Vậy mình muốn dùng sự kiện Worksheet_Change khi có sự thay đổi dữ liệu tại vùng nêu trên thì nó sẻ update dữ liệu vào File Data.xlsb Sheets("Luu").Range("A2:E100")

2/ Nếu tại 1 Cells của File Main.xlsb xóa thì dữ liệu khi update tại 1 Cells tương ứng của File Data.xlsb nó cũng bằng không [Empty] và ngược lại còn các Cells khác vẫn y nguyên

Mong các Bạn trợ giúp một chút ...

xin cảm ơn
 

File đính kèm

Lần chỉnh sửa cuối:
Không biết thầy doveandrose
Kỳ này dạo chơi phương nào mà thấy vắng vẻ quá ...có rảnh ghé qua coi dùm Mạnh bài này chút đi ....@!##--=0
 
Upvote 0
Mõi lần ADO làm việc thì phải lập đối tượng để kết nối. Kế đó gởi câu truy vấn cho cổ máy Access. Để lấy dữ liệu thì phải có đối tượng recordset. Lấy dữ liệu về xong thì phải ngắt kết nối và dẹp các đối tượng. Đối tượng recordset có thể rất lớn, phải đợi bộ dọn rác rảnh mới giải phóng bộ nhớ.
Chừng ấy công việc mà dùng cho hiện tượng Worksheet change sao?
 
Upvote 0
Lâu nay hoc được cách lấy và ghi dữ liệu bằng ADO ... giờ đến món Update một vùng dữ liệu qua file khác bằng ADO thấy cứ như gà mắc tắc vậy...--=0

Vì vậy úp bài nhờ các Bạn xử lý dùm

1/ Mình có 1 vùng dữ liệu Sheets("Manh").Range("A2:E100") của File Main.xlsb ....

Vậy mình muốn dùng sự kiện Worksheet_Change khi có sự thay đổi dữ liệu tại vùng nêu trên thì nó sẻ update dữ liệu vào File Data.xlsb Sheets("Luu").Range("A2:E100")

2/ Nếu tại 1 Cells của File Main.xlsb xóa thì dữ liệu khi update tại 1 Cells tương ứng của File Data.xlsb nó cũng bằng không [Empty] và ngược lại còn các Cells khác vẫn y nguyên

Mong các Bạn trợ giúp một chút ...

xin cảm ơn
Bạn nên xem các vấn đề như sau nhé:

1. Tốc độ sẽ bị ảnh hưởng.
2. Buộc phải có trường ID làm khóa chính.
3. Nếu trong Sheets("Manh") bị xóa nguyên dòng thì sẽ tính sao. Vì trong Excel ADO không hỗ trợ việc xóa dữ liệu.
 
Upvote 0
Bạn nên xem các vấn đề như sau nhé:

1. Tốc độ sẽ bị ảnh hưởng.
2. Buộc phải có trường ID làm khóa chính.
3. Nếu trong Sheets("Manh") bị xóa nguyên dòng thì sẽ tính sao. Vì trong Excel ADO không hỗ trợ việc xóa dữ liệu.

1/ Nếu vậy mình làm 1 sub khi thực hiện hết thao tác trên Sheets("Manh")...xong chay code nó update dữ liệu nguyên 1 vùng y trang như vậy xuống file kia được không

2/ Nếu sử dụng [A2:A100] làm ID và còn các cột khác căn cứ vào đó thực hiên được không ....

Thay vì thông thường mình sẻ làm Workbooks.Open mở nó lên xóa hết vung đó đi xong gán dữ liệu mới xong ..xong đóng lai Lưu ...Làm như vậy nếu File lớn mở lên mất công quá

Cảm ơn Bạn
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu vậy mình làm 1 sub khi thực hiện hết thao tác trên Sheets("Manh")...xong chay code nó update dữ liệu nguyên 1 vùng y trang như vậy xuống file kia được không

Thay vì thông thường mình sẻ làm Workbooks.open mở nó lên xóa hết vung đó đi xong gán dữ liệu mới xong ..xong đóng lai Lưu

Cảm ơn Bạn
Được nhưng tốc độ chậm lắm.
 
Upvote 0
Upvote 0
Upvote 0
Haha!!! Đảm bảo coi xong, bạn sẽ tìm được nhiều thứ trong đó.


coi hết mấy trăm trang nhập viện liền...từ từ nhét vào đầu mỗi ngày 1 ít thì ok ...

Nhét hết vô một lúc hay quá nhiều không chừng xuống bệnh Viên ở Đồng nai nhảy tưng tưng quá
 
Upvote 0
Upvote 0
Vậy vào đọc bài này: http://www.giaiphapexcel.com/forum/...vấn-CSDL-từ-file-Excel-đến-file-Access/page12
Hy vọng sẽ giải đáp được thắc mắc của bạn.

Cứ rập rình kiểu mèo dình chuột ...xong chuột canh mèo thế này mệt chết đi mất ....--=0

Xong không bổ ngang thì nó bổ dọc bài 132 link sau hay ...Tốc độ nhanh

http://www.giaiphapexcel.com/forum/...vấn-CSDL-từ-file-Excel-đến-file-Access/page14

Cùng ý tưởng đang ngâm cứu Access một chút để thiết kế cái Database

Cảm ơn nhiều nhiều ...
 
Upvote 0
Cứ rập rình kiểu mèo dình chuột ...xong chuột canh mèo thế này mệt chết đi mất ....--=0

Xong không bổ ngang thì nó bổ dọc bài 132 link sau hay ...Tốc độ nhanh

http://www.giaiphapexcel.com/forum/...vấn-CSDL-từ-file-Excel-đến-file-Access/page14

Cùng ý tưởng đang ngâm cứu Access một chút để thiết kế cái Database

Cảm ơn nhiều nhiều ...
Đang tự nâng cấp để dần dần trở nên chuyên nghiệp hơn đây.
 
Upvote 0
Vậy vào đọc bài này: http://www.giaiphapexcel.com/forum/...vấn-CSDL-từ-file-Excel-đến-file-Access/page12
Hy vọng sẽ giải đáp được thắc mắc của bạn.

Quả thực ADO Mạnh có biết xài chút chút nhưng cứ nhìn thấy mấy dòng này là Tịt toàn tập luôn ...cố hiểu nhưng ko biết luôn ...
Nhức đầu quá cứ a. rồi lại b. ...a
Mã:
& "ON b.Mahang=a.Mahang " _
              & "SET b.ngay=a.ngay,b.Mahang=a.Mahang,b.tenhang=a.tenhang," _
              & "b.makholuutru=a.makholuutru,b.tenkholuutru=a.tenkholuutru," _
              & "b.Soluongban=a.Soluongban " _
              & "where a.mahang is not null"
 
Upvote 0
Quả thực ADO Mạnh có biết xài chút chút nhưng cứ nhìn thấy mấy dòng này là Tịt toàn tập luôn ...cố hiểu nhưng ko biết luôn ...
Nhức đầu quá cứ a. rồi lại b. ...a
Mã:
& "ON b.Mahang=a.Mahang " _
              & "SET b.ngay=a.ngay,b.Mahang=a.Mahang,b.tenhang=a.tenhang," _
              & "b.makholuutru=a.makholuutru,b.tenkholuutru=a.tenkholuutru," _
              & "b.Soluongban=a.Soluongban " _
              & "where a.mahang is not null"

a hay b thì do mình tự đặt thôi.

Trong trường hợp bài đó thì:
1. a là:

[Excel 8.0;HDR=Yes;IMEX=2;DATABASE=" _
& ThisWorkbook.FullName & "].[Sheet1$B4:G600] a
2. b là:
 
Upvote 0
Quả thực ADO Mạnh có biết xài chút chút nhưng cứ nhìn thấy mấy dòng này là Tịt toàn tập luôn ...cố hiểu nhưng ko biết luôn ...
Nhức đầu quá cứ a. rồi lại b. ...a
Mã:
& "ON b.Mahang=a.Mahang " _
              & "SET b.ngay=a.ngay,b.Mahang=a.Mahang,b.tenhang=a.tenhang," _
              & "b.makholuutru=a.makholuutru,b.tenkholuutru=a.tenkholuutru," _
              & "b.Soluongban=a.Soluongban " _
              & "where a.mahang is not null"

ADO chỉ là một đối tượng làm công cụ cho bạn làm việc với CSDL. Khi làm việc, ADO cung cấp cho bạn một cái giao diện gồm kết nối vào CSDL và truy vấn (*).
1. Trong lúc kết nối, bạn có cho ADO biết dạng của CSDL: điển hình là với Excel và Access 2007 thì dùng dạng Access, (2003 dùng dạng Access theo kiểu JET)
2. Vì bạn đã xác định là dạng Access, cho nên ADO sẽ dùng phương pháp truy vấn theo lệnh Access SQL (nếu bạn xác định là SQL Server thì phải truy vấn theo T-SQL)

Cái câu bạn đưa ra bên trên chỉ là một câu truy vấn viết theo ngữ pháp của Access SQL. Vì vậy, cái làm bạn "đau đầu" là cách lập câu truy vấn SQL chứ khong phải ADO.

(*) từ truy vấn tôi nói trên là dịch từ "query". Hầu hết các phiên bản của SQL, query bao gồm cả truy vấn lẫn update
 
Upvote 0
ADO chỉ là một đối tượng làm công cụ cho bạn làm việc với CSDL. Khi làm việc, ADO cung cấp cho bạn một cái giao diện gồm kết nối vào CSDL và truy vấn (*).
1. Trong lúc kết nối, bạn có cho ADO biết dạng của CSDL: điển hình là với Excel và Access 2007 thì dùng dạng Access, (2003 dùng dạng Access theo kiểu JET)
2. Vì bạn đã xác định là dạng Access, cho nên ADO sẽ dùng phương pháp truy vấn theo lệnh Access SQL (nếu bạn xác định là SQL Server thì phải truy vấn theo T-SQL)

Cái câu bạn đưa ra bên trên chỉ là một câu truy vấn viết theo ngữ pháp của Access SQL. Vì vậy, cái làm bạn "đau đầu" là cách lập câu truy vấn SQL chứ khong phải ADO.

(*) từ truy vấn tôi nói trên là dịch từ "query". Hầu hết các phiên bản của SQL, query bao gồm cả truy vấn lẫn update

Tại tự hoc kiến thức chắp vá nhiều lúc chưa hiểu hết các kiểu khai báo cho Excel trên Sheet ...cho Access trên Table ...vvv nó chi tiết như thế nào cho nên nó nhức đầu

Lâu nay mới học được lấy lên ghi xuống hay tùy biến 50% ADO và 50% VBA như sử dụng ADO phương thức Rst.GetRows() lấy lên nhét vào Mãng xong xài tiếp VBA chạy For next nó thấy OK ...còn kiểu thuần ADO là Thua ...--=0
 
Upvote 0
Tại tự hoc kiến thức chắp vá nhiều lúc chưa hiểu hết các kiểu khai báo cho Excel trên Sheet ...cho Access trên Table ...vvv nó chi tiết như thế nào cho nên nó nhức đầu

Lâu nay mới học được lấy lên ghi xuống hay tùy biến 50% ADO và 50% VBA như sử dụng ADO phương thức Rst.GetRows() lấy lên nhét vào Mãng xong xài tiếp VBA chạy For next nó thấy OK ...còn kiểu thuần ADO là Thua ...--=0
Cứ từ từ. Dễ lắm chứ không khó như bạn tưởng đâu.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom