Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Help] Sử dụng Append Query
#1
Chào các bạn!
Mình đang cần sao chép dữ liệu từ bảng A sang bảng B.
Mình dùng Append Query, tuy nhiên có một vấn đề như sau:
Ở lần Append Query đầu tiên, bảng B giống bảng A.
Nhưng khi mình thay đổi dữ liệu ở bảng A (chỉ thay đổi một số record).
Và dùng Append Query thì Access sao chép dữ liệu ở bảng A tới B. Tuy nhiên:
Mình xem bảng B thì thấy ở lần copy này, nó sao chép từ A sang B cả những record đã có sẵn trong B.
Tức trong bảng B đã chứa các record giống nhau.
Nhưng mình chỉ muốn: Nếu mình thay đổi một số record ở bảng A thì khi sử dụng Append Query
nó chỉ sao chép những record đã thay đổi sang bảng B mà thôi chứ không sao chép lại lại các record đã có trước.
Câu hỏi:
1. Mình dùng Append Query đã đúng chưa? hay phải dùng Action Query khác.
2. Nếu dùng Append Query thì dùng như thế nào? để mình thu được kết quả như trên.
Mọi người giúp mình nhé!
Chữ ký của qhuyhh117 Xin chào, mình là qhuyhh117, Tham gia http://thuthuataccess.com/forum từ ngày 11-11 -12.
Reply
Những người đã cảm ơn
#2
Vấn đề đồng bộ bạn cần kết hợp linh hoạt giữa update query và append query.

1/ Đặt khóa cho cả hai bảng. Điều này đảm bảo rằng sẽ không có record nào bị trùng lại.
2/ Append từ bảng A sang bảng B để thêm các record mới. Với điều kiện là các khóa đó chưa tồn tại trong tableB.

Ví dụ:
Mã:
INSERT INTO TableB ( khoa, noidung )
SELECT TableA.khoa, TableA.noidung
FROM TableA
WHERE (((TableA.khoa) Not In (select khoa from tableB)));

3/ Update dữ liệu bảng A có nguồn từ bảng B với điều kiện dữ liệu có cùng khóa nhưng khác các nội dung khác
Ví dụ:
Mã:
UPDATE TableA INNER JOIN TableB ON TableA.khoa = TableB.khoa SET TableB.noidung = tableA.noidung
WHERE (((TableB.noidung)<>[tableA].[noidung]));
Xem file
https://dl.dropbox.com/u/38360355/Access/dongbo.zip
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn qhuyhh117 , duyennguyen2008 , sorryikillyo , Che_Guevara
#3
Cảm ơn bạn.
Chắc do mình diễn đạt chưa đúng.
VD: Mình có bảng A gồm nhiều trường, nhưng không có trường nào là khóa chính.
Mong muốn của mình là: Lưu trữ dữ liệu của bảng A sang một bảng B khi có bất khi A có bất kì thay đổi nào.
Chẳng hạn: Khi thay đổi giá trị trên các record hoặc thêm các record mới ở A.
Tuy nhiên, yêu cầu ở B là không được chứa các record giống nhau.
Có thể nói: B là bảng chứa dữ liệu lưu trữ của A theo thời gian.
Các bạn giúp mình nhé.
Chữ ký của qhuyhh117 Xin chào, mình là qhuyhh117, Tham gia http://thuthuataccess.com/forum từ ngày 11-11 -12.
Reply
Những người đã cảm ơn
#4
(13-11-12, 11:26 AM)qhuyhh117 Đã viết: Cảm ơn bạn.
Chắc do mình diễn đạt chưa đúng.
VD: Mình có bảng A gồm nhiều trường, nhưng không có trường nào là khóa chính.
Mong muốn của mình là: Lưu trữ dữ liệu của bảng A sang một bảng B khi có bất khi A có bất kì thay đổi nào.
Chẳng hạn: Khi thay đổi giá trị trên các record hoặc thêm các record mới ở A.
Tuy nhiên, yêu cầu ở B là không được chứa các record giống nhau.
Có thể nói: B là bảng chứa dữ liệu lưu trữ của A theo thời gian.
Các bạn giúp mình nhé.

Theo mình bạn dùng make table thì nó sẽ tạo dữ liệu của bảng ban đầu sau đó nó sẽ tạo ra 1 bảng mang tên định trước chứa dữ liệu giống như bảng a, mà nó ko có lặp lại gì cả!
file ví dụ http://quan100157.host22.com/up/file/qua...aochep.rar big green
Chữ ký của quan_pc Lắp đặt Internet VNPT tại Điện Bàn - Quảng Nam - Hotline: 0915.636.745
ღღღღღTài sản của quan_pc (View All Items) ღღღღღ
Reply
Những người đã cảm ơn qhuyhh117
#5
Nếu vậy thì đơn giản quá.
Quan trọng là cần backup chỉ những dữ liệu đã thay đổi từ bảng A sang bảng B.
Chứ làm như bạn thì hai bảng lúc nào cũng giống nhau mất.
Các bạn hiểu cho mình nhé, mình ví dụ này:
Bảng A chứa các trường là: MHS, Ho, Ten, Thang, tienhocphi
Bảng chứa 3 records:
001 Nguyen Van A 10 100.000
002 Nguyen Van B 10+11 200.000
003 Nguyen Văn C 10 100.000
Tháng 10: Mình dùng Query để lưu trữ dữ liệu từ bảng A sang Bảng B, dễ dàng có:
Bảng B:
001 Nguyen Van A 10 100.000
002 Nguyen Van B 10+11 200.000
003 Nguyen Văn C 10 100.000
Tuy nhiên, sang tháng 11, dữ liệu của bảng A được làm lại như sau:
Bảng A:
001 Nguyen Van A 11 100.000
002 Nguyen Van B 10+11 200.000
003 Nguyen Van C 11 100.000
004 Nguyen Van D 11 100.000
Mong muốn của mình là lưu trữ các dữ liệu thay đổi từ bảng A sang bảng B.
Tức kết quả ở bảng B phải là:
Bảng B:
001 Nguyen Van A 10 100.000
002 Nguyen Van B 10, 11 200.000
003 Nguyen Văn C 10 100.000
001 Nguyen Van A 11 100.000
003 Nguyen Van C 11 100.000
004 Nguyen Van D 11 100.000

Còn nếu mình dùng Append Query (không có điều kiện gì) thì sẽ được bảng B là:

001 Nguyen Van A 10 100.000
002 Nguyen Van B 10+11 200.000
003 Nguyen Văn C 10 100.000
001 Nguyen Van A 11 100.000
002 Nguyen Van B 10+11 200.000
003 Nguyen Van C 11 100.000
004 Nguyen Van D 11 100.00
Ở đây có hai record là (002 Nguyen Van B 10, 11 200.000) trùng nhau. Mà điều này mình không muốn.

Vì ghi luôn thế này cho tiện, sợ đưa file Access lên mọi người khó hiểu.
Phải làm như thế nào, mọi người giúp mình nhé. 038
Chữ ký của qhuyhh117 Xin chào, mình là qhuyhh117, Tham gia http://thuthuataccess.com/forum từ ngày 11-11 -12.
Reply
Những người đã cảm ơn
#6
(13-11-12, 12:38 PM)qhuyhh117 Đã viết: Nếu vậy thì đơn giản quá.
Quan trọng là cần backup chỉ những dữ liệu đã thay đổi từ bảng A sang bảng B.
Chứ làm như bạn thì hai bảng lúc nào cũng giống nhau mất.
Các bạn hiểu cho mình nhé, mình ví dụ này:
Bảng A chứa các trường là: MHS, Ho, Ten, Thang, tienhocphi
Bảng chứa 3 records:
001 Nguyen Van A 10 100.000
002 Nguyen Van B 10+11 200.000
003 Nguyen Văn C 10 100.000
Tháng 10: Mình dùng Query để lưu trữ dữ liệu từ bảng A sang Bảng B, dễ dàng có:
Bảng B:
001 Nguyen Van A 10 100.000
002 Nguyen Van B 10+11 200.000
003 Nguyen Văn C 10 100.000
Tuy nhiên, sang tháng 11, dữ liệu của bảng A được làm lại như sau:
Bảng A:
001 Nguyen Van A 11 100.000
002 Nguyen Van B 10+11 200.000
003 Nguyen Van C 11 100.000
004 Nguyen Van D 11 100.000
Mong muốn của mình là lưu trữ các dữ liệu thay đổi từ bảng A sang bảng B.
Tức kết quả ở bảng B phải là:
Bảng B:
001 Nguyen Van A 10 100.000
002 Nguyen Van B 10, 11 200.000
003 Nguyen Văn C 10 100.000
001 Nguyen Van A 11 100.000
003 Nguyen Van C 11 100.000
004 Nguyen Van D 11 100.000

