File em gửi trống không phần VBA code thì chẳng lẻ anh phải gõ lại hết code từ lúc đầu chỉ em sao? Code từng event đôi khi sẽ liên quan đến nhau, muốn làm event này sẽ là kết quả từ code của event khác.
Trong file này em xác định lại là làm theo kiểu nào? theo các table, query của bsQ hay làm khác đi nhưng nghiệp vụ thì vẫn giữ nguyên?
Nếu làm giống bsQ thì sẽ không dùng table tạm cho Unbound form như anh đề nghị ban đầu. Em phân tích cấu trúc table của bsQ sẽ thấy không có table tạm tức là bsQ thiết kế frmBanLe có recordsource trực tiếp là query banle => các code cho nút [Hoàn Thành] và [HủyGD] sẽ khác. Anh đã viết code lại trong file Database6.accdb đó. Theo cách nhìn của anh qua các table và query thì bsQ sẽ làm như sau:
- Khi chọn [Hoàn thành] sẽ chạy query "saved" và add new record.
- Khi chọn [Hủy] sẽ xóa records trong 2 tables là Dsthuoc_ban và Dsthuoc_kho. Trong Dsthuoc_ban: sẽ xóa các record có dòng done=0, trong Dsthuoc_kho: sẽ xóa các record có field tempx<>0.
- Các event này đều liên quan đến hdID. (Em đã code phần hdID chưa?)
Code nó sẽ là:
--------------------------------------
Private Sub huygd_Click()
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String, strDelete As String
strSQL = "SELECT Dsthuoc_kho.*, Dsthuoc_ban.slban " & _
"FROM Dsthuoc_kho INNER JOIN Dsthuoc_ban ON Dsthuoc_kho.mathuoc = Dsthuoc_ban.mathuoc " & _
"WHERE (((Dsthuoc_kho.tempx)<>0));"
Set db = CurrentDb
Set rs = db.OpenRecordset(strSQL)
If rs.RecordCount <> 0 Then
rs.MoveFirst
End If
With rs
Do Until rs.EOF
.Edit
!soluong = !soluong + !tempx
!tempx = 0
!slban = 0
.Update
.MoveNext
Loop
End With
DoCmd.SetWarnings False
strDelete = "DELETE * FROM Dsthuoc_ban WHERE done=0"
CurrentDb.Execute strDelete
DoCmd.SetWarnings True
Me.List_banle.Form.DataEntry = True
End Sub
------------------------------------
Private Sub ok_Click()
DoCmd.OpenQuery "saved"
Me.List_banle.Form.DataEntry = True
End Sub
-----------------------------------
Còn việc em muốn update textbox thành tiền và Dsthuoc_ban thì dùng macro setvalue hoặc thêm code: Dsthuoc_ban.thanhtien=Me.txtThanhTien. Mấy cái này dễ em tự nghiên cứu thêm đi.