Xóa cùng một lúc 2 record ở 2 table khác nhau

  • Thread starter luisnghia
  • Ngày gửi

5568 lượt xem

L

luisnghia

Sơ cấp
2/12/06
14
0
1
Đà Nẵng
Mình đang làm một đề tài cải tiến cho phòng mình. Tuy nhiên vì mới tìm hiểu ACCESS nên còn rất nhiều vướng mắc
Mình có một form nhập dữ liệu có cả subform. Nay mình muốn khi nhấn nút xóa bản ghi thì sẽ xóa một lúc record của cả 2 table: DSDOANH NGHIEP & cả record bên table DSHS CHUNG.
CẢM ƠN CÁC BẠN RẤT NHIỀU
 

Đính kèm

payment

payment

Trung cấp
18/11/09
122
1
0
BĐ->Tp. Hồ Chí Minh
Mình đang làm một đề tài cải tiến cho phòng mình. Tuy nhiên vì mới tìm hiểu ACCESS nên còn rất nhiều vướng mắc
Mình có một form nhập dữ liệu có cả subform. Nay mình muốn khi nhấn nút xóa bản ghi thì sẽ xóa một lúc record của cả 2 table: DSDOANH NGHIEP & cả record bên table DSHS CHUNG.
CẢM ƠN CÁC BẠN RẤT NHIỀU
File của bạn mình hiện tại mình mở không được cái bạn muốn xóa thì mình đã hiểu: đầu tiên bạn tạo ra 2 query xóa cho 2 bảng sau đó bạn tạo ra một Macro cho cả 2 query này. Bạn thể hiện macro lên menu hoặc thông qua nút lệnh trên forrm. Thế là bạn có thể kích vào xóa 2 bảng này. Chúc bạn thành công.
 
L

luisnghia

Sơ cấp
2/12/06
14
0
1
Đà Nẵng
Cảm ơn bạn đã payment quan tâm trả lời. Vậy bạn có thể cho mình xin câu lệnh macro & làm 1 file ví dụ cụ thể cho mình được ko.
MỘT LẦN NỮA CẢM ƠN BẠN:015::015:
 
H

haquocquan

Sơ cấp
19/4/08
68
0
6
Bắc Giang
Mình đang làm một đề tài cải tiến cho phòng mình. Tuy nhiên vì mới tìm hiểu ACCESS nên còn rất nhiều vướng mắc
Mình có một form nhập dữ liệu có cả subform. Nay mình muốn khi nhấn nút xóa bản ghi thì sẽ xóa một lúc record của cả 2 table: DSDOANH NGHIEP & cả record bên table DSHS CHUNG.
CẢM ƠN CÁC BẠN RẤT NHIỀU
Bạn muốn xóa bản ghi thì phải có tham chiếu (điều kiện) đúng không a?
Bạn tạo một sub đặt dưới cmdclick. Mình chứ viết code, nhưng đại loại là:
Bạn set hai recordset cho hai table trên.
Tiếp tục tìm trong hai recordset đó, nếu gặp record nào phù hợp với điều kiện thì xóa.
 
payment

payment

Trung cấp
18/11/09
122
1
0
BĐ->Tp. Hồ Chí Minh
Bạn muốn xóa bản ghi thì phải có tham chiếu (điều kiện) đúng không a?
Bạn tạo một sub đặt dưới cmdclick. Mình chứ viết code, nhưng đại loại là:
Bạn set hai recordset cho hai table trên.
Tiếp tục tìm trong hai recordset đó, nếu gặp record nào phù hợp với điều kiện thì xóa.
haquocquan ơi, bạn luisnghia hỏi những cái mình nghĩ phần cơ bản của access thôi. Theo mình thì ko cần đặt dưới cmdclick chi cho phức tạp có thể người ta ko thể thực hiện được. Mình chỉ cần tạo query tham chiếu (điều kiện ) rồi tạo tiếp query xóa là được thôi. Mình gởi file mẫu qua Email cho luisnghia tham khảo.
 
H

haquocquan

