Xóa record trong Table có điều kiện trong file Acess

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

syquyen1987

Thành viên hoạt động
Tham gia
8/7/18
Bài viết
194
Được thích
43
Kính gửi các Anh,

Em có một file Access có 2 table: Table1 và Table2. Table1 liên kết với Table2 với trường có tên là MaCOC, kiểu liên kết là 1 và vô cùng (số liệu MaCOC của Table1 không thể trùng nhau, còn số liệu MaCOC của Table2 trùng nhau)
Như hình bên dưới, MaCOC của Table1 có số liệu nhưng lại không có số liệu ở Table2. Em muốn xin code để xóa Record này trong Table1 thì làm thế nào ạ
Em xin chân thành cảm ơn ạ!

1691705441841.png
 
Lần chỉnh sửa cuối:
Kính gửi các Anh,

Em có một file Access có 2 table: Table1 và Table2. Table1 liên kết với Table2 với trường có tên là MaCOC, kiểu liên kết là 1 và vô cùng (số liệu MaCOC của Table1 không thể trùng nhau, còn số liệu MaCOC của Table2 trùng nhau)
Như hình bên dưới, MaCOC của Table1 có số liệu nhưng lại không có số liệu ở Table2. Em muốn xin code để xóa Record này trong Table1 thì làm thế nào ạ
Em xin chân thành cảm ơn ạ!

View attachment 293700
Dùng ADODB, sau đó câu SQL là
Delete * From Table1 Where Mã COC like "FP-2023-07-0049";

Còn xoá hết các record không có trong Table2 thì
Delete * From Table1 Where Mã COC not in (select distinct Mã COC From Table2);
 
Dùng ADODB, sau đó câu SQL là
Delete * From Table1 Where Mã COC like "FP-2023-07-0049";

Còn xoá hết các record không có trong Table2 thì
Delete * From Table1 Where Mã COC not in (select distinct Mã COC From Table2);
Tôi nhớ là Mã COC phải bọc bằng dấu ngoặc vuông [Mã COC] chứ nhỉ?
 
Em có một file Access có 2 table: Table1 và Table2. Table1 liên kết với Table2 với trường có tên là MaCOC, kiểu liên kết là 1 và vô cùng (số liệu MaCOC của Table1 không thể trùng nhau, còn số liệu MaCOC của Table2 trùng nhau)
Như hình bên dưới, MaCOC của Table1 có số liệu nhưng lại không có số liệu ở Table2. Em muốn xin code để xóa Record này trong Table1 thì làm thế nào ạ
Bạn nói rõ thêm cách thức bạn đang muốn xử lý thì mới ra qui trình xử lý phù hợp được.
- Bạn muốn xoá 1 record chỉ định rõ? Ví dụ: click chọn record đó rồi bấm xoá
- Hay bạn muốn dọn rác table, xoá một lúc toàn bộ các record không có phát sinh ở Table 2?
Thông thường, đối với tôi thì khi "Xoá" một record nào đó tôi sẽ kiểm tra tất cả các table liên quan xem có phát sinh giao dịch (transaction) với cái mã muốn xoá hay không rồi mới dám xoá. Ví dụ: có kết chuyển tồn kho chưa, có khoá sổ đối với chứng từ này chưa, có thanh toán, giảm trừ công nợ v.v.. hay chưa, nếu có thì phải xử lý bằng nghiêp vụ khác như xuất phiếu điều chỉnh với số âm v.v..


@Maika8008: Tên Field hiển thị trong Table bác thấy có dấu là do có thêm Caption trong thiết kế Table chứ tên Field gốc không được phép là tiếng Việt có dấu.

@syquyen1987: Tôi thường không ủng hộ cách thêm Caption tiếng Việt này vì nó sẽ gây khó khăn hợn khi code vì phải nhớ tên Field gốc. Table chỉ để cho người lập trình xem chứ không phải người dùng nên có dấu tiếng Việt làm gì??
 
Lần chỉnh sửa cuối:
Dùng ADODB, sau đó câu SQL là
Delete * From Table1 Where Mã COC like "FP-2023-07-0049";

Còn xoá hết các record không có trong Table2 thì
Delete * From Table1 Where Mã COC not in (select distinct Mã COC From Table2);
Bạn nói rõ thêm cách thức bạn đang muốn xử lý thì mới ra qui trình xử lý phù hợp được.
- Bạn muốn xoá 1 record chỉ định rõ? Ví dụ: click chọn record đó rồi bấm xoá
- Hay bạn muốn dọn rác table, xoá một lúc toàn bộ các record không có phát sinh ở Table 2?
Thông thường, đối với tôi thì khi "Xoá" một record nào đó tôi sẽ kiểm tra tất cả các table liên quan xem có phát sinh giao dịch (transaction) với cái mã muốn xoá hay không rồi mới dám xoá. Ví dụ: có kết chuyển tồn kho chưa, có khoá sổ đối với chứng từ này chưa, có thanh toán, giảm trừ công nợ v.v.. hay chưa, nếu có thì phải xử lý bằng nghiêp vụ khác như xuất phiếu điều chỉnh với số âm v.v..


@Maika8008: Tên Field hiển thị trong Table bác thấy có dấu là do có thêm Caption trong thiết kế Table chứ tên Field gốc không được phép là tiếng Việt có dấu.

@syquyen1987: Tôi thường không ủng hộ cách thêm Caption tiếng Việt này vì nó sẽ gây khó khăn hợn khi code vì phải nhớ tên Field gốc. Table chỉ để cho người lập trình xem chứ không phải người dùng nên có dấu tiếng Việt làm gì??
Dạ thưa anh. Mã COC là hiển thị bởi Caption, còn tên đặt của nó là COCID ạ
1691745673160.png1691745694231.png

Như hình ảnh, Table2 không có mã COC: FP-2023-07-0049, mà Table1 có cái mã COC này, em muốn là tự động kiểm tra và xóa những mã COC trong Table1 mà ở Table2 không có ạ. Em xin cảm ơn ạ
Bài đã được tự động gộp:

Dùng ADODB, sau đó câu SQL là
Delete * From Table1 Where Mã COC like "FP-2023-07-0049";

Còn xoá hết các record không có trong Table2 thì
Delete * From Table1 Where Mã COC not in (select distinct Mã COC From Table2);
Delete * From Table1 Where Mã COC not in (select distinct Mã COC From Table2);
Cảm ơn anh ạ, em đã thành công với Code này ạ.
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom