-
06-13-2015, 06:49 AM #21Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
Xem file nhé. Mấy cái nút giao dịch, hoàn thành thì tự làm được rồi đúng không.
-
06-13-2015, 06:43 PM #22Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
không biết em viết code để update như thế này có đúng ko,. anh kiểm tra dùm em với. nhưng giờ em muốn update cái textbox tổng số tiền vào luôn vào cái table dsthuoc_ban thì làm thế nào hả anh. em gửi file anh viết vào dùm em với.
Private Sub OK_Click()
Dim db As DAO.Database
Dim rs1 As DAO.Recordset, rs2 As DAO.Recordset
Set db = CurrentDb
Set rs1 = db.OpenRecordset("Dsthuoc_kho", dbOpenDynaset)
Set rs2 = db.OpenRecordset("Dsthuoc_ban", dbOpenDynaset)
If rs1.RecordCount <> 0 Then
rs1.MoveFirst
End If
With rs1
Do Until rs1.EOF
.Edit
!soluong = rs1!soluong
!tempx = "0"
.Update
rs1.MoveNext
Loop
End With
rs1.Close
Set rs1 = Nothing
With rs2
.AddNew
!slban = rs2!slban
End With
rs2.Close
Set rs2 = Nothing
End Sub
-
06-14-2015, 06:30 AM #23Junior Member
- Ngày tham gia
- Aug 2015
- Bài viết
- 1
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.
-
06-15-2015, 04:07 AM #24Junior Member
- Ngày tham gia
- Dec 2015
- Bài viết
- 0
file đó em có viết code rồi mà anh, mà không biết có đúng không. để em update lại file này. khi em nhập số liệu vào ô slban thì cột soluong và slban nó chạy thẳng vào table dsthuoc_kho và dsthuoc_ban khi chưa nhấp nút hoàn thành. giờ em muốn khi nhấp nút hoàn thành thì dữ liệu nó mới update vào được không anh. với lại em muốn khi em nhấp nút hoàn thành thì cột thành tiền nó cũng update vào table dsthuoc_ban luôn thì sao hả anh. em chỉ mới học qua access thôi mong anh thông cảm. nói chung em chỉ còn viết code cho cái form ban le nữa là xong. nếu anh viết code form banle giống của bs.quan thì viết dùm em vào file với. nếu anh rảnh thì giúp em, còn không được cũng ko sao. cảm ơn anh nhiều.
-
06-15-2015, 04:52 AM #25Junior Member
- Ngày tham gia
- Dec 2015
- Bài viết
- 8
Tại sao e ko nghĩ khác đi là khi nhấn nút hoàn thành thì chỉ thêm record mới như code a làm ở trên vì đã tự động lưu rồi. Còn nếu ko muốn lưu sẽ bấm nút hủygd hoặc chọn nút X close -> chỉ code cho nút Huỷ gd và áp dụng giống vậy cho nút X thôi.
-
06-15-2015, 05:46 AM #26Junior Member
- Ngày tham gia
- Nov 2015
- Bài viết
- 0
Private Sub slban_BeforeUpdate(Cancel As Integer)
If Me.tempx <> 0 Then
Me.soluong = Me.soluong + Me.tempx - Me.slban
Me.tempx = Me.slban
Me.done = "1"
Else
Me.soluong = Me.soluong - Me.slban
Me.tempx = Me.slban
Me.thanhtien_thuc = Me.slban * Me.dongia
End If
End Sub
-
06-15-2015, 06:42 AM #27Silver member
- Ngày tham gia
- Aug 2015
- Bài viết
- 0
ở cột slban em phải thêm 1 dòng me.done="1" sau else nữa thì thấy nó mới nhảy sang 1. cám ơn anh nhiều. em làm được rồi.
Các mẫu cột cổng đá đẹp nhất được làm từ đá xanh tự nhiên có độ bền coi như vĩnh cửu dù cột đá được đặt ngoài hiên có thể chịu mưa , chịu nắng. Mẫu mã đẹp nhất, chạm khắc hoa văn đẹp, tinh tế. ...
Mẫu mẫu cột cổng đá được làm bằng đá xanh tự nhiên đẹp nhất hiện nay