-
Code update dữ liệu từ subform vào table history(có ghi nhận ngày update)
subasatran > 09-07-17, 04:49 PM
Thân chào A/C/E,
Do nhu cầu công việc, mình có làm một file access có form để cập nhật lịch sử kiểm tra trong công việc.
Form access này gồm 2 chức năng.
1. Kiểm tra số lượng tiền của khách hàng theo điều kiện nhập ở form và thể hiện danh sách ở subform.
2. Cập nhật danh sách kiếm tra và update append vào 2 table lịch sử kiếm tra.
Phần 1 mình đã làm được nhưng phần 2 update thì mình ko biết làm. Mong mọi người hướng dẫn và giúp đỡ. Mình có gởi kèm file ví dụ. Rất mong mọi người giúp đỡ.
Tiêu chí update append:
Hai table history có cấu trúc giống subform chi tiết nhưng có thêm một field ngày kiểm tra(Check_trxn_date) để ghi nhận ngày kiểm tra.
Khi Click button Cập nhât History thì sẽ thực hiện thủ tục update Append.
KHi update thì sẽ update append danh sách từ subform vào table history và sẽ update field Check_trxn_date ngày kiểm tra.
Thêm nữa, Ở điều kiện kiểm tra có thể loại kiểm tra(Option group).
Nếu loại kiểm tra là "Kiểm tra lần 1" thì sẽ update vào table History_Check_the_first
Nếu loại kiểm tra là "Kiểm tra lần 2" thì sẽ update vào table History_Check_the_end
Rất mong mọi người giúp đỡ.
Mọi người xem file đính kèm .File mẫu đính kèm. -
RE: Code update dữ liệu từ subform vào table history(có ghi nhận ngày update)
tranthanhan1962 > 09-07-17, 05:18 PM
Có 2 cách:
1/ Không sử dụng nút Update_Check:
Mã:Private Sub Type_AfterUpdate()
Select Case Me.Type
Case 1
update vào table History_Check_the_first
Case 2
update vào table History_Check_the_end
End Select
End Sub
2/ Sử dụng nút Update_Check:
Mã:Private Sub Update_Check_Click()
Select Case Me.Type
Case 1
update vào table History_Check_the_first
Case 2
update vào table History_Check_the_end
End Select
End Sub -
RE: Code update dữ liệu từ subform vào table history(có ghi nhận ngày update)
subasatran > 09-07-17, 05:31 PM
(09-07-17, 05:18 PM)tranthanhan1962 Đã viết: Có 2 cách:
1/ Không sử dụng nút Update_Check:
Mã:Private Sub Type_AfterUpdate()
Select Case Me.Type
Case 1
update vào table History_Check_the_first
Case 2
update vào table History_Check_the_end
End Select
End Sub
2/ Sử dụng nút Update_Check:
Mã:Private Sub Update_Check_Click()
Select Case Me.Type
Case 1
update vào table History_Check_the_first
Case 2
update vào table History_Check_the_end
End Select
End Sub
Cảm ơn anh tranthanhan1962.
Nhưng hình như anh đang hiểu làm ý em rồi.
Ý của em là sau khi submitted button "Xác nhận" thì sẽ có 1 danh sách kiểm tra ở subform.
Từ subform này, mình sẽ Click button "Cập nhât History" để chạy thủ tục update.
Khi chạy thủ tục update, mình sẽ dựa vào tiêu chí kiểm tra để update vào table nào.
Và điều quan trong nhất là hiện tại em ko biết cách update ra sao, code update thế nào và gán field Check_trxn_date là ngày kiếm tra ra sao.
Cám ơn anh đã giúp đỡ. -
RE: Code update dữ liệu từ subform vào table history(có ghi nhận ngày update)
tranthanhan1962 > 09-07-17, 11:18 PM
1/Thực ra cái bạn nói không phải là update mà append. Vì vậy mình không hiểu được ý của bạn.
2/Function BuildFilter bị lỗi ở Me.txt_Date_Check > "" vì so sánh giá trị date với giá trị text.
Có thể thực hiện bắng cách thêm vào query Qr_Summary một field nữa. Ví dụ: (Ở đây mình đưa SQL bạn có thể chuyển đổi thành query)
Table Table_BNS_MGR_SUBSIDY_Update có thêm field Check_trxn_date.Mã:SELECT Table_BNS_MGR_SUBSIDY_Update.AGT_CODE, Table_BNS_MGR_SUBSIDY_Update.Appointment_date, Table_BNS_MGR_SUBSIDY_Update.BNS_VALUE AS BNS_VALUE, Int(Year([Table_BNS_MGR_SUBSIDY_Update].[Appointment_date]) & Format(Month([Table_BNS_MGR_SUBSIDY_Update].[Appointment_date]),"00")) AS Run_Num, Int(IIf(Month([Table_BNS_MGR_SUBSIDY_Update].[Appointment_date])+2>12,(Year([Table_BNS_MGR_SUBSIDY_Update].[Appointment_date])+1) & Format(Month([Table_BNS_MGR_SUBSIDY_Update].[Appointment_date])+3-13,"00"),(Year([Table_BNS_MGR_SUBSIDY_Update].[Appointment_date])) & Format(Month([Table_BNS_MGR_SUBSIDY_Update].[Appointment_date])+2,"00"))) AS Run_Num_Charge, Date() AS Check_trxn_date
FROM Table_BNS_MGR_SUBSIDY_Update;
Lúc này bạn muốn thay đổi gì trên field field Check_trxn_date thể viết lệnh RunSQL updatequery. Sau đó viết lệnh SQL append query lưu dữ liệu cho các table muốn lưu.
*Chú ý update query dùng để chỉnh sửa dữ liệu của các field trên 1 table, append query dừng để lưu record của 1 table nguồn vào 1 table đích. các query này có thể chuyển thành các SQL để đưa vào lệnh RunSQL chạy trong code:
Cú pháp : RunSQL "Dòng mã SQL" -
RE: Code update dữ liệu từ subform vào table history(có ghi nhận ngày update)
subasatran > 10-07-17, 01:10 PM
(09-07-17, 11:18 PM)tranthanhan1962 Đã viết: 1/Thực ra cái bạn nói không phải là update mà append. Vì vậy mình không hiểu được ý của bạn.
Cám ơn anh tranthanhan1962 rất nhiều.
2/Function BuildFilter bị lỗi ở Me.txt_Date_Check > "" vì so sánh giá trị date với giá trị text.
Có thể thực hiện bắng cách thêm vào query Qr_Summary một field nữa. Ví dụ: (Ở đây mình đưa SQL bạn có thể chuyển đổi thành query)
Table Table_BNS_MGR_SUBSIDY_Update có thêm field Check_trxn_date.Mã:SELECT Table_BNS_MGR_SUBSIDY_Update.AGT_CODE, Table_BNS_MGR_SUBSIDY_Update.Appointment_date, Table_BNS_MGR_SUBSIDY_Update.BNS_VALUE AS BNS_VALUE, Int(Year([Table_BNS_MGR_SUBSIDY_Update].[Appointment_date]) & Format(Month([Table_BNS_MGR_SUBSIDY_Update].[Appointment_date]),"00")) AS Run_Num, Int(IIf(Month([Table_BNS_MGR_SUBSIDY_Update].[Appointment_date])+2>12,(Year([Table_BNS_MGR_SUBSIDY_Update].[Appointment_date])+1) & Format(Month([Table_BNS_MGR_SUBSIDY_Update].[Appointment_date])+3-13,"00"),(Year([Table_BNS_MGR_SUBSIDY_Update].[Appointment_date])) & Format(Month([Table_BNS_MGR_SUBSIDY_Update].[Appointment_date])+2,"00"))) AS Run_Num_Charge, Date() AS Check_trxn_date
FROM Table_BNS_MGR_SUBSIDY_Update;
Lúc này bạn muốn thay đổi gì trên field field Check_trxn_date thể viết lệnh RunSQL updatequery. Sau đó viết lệnh SQL append query lưu dữ liệu cho các table muốn lưu.
*Chú ý update query dùng để chỉnh sửa dữ liệu của các field trên 1 table, append query dừng để lưu record của 1 table nguồn vào 1 table đích. các query này có thể chuyển thành các SQL để đưa vào lệnh RunSQL chạy trong code:
Cú pháp : RunSQL "Dòng mã SQL"
Em làm được rồi
cái lỗi Me.txt_Date_Check em ko biết, do tự mò access nên cung ko hiếu so sánh cho lắm. bây giờ mình chuyển qua xét null là được thôi phải ko anh -
RE: Code update dữ liệu từ subform vào table history(có ghi nhận ngày update)
tranthanhan1962 > 10-07-17, 02:07 PM
OK! <Me.txt_Date_Checkis Null or IsEmpty(Me.txt_Date_Check)= true>
Phải sử dụng cả 2
Giá trị Null cho biết rằng biến thể chứa dữ liệu không hợp lệ. Giá trị null không phải là giống như Trống, vốn cho biết rằng một biến số đó là có nhưng chưa được khởi tạo. Ví dụ textbox Me.txt_Date_Check có chứa giá trị. Sau khi xóa giá trị đó nó sẽ có giá trị Null. Ví dụ Me.txt_Date_Check is Null = True
Hàm IsEmpty được dùng để xác định nếu biến số sẽ được khởi tạo nhưng chưa bao giờ được khởi tạo, Nó chính xác là một giá trị rỗng. Ví dụ khi mới mở form textbox Me.txt_Date_Check hoàn toàn không có giá trị gì nếu không đặt default value là Null. Lúc này IsEmpty(Me.txt_Date_Check)= true.
Vì vậy để điều kiện xác định khi textbox Me.txt_Date_Check chưa có giá trị ngày một cách đầy đủ phải là: Me.txt_Date_Check is Null or IsEmpty(Me.txt_Date_Check)= true