PDA

View Full Version : Hỏi về cách lập Form trong Access



hoangminhtien
09-04-09, 11:01 AM
Chào các anh chị em!
Sếp tôi giao cho tôi công việc liên quan tới access mà tôi lại không biết gì, đang bập bẹ tìm hiểu mà thời gian hoàn thành công việc lại có hạn nên tôi nhờ mọi người xem và giúp đỡ tôi với. yêu cầu tôi đã ghi rõ trong file.
Chân thành cảm ơn

Hai Lúa Miền Tây
09-04-09, 04:33 PM
Chào các anh chị em!
Sếp tôi giao cho tôi công việc liên quan tới access mà tôi lại không biết gì, đang bập bẹ tìm hiểu mà thời gian hoàn thành công việc lại có hạn nên tôi nhờ mọi người xem và giúp đỡ tôi với. yêu cầu tôi đã ghi rõ trong file.
Chân thành cảm ơn
Mình giải quyết câu 1,2,3 còn câu 4 bạn thử "ngâm cứu" nhé
Thân

sealand
09-04-09, 04:41 PM
To domfootwear (http://www.giaiphapexcel.com/forum/member.php?u=42738): Bạn bổ xung các Object không nằm trong thư viện của MS Access thì bạn phải hướng dẫn bổ xung thì Form mới dùng được.

hoangminhtien
09-04-09, 05:33 PM
Mình giải quyết câu 1,2,3 còn câu 4 bạn thử "ngâm cứu" nhé
Thân

Rất cám ơn bác đã hưỡng dẫn em. Tuy nhiên vì em mới bập bẹ học Access nên em không biết cách sử dụng như thế nào. mỗi lần chạy nó lại có tình trạng như trong file. mong bác hướng dẫn thêm

Hai Lúa Miền Tây
10-04-09, 08:41 AM
Rất cám ơn bác đã hưỡng dẫn em. Tuy nhiên vì em mới bập bẹ học Access nên em không biết cách sử dụng như thế nào. mỗi lần chạy nó lại có tình trạng như trong file. mong bác hướng dẫn thêm
Cái này do trong máy của bạn không có hổ trợ control Date Control Picker nên nó báo lỗi, bạn phải bổ xung nó nhé,
Bạn lấy đĩa VB6 cài vào máy là hết ngay,
Thân

hoangminhtien
10-04-09, 09:10 AM
Cái này do trong máy của bạn không có hổ trợ control Date Control Picker nên nó báo lỗi, bạn phải bổ xung nó nhé,
Bạn lấy đĩa VB6 cài vào máy là hết ngay,
Thân
Cám ơn bác đã hướng dẫn, tuy nhiên máy tính ở công ty không cho phép cài bất kỳ phần mềm nào khác nên em không thể cài được. bác có phương án khác không ạ?

Hai Lúa Miền Tây
10-04-09, 10:14 AM
Bạn thử tìm file mscomctl.ocx rồi chép vào system32 xem có được không nhé

Thân

hoangminhtien
10-04-09, 10:41 AM
Bạn thử tìm file mscomctl.ocx rồi chép vào system32 xem có được không nhé
Em đã tìm và chép vào đúng thư mục nhưng nó vẫn báo lỗi như tình trạng cũ bác a. bác xem còn cách nào nữa không giúp em với

Hai Lúa Miền Tây
10-04-09, 10:51 AM
Em đã tìm và chép vào đúng thư mục nhưng nó vẫn báo lỗi như tình trạng cũ bác a. bác xem còn cách nào nữa không giúp em với

Hoặc bạn vào http://www.ocxdump.com/download-ocx-files_new.php/ocxfiles/M/MSCOMCT2.OCX/6.00.88046/download.html (http://www.ocxdump.com/download-ocx-files_new.php/ocxfiles/M/MSCOMCT2.OCX/6.00.88046/download.html) để tải file MSCOMCT2.OCX

hoangminhtien
10-04-09, 11:13 AM
Hoặc bạn vào http://www.ocxdump.com/download-ocx-files_new.php/ocxfiles/M/MSCOMCT2.OCX/6.00.88046/download.html (http://www.ocxdump.com/download-ocx-files_new.php/ocxfiles/M/MSCOMCT2.OCX/6.00.88046/download.html) để tải file MSCOMCT2.OCX
vẫn không được bác ạ. còn cách nào nữa không bác

sealand
10-04-09, 11:56 AM
Bạn chép vào không được rồi, để bổ xung thư viện OCX bạn tham khảo cách bổ xung ở đây (http://www.giaiphapexcel.com/forum/showthread.php?t=13241)

Bạn vào lệnh run trên Start gõ dòng lệnh (Nhớ đã chép file OCX vào thư mục C:\Windows\System32) :


regsvr32 \windows\system32\MSCOMCT2.ocx

hoangminhtien
10-04-09, 12:20 PM
Cám ơn các bác domfootwear và sealand đã hướng dẫn, File của bác domfootwear đã chạy được rồi. các bác hướng dẫn cho em cách làm sao để có thể đưa được cái combo box hoạt động như vậy với nhé

Hai Lúa Miền Tây
10-04-09, 01:13 PM
Trên thanh menu bạn click chọn vào nút More controls, một danh sach sổ xuống bạn tìm control microsoft date and time picker control, và click vào nó. sau đó rê chuột vào form, con chuột sẽ hiện dấu + rồi bạn vẽ vào form vị trí bạn thích là xong
Thân

hoangminhtien
11-04-09, 03:47 PM
em có thêm 1 câu hỏi liên quan đến form nữa mong các bác tiếp tục giúp em. nội dung câu hỏi đã ghi ở trong file. mong nhận được sự hướng dẫn sớm từ các bác

sealand
11-04-09, 04:23 PM
Bạn thử xem có đúng không?
Bạn lưu ý trong Access là bảng dữ liệu chứ không phải là bảng tính như Excel, thay đổi mã chứ không nên thay đổi cột.

hoangminhtien
11-04-09, 04:43 PM
Bạn thử xem có đúng không?
Bạn lưu ý trong Access là bảng dữ liệu chứ không phải là bảng tính như Excel, thay đổi mã chứ không nên thay đổi cột.
Cám ơn bác, rất đúng với ý của em. em có thêm câu hỏi nữa mong các bác tiếp tục giúp đỡ. câu hỏi ở trong file

sealand
12-04-09, 07:17 PM
Cái đường ấy là Record selectors .Bạn vào Properties của form chuyển thành No là biến liền.
Mở Properties -->Nhấn chuột vào ô vuông giao nhau 2 thước ngang và dọc sẽ mở Form Properties -->Chọn dòng Record selectors chuyển thành No.

hoangminhtien
13-04-09, 08:56 AM
Bạn thử xem có đúng không?
Bạn lưu ý trong Access là bảng dữ liệu chứ không phải là bảng tính như Excel, thay đổi mã chứ không nên thay đổi cột.
Các bác xem file của em làm sao nó không chạy được như file của bác sealand. em không biết phải làm thế nào để chạy được, các bác hướng dẫn cụ thể cho em với

Hai Lúa Miền Tây
13-04-09, 09:31 AM
Các bác xem file của em làm sao nó không chạy được như file của bác sealand. em không biết phải làm thế nào để chạy được, các bác hướng dẫn cụ thể cho em với
Công đoạn thì đúng rồi nhưng bạn phải thêm đoạn code sau vào form nữa để combo1 lọc dữ liệu sau khi combo0 thay đổi:

Private Sub Combo0_Change()
Me.Combo2.Requery
Me.Combo2 = ""
End Sub

Thân

hoangminhtien
13-04-09, 12:53 PM
Các bác ơi, cái lỗi này trong access (ở trong file) là lỗi gì vậy?

hoangminhtien
13-04-09, 01:54 PM
Các bác cho em hỏi cái combo box employeeID trong file của em sao lại không chọn được vậy? vì chưa hiểu rõ được kỹ nên có lúc em làm chọn được, lúc không. mong các bác giúp đỡ sớm. cám ơn các bác

sealand
13-04-09, 01:56 PM
Không thể thiết lập cho đối tượng giá trị rỗng khi đặt Poperties=False.
Bạn lưu ý: Null khác với 0 hay "" nhé.

hoangminhtien
13-04-09, 02:00 PM
Không thể thiết lập cho đối tượng giá trị rỗng khi đặt Poperties=False.
Bạn lưu ý: Null khác với 0 hay "" nhé.
Cám ơn bác, vậy cách khắc phục lỗi này như thế nào ạ

sealand
13-04-09, 02:22 PM
Bạn cho biết trường hợp cụ thể chứ lỗi Null có nhiều trường hợp lắm.

Hai Lúa Miền Tây
13-04-09, 02:31 PM
Cám ơn bác, vậy cách khắc phục lỗi này như thế nào ạ
Lỗi này do bạn thiết lập mối quan hệ của các trường, Mối quan hệ bạn nên sửa lại là giữa bảng Employee trường EmployeeID với bảng Out trường EmployeeID chứ không phải là trường EmployeeName nhé
Thân

sealand
13-04-09, 02:33 PM
Combo của bạn không cập nhật được là do bạn viết sai Query nguồn của Form. Bạn sửa như sau là OK

SELECT Employee.EmployeeID, Employee.EmployeeName, Out.Date, Out.TimeFrom, Out.TimeTo, Out.Duration FROM Employee INNER JOIN Out ON Employee.EmployeeID = Out.EmployeeName;

Quan hệ thì bạn nên đặt ở chế độ toàn vẹn tham chiếu để khi sửa Table Emp... sẽ tự động cập nhật cho Out

Hai Lúa Miền Tây
13-04-09, 02:50 PM
Combo của bạn không cập nhật được là do bạn viết sai Query nguồn của Form. Bạn sửa như sau là OK

SELECT Employee.EmployeeID, Employee.EmployeeName, Out.Date, Out.TimeFrom, Out.TimeTo, Out.Duration FROM Employee INNER JOIN Out ON Employee.EmployeeID = Out.EmployeeName;

Quan hệ thì bạn nên đặt ở chế độ toàn vẹn tham chiếu để khi sửa Table Emp... sẽ tự động cập nhật cho Out
Nó Phải như vầy anh Việt ơi

SELECT Out.EmployeeID, Employee.EmployeeName, Out.Date, Out.TimeFrom, Out.TimeTo, Out.Duration
FROM Employee INNER JOIN Out ON Employee.EmployeeID = Out.EmployeeID;

hoangminhtien
13-04-09, 02:51 PM
Lỗi này do bạn thiết lập mối quan hệ của các trường, Mối quan hệ bạn nên sửa lại là giữa bảng Employee trường EmployeeID với bảng Out trường EmployeeID chứ không phải là trường EmployeeName nhé
Thân
Cám ơn các bác, đúng là 1 lỗi rất cơ bản mà em không nhận ra.

hoangminhtien
13-04-09, 04:58 PM
Các bác ơi, sao cái Form của em làm lúc bật ra nó trắng tinh, không có gì vậy? đây là lỗi gì và cách khắc phục nó như thế nào? mong các bác hướng dẫn giúp

sealand
13-04-09, 07:25 PM
Form của bạn chẳng sao cả mà dữ liệu có vấn đề.
Bạn nhấn vào dấu 3 chấm record source rồi view cái query gốc lên mà xem
Bạn phải có phương án tổ chức dữ liệu, cập nhật dữ liệu, kết xuất dữ liệu ra sao đã. Từ cấu trúc các Table và các mối quan hệ mình nhận thấy bạn chưa hình dung ra mô hình cơ sở dữ liệu của bạn. Khi bạn tạo form trên nguồn là 1 query thì phải đảm bảo 1 query hợp lệ, còn nếu không thì query đó không chho 1 dòng dữ liệu nào kể cả dòng New và khi đó query rỗng-->các điều khiển không có nguồn hiển thị và rơi vào tình trạng như Form của bạn.
Còn với mục đích học tập thì tạm thời ít Table thôi, cái chính là liên kết và sử dụng chúng ra sao có hiệu quả cơ.

Hai Lúa Miền Tây
14-04-09, 08:52 AM
Mình đã sửa lại mối quan hệ, bạn xem lại coi có đúng như ý bạn không nhé
Thân

hoangminhtien
14-04-09, 09:18 AM
Form của bạn chẳng sao cả mà dữ liệu có vấn đề.
Bạn nhấn vào dấu 3 chấm record source rồi view cái query gốc lên mà xem
Bạn phải có phương án tổ chức dữ liệu, cập nhật dữ liệu, kết xuất dữ liệu ra sao đã. Từ cấu trúc các Table và các mối quan hệ mình nhận thấy bạn chưa hình dung ra mô hình cơ sở dữ liệu của bạn. Khi bạn tạo form trên nguồn là 1 query thì phải đảm bảo 1 query hợp lệ, còn nếu không thì query đó không chho 1 dòng dữ liệu nào kể cả dòng New và khi đó query rỗng-->các điều khiển không có nguồn hiển thị và rơi vào tình trạng như Form của bạn.
Còn với mục đích học tập thì tạm thời ít Table thôi, cái chính là liên kết và sử dụng chúng ra sao có hiệu quả cơ.
Rất cám ơn các bác đã hướng dẫn, góp ý. thực chất là em chưa biết gì về Access nhưng xếp em giao cho em công việc này nên em vừa làm vừa hỏi, mong các bác đừng cười chê. đây là file công việc của em, thừ 7 tuần này là em phải hoàn thành rồi. các bác xem rồi hướng dẫn giúp em với

Hai Lúa Miền Tây
14-04-09, 09:48 AM
Rất cám ơn các bác đã hướng dẫn, góp ý. thực chất là em chưa biết gì về Access nhưng xếp em giao cho em công việc này nên em vừa làm vừa hỏi, mong các bác đừng cười chê. đây là file công việc của em, thừ 7 tuần này là em phải hoàn thành rồi. các bác xem rồi hướng dẫn giúp em với
Không có ai cười bạn cả, mình nghĩ chuyện không biết thì hỏi là việc tốt, cái này nếu muốn làm cho hoàng chỉnh phải mất rất nhiều thời gian để thiết kế, test, sửa... sếp giao cho bạn trong vòng 1 tuần là hơi bị khó khăn với bạn đó, nhưng không sao nếu có vướng mắc gì thì bạn cứ việc up lên, mình nghĩ mọi người sẽ giúp bạn thôi
Thân

hoangminhtien
14-04-09, 10:04 AM
Không có ai cười bạn cả, mình nghĩ chuyện không biết thì hỏi là việc tốt, cái này nếu muốn làm cho hoàng chỉnh phải mất rất nhiều thời gian để thiết kế, test, sửa... sếp giao cho bạn trong vòng 1 tuần là hơi bị khó khăn với bạn đó, nhưng không sao nếu có vướng mắc gì thì bạn cứ việc up lên, mình nghĩ mọi người sẽ giúp bạn thôi
Thân
Rất cám ơn các bác, các bác hướng dẫn từng bước để em có thể thực hiện công việc trên với ạ.

sealand
14-04-09, 10:29 AM
Từ mô tả của bạn mình nêu sơ bộ dữ liệu bạn tham khảo

hoangminhtien
14-04-09, 10:32 AM
Từ mô tả của bạn mình nêu sơ bộ dữ liệu bạn tham khảo
Rất cám ơn bác, em sẽ làm theo sự chỉ dẫn của bác, có vấn đề gì em sẽ hỏi các bác tiếp nhé

hoangminhtien
14-04-09, 01:06 PM
Từ mô tả của bạn mình nêu sơ bộ dữ liệu bạn tham khảo
Bác sealand ơi, cái trường Deta_code trong Table PartDetail là gì vậy ạ. bác hướng dẫn thêm cho em với nhé

sealand
14-04-09, 01:14 PM
Mỗi Detail có 1 mã, khi nhập liệu và sử lý theo mã này còn khi kết xuất ta căn cứ mã này để lấy Detail. Nó giống như Mahang và Tenhang vậy

hoangminhtien
14-04-09, 01:32 PM
Mỗi Detail có 1 mã, khi nhập liệu và sử lý theo mã này còn khi kết xuất ta căn cứ mã này để lấy Detail. Nó giống như Mahang và Tenhang vậy
Bác xem em làm như vầy đã đúng chưa ạ. thật ra cũng làm máy móc theo bác hướng dẫn thôi chứ cũng chưa hiểu lắm về cái table PartDetail. sai chỗ nào bác sữa lại cho em với nhé.

sealand
14-04-09, 02:57 PM
Trong bảng Part_Detail và Part_ID thừa 1. Bạn ghép 2 bảng này lại. Còn lại tốt rồi
Bạn cần lưu ý 1 số vấn đề sau:
-Đặt mã nên có tính gợi ý, tránh đặt số khó sử dung về sau. Ví dụ mã nhân viên Trần Thị Lý nên đặt LY001 thay vì V0020.
-Tên bảng, form, Query nên đặt số ở đầu để dễ qyản lý tránh phải tìm rất khó khăn khi số lượng tăng lên vdụ: T01-EMPLOYEE.
Tất cả đều là chữ hoa hay chữ thường tránh lỗi cú pháp về sau.

Vài điều tham gia với bạn, có gì chưa chuẩn xác mong thông cảm cho.

sealand
14-04-09, 11:47 PM
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

hoangminhtien
15-04-09, 08:52 AM
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.

sealand
15-04-09, 10:31 AM
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

hoangminhtien
21-04-09, 09:28 AM
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 đỡ

paulsteigel
21-04-09, 10:31 AM
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

sealand
21-04-09, 10:39 AM
Bạn xem đúng không. Nếu muốn mở form mới đóng form cũ thì điều chỉnh

hoangminhtien
21-04-09, 04:39 PM
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é!

Hai Lúa Miền Tây
21-04-09, 05:06 PM
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

hoangminhtien
21-04-09, 05:25 PM
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...

hoangminhtien
22-04-09, 05:58 PM
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

Hai Lúa Miền Tây
23-04-09, 07:46 AM
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

hoangminhtien
23-04-09, 02:54 PM
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!

paulsteigel
23-04-09, 06:28 PM
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.

hoangminhtien
27-04-09, 06:47 PM
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

solomon2211
27-04-09, 08:44 PM
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

sealand
27-04-09, 11:28 PM
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.

solomon2211
28-04-09, 07:23 AM
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.