Cuong Servenet > 14-05-19, 03:19 PM
paulsteigel > 14-05-19, 06:35 PM
(14-05-19, 03:19 PM)Cuong Servenet Đã viết: Anh chị cho em hỏi có cách nào để xóa nhiều dòng dữ liệu 1 lúc mà chỉ hiện 1 msgbox Yes - Cancel không ạ ?
hiện tại code bên dưới khi bấm nút DELETE trên bàn phím thì xóa từng dòng 1 thì msgbox không có vấn đề gì cả .
Nhưng khi xóa từ 2 dòng trở đi thì msgbox xác nhận nó lặp đi lặp lại nhiều lần
Vậy có cách nào để giải quyết vấn đề "Chỉ 1 msgbox xác nhận là xóa dc nhiều dòng trong form ko vậy a?"
Code :
Private plngDelSelCnt As Variant
Private Sub Form_BeforeDelConfirm(Cancel As Integer, Response As Integer)
Response = acDataErrContinue
End Subt
Private Sub Form_Delete(Cancel As Integer)
plngDelSelCnt = Me.SelHeight
If MsgBox(plngDelSelCnt & " Xoa" & vbCrLf & _
"xac nhan xoa", vbOKCancel) = vbCancel Then
Cancel = True
End If
End Sub
tranthanhan1962 > 15-05-19, 05:06 PM
tranthanhan1962 > 15-05-19, 05:07 PM
Cuong Servenet > 16-05-19, 08:30 AM
(15-05-19, 05:07 PM)tranthanhan1962 Đã viết: Thực ra bạn sử dụng lệnh xóa trên button trên form nên chỉ xóa được một record mà thôi.
Nếu bạn đã có code BeforeDelConfirm và thiết kế form với record selectors = yes
Private Sub Form_BeforeDelConfirm(Cancel As Integer, Response As Integer)
Dim TraLoi As Integer
Response = acDataErrContinue
TraLoi = MsgBox("Xác nhận xóa", vbQuestion + vbYesNo, "Thông báo")
If TraLoi = vbNo Then
Cancel = True
End If
End Sub
Khi đã đưa phần thông báo vào BeforeDelConfirm, code nút xóa (cmdDel) đơn giản hơn
[i] Private Sub cmdDel_Click()
[/i]
DoCmd.RunCommand acCmdDeleteRecord
[i]End Sub[/i]
Lúc này, chỉ cần bạn quét các dòng record liện tục và bấm delete nó cũng chỉ hiện thông báo một lần, nếu bạn yes nó sẽ xóa tất tần tật những record mà bạn đã chọn, nên nhớ, nó chỉ xóa hết khi bạn dùng nút delete trên bàn phím còn nếu bạn sử dụng button xóa trên form nó cũng chỉ xóa 1 record đầu tiên trên nhóm record mà bạn chọn
tranthanhan1962 > 16-05-19, 11:18 AM
(16-05-19, 08:30 AM)Cuong Servenet Đã viết: cái form của em thì ko thiết kế nút xóa mà thay vào đó dùng nút Delete trên keyboard ạKhi bạn đưa code gọi msgbox vào thủ tục (procedure) Form_Delete và sử dụng phím delete xóa một nhóm record, access sẽ thực hiện bấy nhiêu thủ tục xóa lần lượt từng record một, vì trong thủ tục Form_Delete có chứa dòng lệnh gọi msgbox nên mỗi lần xóa một record thì nó sẽ thực hiện lệnh gọi msgbox một lần, nên xóa bao nhiêu record nó sẽ hiện lên bấy nhiêu msgbox, còn khi bạn đưa công việc gọi msgbox cho BeforeDelConfirm (xác nhận trước khi xóa) thì sau khi xác nhận một lần cho việc xóa các record được chọn đó thì công việc của lệnh Form_Delete chỉ còn là việc xóa hoặc không xóa các record đó, vì trong thủ tục này không có lệnh gọi msgbox.
khi dùng cách đó thì mình chọn 1 dòng xóa thì ko vấn đề gì cả nhưng khi chọn nhiều dòng dữ liệu xóa thì nó hiện thông báo tin yes-no nhiều lần .
Cuong Servenet > 24-05-19, 02:45 PM
(16-05-19, 11:18 AM)tranthanhan1962 Đã viết:(16-05-19, 08:30 AM)Cuong Servenet Đã viết: cái form của em thì ko thiết kế nút xóa mà thay vào đó dùng nút Delete trên keyboard ạKhi bạn đưa code gọi msgbox vào thủ tục (procedure) Form_Delete và sử dụng phím delete xóa một nhóm record, access sẽ thực hiện bấy nhiêu thủ tục xóa lần lượt từng record một, vì trong thủ tục Form_Delete có chứa dòng lệnh gọi msgbox nên mỗi lần xóa một record thì nó sẽ thực hiện lệnh gọi msgbox một lần, nên xóa bao nhiêu record nó sẽ hiện lên bấy nhiêu msgbox, còn khi bạn đưa công việc gọi msgbox cho BeforeDelConfirm (xác nhận trước khi xóa) thì sau khi xác nhận một lần cho việc xóa các record được chọn đó thì công việc của lệnh Form_Delete chỉ còn là việc xóa hoặc không xóa các record đó, vì trong thủ tục này không có lệnh gọi msgbox.
khi dùng cách đó thì mình chọn 1 dòng xóa thì ko vấn đề gì cả nhưng khi chọn nhiều dòng dữ liệu xóa thì nó hiện thông báo tin yes-no nhiều lần .
* Thứ tự các thủ tục khi xóa record
BeforeDelConfirm: Thủ tục trước khi xóa, nhằm xử lý một công việc trước khi record: hỏi xóa hay không? lưu các record bị xóa sang table khác....
Form_Delete(Cancel As Integer): thủ tục khi xóa, một công việc cùng lúc với việc xóa record
Form_AfterDelConfirm(Status As Integer): thủ tục thực hiện sau khi xóa. requery một đối tượng nào đó, di chuyển trỏ chuột đến vị trí nào đó sau khi xóa...
* Khi dùng phím delete mà không cần gọi lệnh gì thêm thì không cần sử dụng thủ tục Form_Delete vì nó cùng bản chất.
tranthanhan1962 > 27-05-19, 04:11 PM