Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Tạo nút lệnh trên main-sub form
#1
Nhờ các bạn giúp đỡ với
Mình muốn tạo nút lệnh trên main form, khi click vào sẽ xóa record ở subform thì phải làm thế nào.
Cám ơn các bạn
Chữ ký của mrtula Xin chào, mình là mrtula, Tham gia http://thuthuataccess.com/forum từ ngày 24-04 -13.
Reply
Những người đã cảm ơn
#2
Bạn tạo 1 cái nút, rồi viết code cho nó khi click vào như sau:

Mã:
private sub Nut_Click()
CurentDb.Execute("DELETE * FROM [Table của form phụ] WHERE [ID liên kêt form chính]=" & ID form chính)
end sub
ღღღღღTài sản của bomnhauag (View All Items) ღღღღღ
Reply
Những người đã cảm ơn mrtula
#3
(09-05-13, 04:22 PM)bomnhauag Đã viết: Bạn tạo 1 cái nút, rồi viết code cho nó khi click vào như sau:

Mã:
private sub Nut_Click()
CurentDb.Execute("DELETE * FROM [Table của form phụ] WHERE [ID liên kêt form chính]=" & ID form chính)
end sub

Mình đã làm giống như bạn hướng dẫn mà sao ko được, mình viết như sau:

private sub XoaTienTra_Click()
CurentDb.Execute("DELETE * FROM [TheodoicongnoNCC] WHERE [SoPhieuNhap]=" & SoPhieuNhap)
end sub

Trong đó, TheodoicongnoNCC là table với 3 trường: Số phiếu nhập, ngày trả tiền và số tiền trả. Còn Form chính mình dùng Query.
Chữ ký của mrtula Xin chào, mình là mrtula, Tham gia http://thuthuataccess.com/forum từ ngày 24-04 -13.
Reply
Những người đã cảm ơn
#4
Bạn hãy gửi file dữ liệu lên đây. Mọi người sẽ giúp.
Hướng dẫn của bạn bomnhauag là đúng hướng rồi, tuy nhiên, cần có thêm một lệnh để làm cho dữ liệu tươi lại (Refresh).
Ví dụ FrmSub.rowsource.requery sau khi thực hiện xóa.
Ngoài ra, để thủ tục này thực hiện được thì bạn cần đặt tham chiếu đến bộ thi viện DAO.
Mã PHP:
private sub XoaTienTra_Click()
CurentDb.Execute("DELETE * FROM [TheodoicongnoNCC] WHERE [SoPhieuNhap]=" SoPhieuNhap)
end sub 
Trong trường hợp không muốn dùng thư viện DAO thì phải dùng ADO với dạng sau
CurrentProject.Connection.Execute thay cho CurrentDB nhé.
Chữ ký của paulsteigel ====================
Quốc gia hưng vong
Thất phu hữu trách
====================
Reply
Những người đã cảm ơn Che_Guevara
#5
(10-05-13, 08:07 PM)paulsteigel Đã viết: Bạn hãy gửi file dữ liệu lên đây. Mọi người sẽ giúp.
Hướng dẫn của bạn bomnhauag là đúng hướng rồi, tuy nhiên, cần có thêm một lệnh để làm cho dữ liệu tươi lại (Refresh).
Ví dụ FrmSub.rowsource.requery sau khi thực hiện xóa.
Ngoài ra, để thủ tục này thực hiện được thì bạn cần đặt tham chiếu đến bộ thi viện DAO.
Mã PHP:
private sub XoaTienTra_Click()
CurentDb.Execute("DELETE * FROM [TheodoicongnoNCC] WHERE [SoPhieuNhap]=" SoPhieuNhap)
end sub 
Trong trường hợp không muốn dùng thư viện DAO thì phải dùng ADO với dạng sau
CurrentProject.Connection.Execute thay cho CurrentDB nhé.

Bài của mình đây, bạn xem giúp mình: https://www.dropbox.com/s/4nm8c9b6btu18te/Chuong%20trinh%20quan%20ly%20cua%20hang%203-2_NCC.accdb
Form Tra tien nhap hang nha.
Chữ ký của mrtula Xin chào, mình là mrtula, Tham gia http://thuthuataccess.com/forum từ ngày 24-04 -13.
Reply
Những người đã cảm ơn
#6
Đây bài trả lời của bạn đây...
http://www.sfdp.net/documents/qlCuahang....ects=0&d=1
Bạn mới dùng Access nên cách đặt tên đối tượng cũng như lô gic thiết kế còn nhiều vấn đề lắm. Mình đã xóa form cũ của bạn và thay thế bằng frmTratien. Hãy xem nút Xóa và Thoát. Bạn bảo thoát và lưu thế nhưng xem code thì chả thấy lưu đâu cả (trong Macro của bạn). Mình sửa thành code vì mình không quen dùng Macro và cũng không thích dùng!
Mã PHP:
Private Sub cmdDelete_Click()
    
' Kiem tra xem co dang chon 1 record nao tren subform khong
    If Nz(Me.frmTrackingSub.Form.SoPhieuNhap, 0) = 0 Then Exit Sub
    If MsgBox("Ban chac chan muon xoa chu?", vbQuestion + vbYesNo) = vbNo Then Exit Sub
    CurrentProject.Connection.Execute "Delete * from [Theo doi cong no NCC] where SoPhieuNhap = '" & SoPhieuNhap & "';"
    Me.Requery
    frmTrackingSub.Form.Requery