Sơ cấp
19/4/08
68
0
6
Bắc Giang
haquocquan ơi, bạn luisnghia hỏi những cái mình nghĩ phần cơ bản của access thôi. Theo mình thì ko cần đặt dưới cmdclick chi cho phức tạp có thể người ta ko thể thực hiện được. Mình chỉ cần tạo query tham chiếu (điều kiện ) rồi tạo tiếp query xóa là được thôi. Mình gởi file mẫu qua Email cho luisnghia tham khảo.
Kể cả tạo query, bạn muốn chạy query từ form, thì cũng phải cmdclick. Mình cũng học từ căn bản, nhưng có một vấn đề là trong DB phải tạo ra nhiều object. Cho nên mình có hướng dùng code.
Mình sẽ cố gắng gửi code để các bạn và PRO tham khảo
 
Sửa lần cuối:
L

luisnghia

Sơ cấp
2/12/06
14
0
1
Đà Nẵng
haquocquan ơi, bạn luisnghia hỏi những cái mình nghĩ phần cơ bản của access thôi. Theo mình thì ko cần đặt dưới cmdclick chi cho phức tạp có thể người ta ko thể thực hiện được. Mình chỉ cần tạo query tham chiếu (điều kiện ) rồi tạo tiếp query xóa là được thôi. Mình gởi file mẫu qua Email cho luisnghia tham khảo.
bạn hauocquan oi mình gửi mail reply cho bạn rồi bạn xem giúp mình với
 
H

haquocquan

Sơ cấp
19/4/08
68
0
6
Bắc Giang
bạn hauocquan oi mình gửi mail reply cho bạn rồi bạn xem giúp mình với
Mình không nhận được email của bạn. Bạn làm thế này nhé: bạn có textbox trên form để làm điều kiện (bản ghi phù hợp điều kiện thì xóa),chẳng hạn điều kiện là masodn. Bạn viết code cho một nút lệnh:
Private Sub cmdXoa_Click()
Dim DB as database
Dim RS1 as recordset
Dim RS2 as recordset
Set DB = currentdb()
Set RS1 = DB.Openrecordset("DSDOANHNGHIEP", dbOpentable)
Set RS2 = DB.Openrecordset("DSHSCHUNG", dbOpentable)
' Xóa ở DSDOANHNGHIEP
Do until RS1.EOF
If RS1!masodn = me.textbox.value then
RS.Delete
Endif
Loop

' Xóa ở DSHSCHUNG
Do until RS2.EOF
If RS1!masodn = me.textbox.value then
RS.Delete
Endif
Loop
RS1.Close
Set RS1 = Nothing
RS2.Close
Set RS2 = Nothing
Db.Close
Set BD= Nothing
End Sub

Bạn thử nhé. Mình chưa thử (nhớ sao lưu trước khi thử)
 
L

luisnghia

Sơ cấp
2/12/06
14
0
1
Đà Nẵng
Mình không nhận được email của bạn. Bạn làm thế này nhé: bạn có textbox trên form để làm điều kiện (bản ghi phù hợp điều kiện thì xóa),chẳng hạn điều kiện là masodn. Bạn viết code cho một nút lệnh:
Private Sub cmdXoa_Click()
Dim DB as database
Dim RS1 as recordset
Dim RS2 as recordset
Set DB = currentdb()
Set RS1 = DB.Openrecordset("DSDOANHNGHIEP", dbOpentable)
Set RS2 = DB.Openrecordset("DSHSCHUNG", dbOpentable)
' Xóa ở DSDOANHNGHIEP
Do until RS1.EOF
If RS1!masodn = me.textbox.value then
RS.Delete
Endif
Loop

' Xóa ở DSHSCHUNG
Do until RS2.EOF
If RS1!masodn = me.textbox.value then
RS.Delete
Endif
Loop
RS1.Close
Set RS1 = Nothing
RS2.Close
Set RS2 = Nothing
Db.Close
Set BD= Nothing
End Sub

Bạn thử nhé. Mình chưa thử (nhớ sao lưu trước khi thử)
Cảm ơn bạn nhé. để mình thử xem:1luvu:
 
L

luisnghia