Còn nếu mình dùng Append Query (không có điều kiện gì) thì sẽ được bảng B là:

001 Nguyen Van A 10 100.000
002 Nguyen Van B 10+11 200.000
003 Nguyen Văn C 10 100.000
001 Nguyen Van A 11 100.000
002 Nguyen Van B 10+11 200.000
003 Nguyen Van C 11 100.000
004 Nguyen Van D 11 100.00
Ở đây có hai record là (002 Nguyen Van B 10, 11 200.000) trùng nhau. Mà điều này mình không muốn.

Vì ghi luôn thế này cho tiện, sợ đưa file Access lên mọi người khó hiểu.
Phải làm như thế nào, mọi người giúp mình nhé. 038

Của bạn đây:
INSERT INTO B ( MHS, Ho, Ten, Thang, Tienhocphi )
SELECT A.MHS, A.Ho, A.Ten, A.Thang, A.Tienhocphi
FROM A
WHERE (((A.Thang) Not In (SELECT B.Thang
FROM B)));
034034034
Chữ ký của trungn077 Xin chào, mình là trungn077, Tham gia http://thuthuataccess.com/forum từ ngày 09-07 -12.
ღღღღღTài sản của trungn077 (View All Items) ღღღღღ
Reply
Những người đã cảm ơn qhuyhh117
#7
Với các làm của bạn thì thêm được record thay đổi tháng.Chứ record (004 ....) không thấy xuất hiện trong bảng B.
Mình làm thấy vậy. Không biết thế nào nữa....021
Chữ ký của qhuyhh117 Xin chào, mình là qhuyhh117, Tham gia http://thuthuataccess.com/forum từ ngày 11-11 -12.
Reply
Những người đã cảm ơn
#8
Bạn nào giúp mình với. Vấn đề vẫn chưa được giải quyết....
Chữ ký của qhuyhh117 Xin chào, mình là qhuyhh117, Tham gia http://thuthuataccess.com/forum từ ngày 11-11 -12.
Reply
Những người đã cảm ơn
#9
post file có dữ liệu mẫu lên đi, mình làm cho. Lười làm file lại quá! big green
Hướng:
Cho left join hết các record từ A->B
Điều kiệu các record bên B là null
Chạy hàm Append là ok
Chữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn qhuyhh117
#10
Theo minh hieu thi ban dang muon quan ly tien hoc phi, nhung filed Thang ban lai co 10+11 thi rat kho cho viec su dung query de tim kiem (vd chua dong hoc phi Thang 10). Neu day la bai tap thi ban tim bai cua Noname ve Appent query tren dien dan nhe.
Chữ ký của cpucloi Tôi chỉ biết mỗi một điều là những điều tôi biết được còn quá ít 021
Gmail: cgiahuy13@gmail.com


ღღღღღTài sản của cpucloi (View All Items) ღღღღღ
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Lọc query có điều kiện để tạo report honglv157 3 155 01-12-16, 05:15 PM
Bài mới nhất: maidinhdan
  [Help] Xin giúp đỡ về sử dụng hàm Dlookup với nhiều điều kiện dangh5 1 72 30-11-16, 10:44 PM
Bài mới nhất: dangh5
  [Help] ẩn nút ""Close Windown" khi mở query tronghieu9792 4 85 30-11-16, 09:36 PM
Bài mới nhất: tronghieu9792
Question [Help] Cần giúp đỡ tạo query lấy giá trị của dòng liền trước để tính giá trị trung bình luonguct 4 87 23-11-16, 12:33 AM
Bài mới nhất: luonguct
  Hướng Dẫn hướng dẫn làm query tieuho828 6 146 21-11-16, 12:36 AM
Bài mới nhất: toancvp

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