Hỏi về cách lập Form trong Access

Liên hệ QC
Mình gửi cho Tien 1 form ví dụ để tham khảo, nó còn thô nhưng cũng có cơ sở hoàn thiện
 

File đính kèm

  • Form.rar
    76.8 KB · Đọc: 55
Mình gửi cho Tien 1 form ví dụ để tham khảo, nó còn thô nhưng cũng có cơ sở hoàn thiện

Cám ơn bác rất nhiều, cái form bác làm rất đẹp và đúng với ý của em. Tuy nhiên em có 1 số vấn đề mong bác tiếp tục giúp đỡ
  • ở cái combo box Employee, khi chọn thì Font tiếng Việt bị lỗi
  • với mỗi Part thì chỉ có duy nhất 1 khách hang tương ứng (cái này đã công ty đã cố định, tuy hơi có vấn đề đôi chút) nên khi mình chọn Part thì khách hang của mình sẽ tự động hiện ra mà không cần dùng combo box custID nữa.
  • Ở các cái Time, Form đã rất tốt rồi, nhưng bác có thể lập giúp em cái công thức tính thời gian làm 1 việc và thời gian làm thêm của mọi người. (em chưa biết cách dùng công thức trong access mà. ). Em nghĩ mình có nên tạo nên 1 cái combo box về ca, nếu chọn ca1 hoặc ca2 thì thời gian bắt đầu và thời gian kết thúc tự động hiện ra cho mình. Mình chỉ việc nhập thời gian adding time mà thôi.
Tất cả các thông tin nhập vào sẽ lưu vào table hoặc query để có thể thực hiện công việc lọc như yêu cầu trong sheet out put.
chân thành cảm ơn và rất mong tiếp tục nhận được sự giúp đỡ của các bác.
 
Mình tạm tính ca sáng, chiều, tối. Nếu bạn tính ca 8 giờ thì lưu ý trừ giờ nghỉ giữa ca
 

File đính kèm

  • Form.rar
    83.7 KB · Đọc: 53
Lần chỉnh sửa cuối:
Em có một vấn đề liên quan tới form mong mọi người giúp đỡ. Em có rất nhiều form tên của nó lần lượt là a,b,c,d…và 1 form tổng hợp chứa combo box . trong combo box của form tổng hợp chứa toàn bộ tên của các form. Em muốn bây giờ khi mình chọn giá trị trong combo box này thì form có tên tương ứng sẽ được mở lên. mong các bác giúp đỡ
 

File đính kèm

  • hoi.rar
    9.1 KB · Đọc: 19
Bạn thêm thủ tục này vào phần mã VBA của Form tổng hợp!
Private Sub Combo0_AfterUpdate()
DoCmd.OpenForm Combo0, acNormal, , , , acDialog
End Sub
 
Bạn xem đúng không. Nếu muốn mở form mới đóng form cũ thì điều chỉnh
 

File đính kèm

  • hoi.rar
    11.8 KB · Đọc: 19
Các bác cho em hỏi, em vừa táy máy vào thực đơn Tools trên thanh menu bar, chọn Startup , em thử bỏ dấu tích ở trong mục Allow full menus thì cái thực đơn Tools và view nó lại chạy đâu mất, em tìm mãi mà không được. các bác hướng dẫn em để cho hiện 2 cái thực đơn này em với nhé!
 

File đính kèm

  • Menu bar.rar
    183.6 KB · Đọc: 36
Các bác cho em hỏi, em vừa táy máy vào thực đơn Tools trên thanh menu bar, chọn Startup , em thử bỏ dấu tích ở trong mục Allow full menus thì cái thực đơn Tools và view nó lại chạy đâu mất, em tìm mãi mà không được. các bác hướng dẫn em để cho hiện 2 cái thực đơn này em với nhé!
Thì bạn vào lại start up và chọn nó lại là nó có lại thôi.
Nếu không thấy được start up bạn mở 1 file trống nào đó và chọn customize và chọn commands\ Tools\ bên mục commands bạn tìm mục Start up và kéo nó vào menu của bạ click chọn OK, đóng file này lại, mở file của bạn lên đảm bảo mục start up còn thể hiện trên mục bạn vừa kéo vào.
Thân
 