Sơ cấp
2/12/06
14
0
1
Đà Nẵng
Mình không nhận được email của bạn. Bạn làm thế này nhé: bạn có textbox trên form để làm điều kiện (bản ghi phù hợp điều kiện thì xóa),chẳng hạn điều kiện là masodn. Bạn viết code cho một nút lệnh:
Private Sub cmdXoa_Click()
Dim DB as database
Dim RS1 as recordset
Dim RS2 as recordset
Set DB = currentdb()
Set RS1 = DB.Openrecordset("DSDOANHNGHIEP", dbOpentable)
Set RS2 = DB.Openrecordset("DSHSCHUNG", dbOpentable)
' Xóa ở DSDOANHNGHIEP
Do until RS1.EOF
If RS1!masodn = me.textbox.value then
RS.Delete
Endif
Loop

' Xóa ở DSHSCHUNG
Do until RS2.EOF
If RS1!masodn = me.textbox.value then
RS.Delete
Endif
Loop
RS1.Close
Set RS1 = Nothing
RS2.Close
Set RS2 = Nothing
Db.Close
Set BD= Nothing
End Sub

Bạn thử nhé. Mình chưa thử (nhớ sao lưu trước khi thử)
Mình thử rồi mà sao cũng không được. bạn làm thử cho mình 1 file xem thử. mình làm nó bị lỗi hoài:wall:
 
H

haquocquan

Sơ cấp
19/4/08
68
0
6
Bắc Giang
Mình thử rồi mà sao cũng không được. bạn làm thử cho mình 1 file xem thử. mình làm nó bị lỗi hoài:wall:
Xin lỗi nhé, lần trước mình post bị thiếu và chưa chuẩn. Bạn xem lại đoạn code dưới đây nhé:
Private Sub cmdXoa_Click()
Dim DB as database
Dim RS1 as recordset
Dim RS2 as recordset
Set DB = currentdb()
Set RS1 = DB.Openrecordset("DSDOANHNGHIEP")
Set RS2 = DB.Openrecordset("DSHSCHUNG")
' Xóa ở DSDOANHNGHIEP
RS1.movefirst
Do until RS1.EOF
If RS1!masodn = me.textbox.value then
RS1.Delete
Endif
RS1.MoveNext
Loop

' Xóa ở DSHSCHUNG
RS2.Movefirst
Do until RS2.EOF
If RS2!masodn = me.textbox.value then
RS2.Delete
Endif
RS2.MoveNext
Loop
RS1.Close
Set RS1 = Nothing
RS2.Close
Set RS2 = Nothing
Db.Close
Set DB= Nothing
End Sub
 
A

anh phuong

Sơ cấp
15/5/07
60
2
8
Mien Tay
lổi ờ đoạn me.textbox.value!!
"Methol and data member not found"
Bạn phải thay cái từ textbox bằng tên textbox của bạn mới không bị lỗi

Dear haquocquan
Code của bạn vẫn còn dài, bạn nghiên cứu cải tiến lại xem có thể rút ngắn không?
Thân
 
M

mvp2006

Sơ cấp
16/10/08
36
0
0
TPHCM
Bạn phải thay cái từ textbox bằng tên textbox của bạn mới không bị lỗi

Dear haquocquan
Code của bạn vẫn còn dài, bạn nghiên cứu cải tiến lại xem có thể rút ngắn không?
Thân
Chỉ cần 2 dòng code thôi
Private Sub cmdXoa_Click()
CurrentDb.Execute "delete * from DSDOANHNGHIEP where masodn = " & “’” & textbox.value & “‘”
CurrentDb.Execute "delete * from DSHSCHUNG where masodn = " & “’” & textbox.value & “‘”
End sub
Nếu masodn là number thì bỏ các dấu "'"
 
H

haquocquan

Sơ cấp
19/4/08
68
0
6
Bắc Giang
Chỉ cần 2 dòng code thôi
Private Sub cmdXoa_Click()
CurrentDb.Execute "delete * from DSDOANHNGHIEP where masodn = " & “’” & textbox.value & “‘”
CurrentDb.Execute "delete * from DSHSCHUNG where masodn = " & “’” & textbox.value & “‘”
End sub
Nếu masodn là number thì bỏ các dấu "'"
CurrentDb.Execute "delete * from DSDOANHNGHIEP where masodn = " & “’” & me.textbox.value & “‘”
 

Thành viên trực tuyến

Không có thành viên trực tuyến.

Xem nhiều