• Cập nhật giá trị tính toán vào bảng
  • 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

    ongke0711 > 04-04-21, 01:44 PM

    (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
  • 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)