Thì bạn vào lại start up và chọn nó lại là nó có lại thôi.
Nếu không thấy được start up bạn mở 1 file trống nào đó và chọn customize và chọn commands\ Tools\ bên mục commands bạn tìm mục Start up và kéo nó vào menu của bạ click chọn OK, đóng file này lại, mở file của bạn lên đảm bảo mục start up còn thể hiện trên mục bạn vừa kéo vào.
Thân
Cám ơn bác, thật đơn giản mà em không nghĩ ra. hihihi...
 
Em lập 2 cái form và cả 2 form đều dùng DTPicker với thiết lập hoàn toàn như nhau. Tuy nhiên khi em nhập dữ liệu vào thì ở cái form input của nó luôn là 12:00:00 AM còn giờ của cái form overtime luôn là 12:00:00 AM. Vì vậy mà 2 giá trị này không bằng nhau. Các bác tìm nguyên nhân của lỗi này và đưa ra cách khắc phục em với . cám ơn các bác
 

File đính kèm

  • Form.rar
    308.4 KB · Đọc: 36
Em lập 2 cái form và cả 2 form đều dùng DTPicker với thiết lập hoàn toàn như nhau. Tuy nhiên khi em nhập dữ liệu vào thì ở cái form input của nó luôn là 12:00:00 AM còn giờ của cái form overtime luôn là 12:00:00 AM. Vì vậy mà 2 giá trị này không bằng nhau. Các bác tìm nguyên nhân của lỗi này và đưa ra cách khắc phục em với . cám ơn các bác
Lỗi này là do bạn để mặc định của value của overtime là 22/04/2009 12:00:00 PM, còn bên form input là 22/04/2009 nên khi chọn ngày nó thêm phần giở đàng sau là 12:00:00 AM, bất kể bạn chọn vào giờ nào,
Cách khắc phục là bạn chọn combo đó, chọn properties đến mục Value bỏ trống đi là OK, hoặc nếu bạn muốn hiển thị giá trị ngày không thì chỉ xóa phần giờ, để lại giá trị ngày.
Thân
 
Lần chỉnh sửa cuối:
Tính thời gian làm thêm.
Công ty em làm 2 ca. ca 1 từ 8:00:00 đến 17:15:00, ca 2 từ 20:00:00 đến 5:15:00 ngày hôm sau. Thời gian bắt đầu được tính làm thêm ở ca 1 là 17:20:00 còn ca 2 là 5:25:00
Trong 1 ngày, 1 nhân viên có thể làm rất nhiều việc. ví dụ nhân viên I.
-Từ 8:00 đến 17:00 làm công việc A
-Từ 17:00 đến 18:25 làm công việc B
-Từ 18:25 đến 19:25 làm công việc C

Công việc của tất cả mọi người được 1 người nhập vào file access, yêu cầu báo cáo làm thêm như sau.
-Người làm thêm
-Thời gian bắt đầu làm thêm
-Thời gian kết thúc làm thêm
-Tổng số thười gian làm thêm.

Em không biết làm thế nào để lấy được thời gian bắt đầu, kết thúc làm thêm và tổng thời gian làm thêm như thế nào? Ví dụ như với người I ở trên thì thời gian bắt đầu làm thêm là 17:25 và kết thúc là 19:25, tổng số thời gian làm thêm là 2 giờ.
Em gửi kèm theo file, vì mới bắt đầu học accesss nên file có rất nhiều sai sót mong các bác giúp đỡ, hướng dẫn và đóng góp ý kiến.
Cảm ơn các bác!
 

File đính kèm

  • Form.rar
    380.8 KB · Đọc: 60
1. Về tính chênh lệch thời gian:
Các trường thời gian của bạn là ổn roài nhưng cái trường Duration chưa ổn, kiểu dữ liệu là Shortime mới đúng và bạn chỉ đơn giản là làm phép trừ thôi.
SELECT active.EmployeeID, active.timefrom, active.timeto, [timeto]-[timefrom] AS Different, active.Duration
FROM active;

Bạn có thể sử dụng lệnh trừ thời gian nếu định dạng trường là HH:MM

Đây là 1 Query giúp bạn tính được thời gian lân ca (thời gian làm việc trong 1 ca)
SELECT tblShift.ID, tblShift.HHFrom, tblShift.HHTo, tblShift.Different, IIF([HHto]<[HHfrom],[HHto]+24-[HHfrom],[HHto]-[HHfrom]) AS Duration
FROM tblShift;

