-
Cập nhật giá trị tính toán vào bảng
tvn_hut > 03-04-21, 02:16 PM
Hi bro.
Mình có 2 bảng. Muốn lấy điều kiện tính toán từ 1 bảng rồi cập nhật vào 1 bảng khác. Code mình viết như sau:
1 bảng TblOutput có các trường [Process], [POnumber], [OKQty]
1 bảng TblPO có các trường [ActualQty], [POID]
Mình muốn khi mở Subform lấy giá trị từ bảng TblPO, sẽ tự động tính toán cho trường [ActualQty] theo điều kiện "Final_Inspection" và [PONumber] =[POID] từ bảng TblOutput
Tuy nhiên khi mở form, hệ thống ko báo lỗi nhưng cũng ko cập nhật đc kết quả. Mong các bro giúp đỡ.
Code
Private Sub Form_Load()
On Error GoTo ErrorHandler
Dim sql As String
Dim rs As DAO.Recordset
sql = "SELECT * FROM TblPO where lock = No"
Set rs = CurrentDb.OpenRecordset(sql)
With rs
If Not .BOF And Not .EOF Then
If .Updatable Then
.Edit
![ActualQty] = DSum("[OKQty]", "TblOutput", "[Process]='Final_Inspection'" And "[PONumber]= Me.POID")
.Update
End If
End If
.Close
End With
ExitSub:
Set rs = Nothing
Exit Sub
ErrorHandler:
Resume ExitSub
End Sub -
RE: Cập nhật giá trị tính toán vào bảng
tvn_hut > 05-04-21, 12:42 PM
(04-04-21, 01:44 PM)ongke0711 Đã viết:
(03-04-21, 02:16 PM)tvn_hut Đã viết: ...
Sửa dòng này:
Mã PHP:DSum("[OKQty]", "TblOutput", "[Process]='Final_Inspection' And [PONumber]= " & Me.POID)
Cám ơn Ongke 0711 nhiều. mình đã sửa đúng cú pháp. Nhưng khi chạy thì nó chỉ cho kết quả dòng đầu tiên. các dòng tiếp theo ko có kết quả. Mình check lại code và viết lại thì lại cho kết quả giống hết với dòng đầu. Không rõ vòng chạy nó có vấn đề gì ko? bác nào có kinh nghiệm giúp em nhé.
Private Sub Form_Load()
Dim rs As Recordset
Dim CauSQL As String
Sql = "SELECT * FROM tblPO WHERE Lock=false"
Set rs = CurrentDb.OpenRecordset(sql)
If rs.RecordCount > 0 Then
rs.MoveFirst
Do Until rs.EOF
rs.Edit
rs!ActualQty = DSum("OKQty", "tblOutput", "Process='Final_Inspection' AND PONumber=" & Me.POID)
rs.Update
rs.MoveNext
Loop
End If
rs.Close
End Sub -
RE: Cập nhật giá trị tính toán vào bảng
ongke0711 > 05-04-21, 01:40 PM
(05-04-21, 12:42 PM)tvn_hut Đã viết: ... Nhưng khi chạy thì nó chỉ cho kết quả dòng đầu tiên. các dòng tiếp theo ko có kết quả. Mình check lại code và viết lại thì lại cho kết quả giống hết với dòng đầu. Không rõ vòng chạy nó có vấn đề gì ko? bác nào có kinh nghiệm giúp em nhé.
Bài trước tôi chỉ sửa cú pháp cho hàm DSUM() của bạn. Khi ráp vô vòng lặp, bạn muốn tham số nào chạy theo vòng lặp thì phải thay nó chứ.
Cụ thể ở đây là chạy theo [POID], khi đưa vô vòng lặp thì đâu thể tham chiếu đến giá trị POID cố định trên Form??? (Me.POID)
rs!ActualQty = DSum("OKQty", "tblOutput", "Process='Final_Inspection' AND PONumber=" & rs!POID)