End Sub 
Mình viết code để thực hiện thao tác xóa như vậy đấy. Nếu muốn học access để thiết kế được ứng dụng tốt thì bạn nên học lập trình nhé!
Chữ ký của paulsteigel ====================
Quốc gia hưng vong
Thất phu hữu trách
====================
Reply
Những người đã cảm ơn Noname
#7
(10-05-13, 09:23 PM)paulsteigel Đã viết: Đây bài trả lời của bạn đây...
http://www.sfdp.net/documents/qlCuahang....ects=0&d=1
Bạn mới dùng Access nên cách đặt tên đối tượng cũng như lô gic thiết kế còn nhiều vấn đề lắm. Mình đã xóa form cũ của bạn và thay thế bằng frmTratien. Hãy xem nút Xóa và Thoát. Bạn bảo thoát và lưu thế nhưng xem code thì chả thấy lưu đâu cả (trong Macro của bạn). Mình sửa thành code vì mình không quen dùng Macro và cũng không thích dùng!
Mã PHP:
Private Sub cmdDelete_Click()
    
' Kiem tra xem co dang chon 1 record nao tren subform khong
    If Nz(Me.frmTrackingSub.Form.SoPhieuNhap, 0) = 0 Then Exit Sub
    If MsgBox("Ban chac chan muon xoa chu?", vbQuestion + vbYesNo) = vbNo Then Exit Sub
    CurrentProject.Connection.Execute "Delete * from [Theo doi cong no NCC] where SoPhieuNhap = '" & SoPhieuNhap & "';"
    Me.Requery
    frmTrackingSub.Form.Requery
End Sub 
Mình viết code để thực hiện thao tác xóa như vậy đấy. Nếu muốn học access để thiết kế được ứng dụng tốt thì bạn nên học lập trình nhé!

Xin chân thành cám ơn sự giúp đỡ của paulsteigel. Mình đã xem file bạn làm giúp mình, rất ok nhưng mình vẫn chưa hiểu lắm; bạn giải thích rõ hơn giúp mình nha.
Form mình làm, có vấn đề gì mà bạn không thể sử dụng được mà phải thay thế bằng form mới bạn làm frmTratien? Mình chép code của bạn vào file của mình thì lệnh không chạy được?
Mình mới sử dụng access và tự mò nên còn nhiều cái chưa biết. Bạn thông cảm.
Chữ ký của mrtula Xin chào, mình là mrtula, Tham gia http://thuthuataccess.com/forum từ ngày 24-04 -13.
Reply
Những người đã cảm ơn
#8
Mình ghét Office 2007 trở lên nên vẫn dùng Office 2003.
Lý do của việc phải dùng form do mình tạo là vì trong CSDL của bạn có lỗi (cái này thì Access hay gặp)
Từ Access 2007 trở đi, Microsoft dùng Macro Nhúng trong form và thông tin của nó được đặt trong 1 bảng hệ thống. Mỗi khi bảng hệ thống có lỗi, bạn sẽ gặp vấn đề mất tham chiếu đến bộ thư viện kích hoạt Macro trong khi form bạn tạo vẫn để chế độ OnOpen trỏ về Macro không còn tồn tại trong CSDL.
Khi tôi viết Sự kiện cho nút bấm, mặc dù thủ tục OnClick trỏ về thủ tục nhưng Access vẫn thực hiện tìm Macro của bạn (lúc này không còn tồn tại nữa).
Vì thế sẽ phát sinh lỗi khi tôi nhấn nút Xóa.

Do đó, mình phải thiết kế một form mới để Access không còn sử dụng đến tham chiếu Macro cũ nữa.
Dùng Macro thì chỉ dành cho những người mới bắt đầu vì nó dễ dùng nhưng khi cần tương tác sâu hơn với hệ thống thì không xong.
Vì vậy, tôi nghĩ bạn nên dành thêm chút thời gian học về cách viết chương trình bằng mã nguồn như tôi vừa làm.
Thân
Chữ ký của paulsteigel ====================
Quốc gia hưng vong
Thất phu hữu trách
====================
Reply
Những người đã cảm ơn mrtula , Noname


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Hỏi] Mở form có điều kiện. Các bác giúp em với! cannguyen 3 141 Hôm qua, 09:46 AM
Bài mới nhất: dutuan80637
  [Help] Truy vấn nhiều giá trị, nhập trong 1 textbox duy nhất ở form ckno1no 11 706 23-01-17, 01:32 PM
Bài mới nhất: ckno1no
  [Help] Search dựa trên nhiều tiêu chí Godspear 7 195 20-01-17, 10:55 AM
Bài mới nhất: Godspear
  [Help] khoanh vùng tìm kiếm trong Search Form Godspear 3 149 19-01-17, 05:31 AM
Bài mới nhất: Godspear
  [Hỏi] Tạo Login Form cùng với Advanced Security Level Godspear 10 427 16-01-17, 11:33 AM
Bài mới nhất: Godspear

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ơ