Vậy việc còn lại bây giờ là thế này: Bạn so sánh thời gian nhận ca để biết lúc họ bắt đầu làm thêm giờ cho đến thời gian cuối cùng.
Chẳng hạn Query sau có thể giúp bạn tính được thời gian làm thêm giờ của một công nhân nhá:

SELECT active.EmployeeID, active.timefrom, active.timeto, tblShift.OverStart, IIf(timefrom>[OverStart],timefrom,[OverStart]) AS StartOvertime, (IIf(timefrom>[OverStart],timefrom,[OverStart])-active.timeto) AS TotalOvertime
FROM active INNER JOIN tblShift ON active.Shift = tblShift.ID;

(Nhớ là định dạng trong Query đối với trường thời gian phải thêm vào cụm HH:MM)
Bạn có thể sử dụng tập tin kèm theo của mình nhé, mình đã bổ sung thêm bảng quản lý ca kíp và sửa bảng active của bạn.
Đại loại cách làm là thế!

2. Về mặt phân tích dữ liệu:
Nếu bạn cần quản lý ca kíp thì bảng Active còn thiếu dữ liệu ca kíp nhé - nếu có dữ liệu này thì bạn có thể quản lý được ai làm thêm giờ bao lâu và từ lúc nào.
 

File đính kèm

  • Form.zip
    81.6 KB · Đọc: 25
Em có 1 cái form nhập dữ liệu. em muốn khi nhấn nút lưu nếu dữ liệu a chưa nhập sẽ hiện 1 cái msgbox thông báo rằng dữ liệu a đó chưa nhập, tương tự với các dữ liệu b. nó chỉ thục hiện lênh lưu nếu dữ liệu a và b đều đã được nhập. còn dữ liệu c có thể có hoặc không. Các bác hướng dẫn em với nhé! Cám ơn các bác
 

File đính kèm

  • hoi.zip
    10.1 KB · Đọc: 9
Em có 1 cái form nhập dữ liệu. em muốn khi nhấn nút lưu nếu dữ liệu a chưa nhập sẽ hiện 1 cái msgbox thông báo rằng dữ liệu a đó chưa nhập, tương tự với các dữ liệu b. nó chỉ thục hiện lênh lưu nếu dữ liệu a và b đều đã được nhập. còn dữ liệu c có thể có hoặc không. Các bác hướng dẫn em với nhé! Cám ơn các bác

Bạn chỉ việc viết sự kiện cho nút Lưu như sau:
Private Sub Command6_Click()
If IsNull(Me.Text0) Or IsNull(Me.Text2) Then
MsgBox "Ban phai nhap du lieu cho a va b", vbInformation, "Thong bao"
Else
MsgBox "Lenh luu"
End If
End Sub
 
Vấn đề với file cụ thể của bạn phải sử phức tạp hơn 1 chút tránh để lại rác trong bảng dữ liệu.File của bạn gắn liền với Table dữ liệu cho nên khi bạn cập nhật cho 1 Control thì cũng đã cập nhật 1 Field. Trên Form nên có 2 nút Accept và Cancel. Khi nhấn nút Cancel sẽ xóa bỏ Record này. Nút Accept nhập đoan code của Solomon. Như vậy, không đủ dữ liệu thì không nhập , không thoát và dùng lệnh SetFocus để đưa con trỏ về ô sai dữ liệu. Nếu trở ý muốn bỏ thì nhấn nút Cancel. Như vậy đảm bảo trong Table không có Record thiếu dữ liệu.
 
Cách bạn đưa ra cho form chỉ để học làm quen với cách tạo form thôi. Để tạo form hiệu quả, bạn phải làm cách khác. Ví dụ bạn tạo form với các text box, sau khi kiểm tra tính hợp lý của dữ liệu bạn viết thêm code để cập nhật vào table. Như vậy không tạo rác cũng như an toàn cho dữ liệu hiện có. Thậm chí bạn cũng có thể tạo một table tạm để truy xuất và nhập liệu. Các nút tạo mới, tìm kiếm, xóa có thể được sử dụng.
 
Web KT
Back
Top Bottom