chuvoicon > 12-12-13, 11:15 AM
dinh_trong_hoa > 12-12-13, 01:57 PM
(12-12-13, 11:15 AM)chuvoicon Đã viết: Tôi có forms dữ liệu như trong file đính kèm, nếu dùng query update thì dữ liệu tính toán, update chậm, nhưng nếu tính toán trược tiếp trên form dữ liệu tính toán nhanh. Rất Mong các bạn trong forum trợ giúp về việc update dữ liệu từ form vào table dữ liệu
Rất mong nhận được sự trợ giúp của anh em trong forum
Trân trọng
http://www.mediafire.com/download/08go68...-12-12.mdb
chuvoicon > 12-12-13, 02:13 PM
paulsteigel > 12-12-13, 03:00 PM
Private Sub Form_AfterUpdate()
Dim obj As Control, Sql As String
For Each obj In Me.Controls
If obj.Tag = 1 Then
' Su dung thuoc tinh Tag de dua query vaof
If Nz(obj, 0) <> 0 Then Sql = Sql & ",a." & obj.Name & "=" & obj
End If
Next obj
' Chay query
Sql = "UPDATE chitiet as a SET " & Mid(Sql, 2) & " WHERE a.Stt=" & stt & ";"
Debug.Print Sql
CurrentDb.Execute Sql
End Sub
UPDATE chitiet as a SET a.tpxen=232,a.tpin=132,a.slphun=132,a.bhaophun=6,a.tphun=126,a.slsong=126,a.toin=126,a.slboi=126,a.bhaoboi=10,
a.tpboi=116,a.soluongbe=116,a.betay=13,a.betudong=14,a.tpbe=103,a.sldan=103,a.bhaodan=0.515 WHERE a.Stt=305;
dinh_trong_hoa > 12-12-13, 03:12 PM
(12-12-13, 02:13 PM)chuvoicon Đã viết: Cảm ơn bạn dinh_trong_hoa đã quan tâm đến chương trình của mình
Hiện nay mình đang cần chuyển dữ liệu đã tính toán từ forms (bạn xem forms) về lại table. Vì hệ thống của mình xây dựng dùng query rất phức tạp (vì các dữ kiện liên kết với nhau, công đoạn sau phụ thuộc công đoạn trước) và dùng query update được nhưng chưa thực sự thuận lợi và hiệu quả (hiện nay mình đang dùng update query - đã có queryupdate trong file)
Nếu dùng tính toán trực tiếp trên form rất thuận lợi, nhưng mình đang yếu khi cần chuyển dữ liệu đã tính toán về table để từ table dữ liệu liên kết cho các công việc khác
chuvoicon > 12-12-13, 03:25 PM
(12-12-13, 03:12 PM)dinh_trong_hoa Đã viết: Chào bạn,
Form nó tiện dụng, dễ dùng nhưng không linh động bằng query, nó đòi hỏi có ý tưởng và cấu trúc dữ liệu rõ ràng. Bạn nói chung chung như thế thật khó ....Mình gởi bạn file mẫu tham khảo, file này thiết kế với mục đích quản lý doanh thu.
Chúc bạn thành công.
dinh_trong_hoa > 12-12-13, 03:37 PM
(12-12-13, 03:25 PM)chuvoicon Đã viết:(12-12-13, 03:12 PM)dinh_trong_hoa Đã viết: Chào bạn,
Form nó tiện dụng, dễ dùng nhưng không linh động bằng query, nó đòi hỏi có ý tưởng và cấu trúc dữ liệu rõ ràng. Bạn nói chung chung như thế thật khó ....Mình gởi bạn file mẫu tham khảo, file này thiết kế với mục đích quản lý doanh thu.
Chúc bạn thành công.
Chương trình này của mình không phục vụ quản lý doanh thu (nếu mở rộng hệ thống thì có thể quản lý cả doanh thu, quản lý luôn công nợ, kho ... --> gộp). Chương trình của mình viết phục vụ công việc sản xuất - lập kế hoạch sản xuất cho các bộ phận sản xuất (dữ liệu sản xuất lấy chủ yếu từ cái table chi tiết của mình ), bạn xem có thấy các thuộc tính liên hệ phụ thuộc các công đoạn sau phụ thuộc vào công đoạn trước
Trân trọng
chuvoicon > 13-12-13, 04:14 PM
(12-12-13, 03:00 PM)paulsteigel Đã viết: Bạn cần làm 2 việc:
1. Chọn tất cả các textbox trên form chi tiết mà bạn đã có công thức tính toán, đặt thuộc tính Tag =1 (trong mục Other của bảng thuộc tính). Làm như vậy để thủ tục sau đây sẽ chỉ duyệt các điều khiển có Tag=1 để thực hiện query tính toán.
2. Mở form, chọn sự kiện AfterUpdate, đưa đoạn mã sau vào.
Mỗi khi bạn sửa, thêm số liệu, đoạn code trên sẽ chạy và thực hiện cập nhập số liệu tính toán trong bảng theo query đấy...Mã PHP:Private Sub Form_AfterUpdate()
Dim obj As Control, Sql As String
For Each obj In Me.Controls
If obj.Tag = 1 Then
' Su dung thuoc tinh Tag de dua query vaof
If Nz(obj, 0) <> 0 Then Sql = Sql & ",a." & obj.Name & "=" & obj
End If
Next obj
' Chay query
Sql = "UPDATE chitiet as a SET " & Mid(Sql, 2) & " WHERE a.Stt=" & stt & ";"
Debug.Print Sql
CurrentDb.Execute Sql
End Sub
Ví dụ, khi bạn sửa số lượng đặt hàng, đoạn query trên sẽ cập nhập bản ghi có STT 305 theo công thức tính toán đã có sẵn trên form.Mã PHP:UPDATE chitiet as a SET a.tpxen=232,a.tpin=132,a.slphun=132,a.bhaophun=6,a.tphun=126,a.slsong=126,a.toin=126,a.slboi=126,a.bhaoboi=10,
a.tpboi=116,a.soluongbe=116,a.betay=13,a.betudong=14,a.tpbe=103,a.sldan=103,a.bhaodan=0.515 WHERE a.Stt=305;
Vài điểm lưu ý thêm:
Thông thường, quy tắc chuẩn hóa CSDL đòi hỏi người dùng chỉ đưa số liệu gốc vào CSDL/bảng, các số liệu phát sinh từ việc tính toán các số liệu nguyên thủy (gốc/element data) chỉ nên dùng Truy vấn để thực hiện. Nếu các số liệu tính toán kia không thay đổi theo thời gian thì mới áp dụng việc tính và lưu vào CSDL.
Khi nào có thời gian, tôi sẽ viết thêm một vài bài về điều này!
paulsteigel > 13-12-13, 04:33 PM
Trích dẫn:Với sự kiện trên của Paul đã thay thế cho query update không cần dùng đến update query nữa, vì dữ liệu tính toán trên phụ thuộc vào rất nhiều tham số nên nếu dùng update query việc xử lý dữ liệu chậm (không thực hiện được one click one query) nên tính toán trên form và trả dữ liệu sau khi đã được tính toán về csdl là biện pháp khả thi nhất của mình trong trường hợp này
chuvoicon > 19-12-13, 10:49 AM