Đá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
  Tự động hiện Form khi loading hết thời gian ChiMai 1 20 6 Giờ trước
Bài mới nhất: ongke0711
Photo [Hỏi] Mở Form trên access 2007 báo lỗi jason 5 184 22-11-16, 09:23 AM
Bài mới nhất: jason
  Query hiện lên trên form? feeling 4 160 09-11-16, 09:49 PM
Bài mới nhất: toancvp
  [Help] Chỉnh giúp Form thống kê hoanghai902 2 122 28-10-16, 06:15 PM
Bài mới nhất: hoanghai902
  [Help] Dòng chữ chạy trên form báo đến ngày sinh nhật tronghieu9792 1 121 20-10-16, 09:30 AM
Bài mới nhất: lamvankhanh

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ơ