4.5.1 Giới thiệu Sub from
Form con hay còn gọi lă Form phụ lă phƣơng phâp để đƣa thông tin từ nhiều bảng văo một Form. Form con có nghĩa lă một Form đƣợc lồng trong Form khâc. Trong Access Form chính gọi lă Main form, Form nằm trong Main form gọi lă Form con (Sub form). Khi dùng Form con chúng ta dễ nhận thấy mối quan hệ giữa câc bản ghi của hai hay nhiều bảng.
Form con đặc biệt hữu hiệu khi dùng để hiển thị dữ liệu từ nhiều bảng hay truy vấn có quan hệ một- nhiều với nhau. Form chính đại diễn cho bín một, Form phụ đại diện cho bín nhiều.
Khi năo dùng Main Form / SubForm:
Sử dụng Main Form - SubForm khi muốn dùng một Bảng / Query lăm nguồn dữ liệu cho MainForm vă một Bảng / Query khâc để trình băy mối quan hệ giữa câc Record của câc Bảng / Query năy. Thực tế, Main Form – SubForm đƣợc dùng thƣờng xuyín khi trình băy dữ liệu trín Form.
Khi dùng Main Form - SubForm cần chú ý câc vấn đề sau:
- Có câc Bảng/Query có quan hệ theo kiểu một - nhiều : Main Form sẽ sử dụng Bảng/Query bín một vă SubForm sử dụng Bảng/Query bín nhiều.
Kiểm tra xem câc Bảng/Query sử dụng có câc Field quan hệ hay không. Access sẽ dùng Field đối chiếu (Matching Field hay Linking Field) câc Bảng/Query để xâc định những Record đƣợc hiển thị trong Main Form vă SubForm.
- Nếu sử dụng Field đối chiếu không phải lă Primary key hay Foreign key thì phải lập chỉ mục cho Field năy.
4.5.2 Phđn loại SubForm
Khi tạo Form con chúng ta có thể thiết kế nó thănh dạng bảng, hoặc dạng Form, hoặc cả hai dạng trín.
Form dạng bảng: Lă loại dễ tạo nhất vă có thể sử dụng nhƣ bất kỳ bảng năo khâc nhƣ sắp xếp....
Form con dạng Form: Cho chúng ta thực sự linh hoạt vă mềm dẻo khi thiết kế hơn.
4.5.3 Thiết kế SubForm
a. Thiết kế Form con
Thông thƣờng chúng ta dùng bảng hay truy vấn lăm nguồn dữ liệu cho Form chính, một bảng hay truy vấn khâc lăm nguồn dữ liệu cho Form phụ. Nếu dữ liệu trong Form chính vă Form phụ có liín quan với nhau, chúng ta cần đânh giâ một số vấn đề sau:
Câc bảng hoặc truy vấn có quan hệ một- nhiều với nhau không? Nếu dùng Form phụ để thể hiện quan hệ một- nhiều, chúng ta nín dùng bảng bín một đối với bảng chính, bảng bín nhiều đối với bảng phụ.
Câc bảng hoặc truy vấn lăm nguồn dữ liệu cho Form chính/phụ có câc trƣờng liín kết không? Access dùng trƣờng kết nối để giới hạn số lƣợng bản ghi thể hiện trong Form phụ.
Câch tạo Form chính/phụ:
Thiết kế hai Form riíng biệt, sau đó kĩo Form phụ văo Form chính. Thiết kế Form chính
Tạo Form chính, dănh chỗ trín Form năy để chứa Form phụ. Lƣu vă đóng Form chính.
Thiết kế Form phụ:
Có thể thiết kế Form phụ để chỉ thể hiện dữ liệu dƣới dạng bảng, Form năy có cả hai khả năng trín.
Tạo Form mới, lập hai thuộc tính ViewAllowed vă Default View của Form tuỳ theo yíu cầu sử dụng nhƣ sau:
Form phụ chỉ trình băy dưới dạng bảng: Đặt câc trƣờng trín Form theo thứ tự chúng ta muốn chúng xuất hiện trong bảng. Lập cả hai thuộc tính ViewAllowed vă
Default View thănh Datasheet.
Form phụ chỉ trình băy dữ liệu dưới dạng Form: Sắp đặt câc điều khiển nhƣ trín. Lập thuộc tính ViewAllowed thănh Form vă Default View thănh Single form hay Continuous form.
Đưa Form phụ văo Form chính
Chuyển sang cửa sổ Database, nhấn F11
Kĩo Form phụ tử cửa sổ Database vă đặt văo một vị trí trín Form chính. Di chuyển Form phụ đến vị trí khâc, thay đổi nội dung nhên hoặc kích thƣớc nếu cần. Chuyển sang chế độ Form View để xem kết quả.
Hình 4.20. Ví dụ Form con
b. Liín kết Form chính vă Form con
Trong nhiều trƣờng hợp, khi nhúng SubForm văo MainForm thì Access sẽ thiết lập sự liín kết giữa chúng theo câc điều kiện sau:
- Main Form vă SubForm đều dùng dữ liệu nguồn lă Bảng vă quan hệ giữa hai Bảng năy đê đƣợc thiết lập.
- Main Form dùng dữ liệu nguồn từ Bảng có lă khóa chính (Primary key) vă SubForm dùng dữ liệu nguồn từ Bảng cũng chứa Field cùng tín với Field khóa chính của bảng cơ sở của Main Form trín lăm khóa cơ bản (có cùng kiểu dữ liệu hay tƣơng thích).
- Access dùng 2 Field có tín giống nhau của 2 Bảng lăm liín kết. Trƣờng hợp sự liín kết không thiết lập đƣợc hay muốn quy định Field khâc lăm mối liín kết thì phải quy định lại tại thuộc tính LinkMasterFields vă LinkChildFields của SubForm.
- Click chọn SubForm vă mở cửa sổ thuộc tính
- Thuộc tính LinkChildFields: chỉ định Field liín kết của SubForm. Nếu nhiều Field thì câch nhau bởi dấu chấm phẩy.
- Thuộc tính LinkMasterFields: chỉ định Field liín kết của Main Form .
4.5.4Sử dụng Sub- form trong form nhập dữ liệu
Để sử dụng kỹ thuật sub form trong nhập dữ liệu, ta thực hiện nhƣ sau: + Bƣớc 1: Tạo Sub form
+ Bƣớc 2: Tạo Main form
+ Bƣớc 3: Thiết lập mối liín hệ giữa Main form vă Sub form ở thuộc tính Link Child Field vă Link Master Field. Hai thuộc tính năy chứa tín trƣờng của khoâ liín hệ giữa bảng dữ liệu trong Sub form vă bảng dữ liệu trong Main form.
Chú ý: Thuộc tính Default: của Sub form lă DataSheet, còn của Main form lăSingle form.
Ví dụ: Thiết kếform nhập thông tin văo hoâ đơn bân hăng nhƣ sau:
Hình 4.21. Ví dụ Thiết kế form nhập thông tin
Với yíu cầu năy, chúng ta cần thực hiện:
- Tạo subform cho phĩp hiển thị vă nhập câc thông tin về hăng bân (2) - Tạo một mainform để nhập thông tin về hoâ đơn bân hăng (1)
- Mối liín kết giữa mainform với subform thông qua trƣờng hoadonID. Câc bƣớc thực hiện:
Bƣớc 1: Tạo form con
- Tạo mới mới form ở chế độ Design View
- Vì form con sẽ hiển thị dữ liệu dạng bảng nín phải thiết lập thuộc tính Default Viewcho form con lăDatasheet.
- Thiết lập nguồn dữ liệu lăm việc cho form con ở thuộc tính Record Source:
- Tiếp theo đóng măn hình thiết kế query.
- Sử dụng cửa sổ Field List để đƣa câc trƣờng cần thiết lín vùng Detail của form bao gồm: hangID, donvi, dongia, soluong, thanhtien;
Ghi lại form với một tín gọi (ví dụ: frmHangban) vă đóng lại. Bƣớc 2: Tạo form mẹ
- Tạo mới mới form ở chế độ Design View
- Thiết lập nguồn dữ liệu lăm việc cho form mẹ ở thuộc tính Record Source:
Hình 4.23. Thiết lập nguồn dữ liệu cho Form mẹ
- Sử dụng cửa sổ Field List để đƣa câc trƣờng cần thiết lín vùng Detail của form bao gồm: hoadonID, khacID, ngayban, diachi, email;
- Đƣa lín Main form đối tƣợng Subform\Subreport, sau đó thực hiện chọn tín Sub form đê tạo (frmHangban).
4.5.5 Sử dụng Sub- form trong form lọc dữ liệu
Để sử dụng kỹ thuật sub form trong lọc dữ liệu, ta thực hiện nhƣ sau: Bƣớc 1: Tạo Sub form dùng để hiển thị dữ liệu.
Bƣớc 2: Tạo Main form dùng để lựa chọn giâ trị thực hiện lọc.
Bƣớc 3: Thiết lập mối liín hệ giữa Main form vă Sub form ở thuộc tính Link Child Field vă Link Master Field. Hai thuộc tính năy chứa tín trƣờng của khoâ liín hệ giữa bảng dữ liệu trong Sub form vă bảng dữ liệu trong Main form.
Chú ý: Thuộc tính Default: của Sub form lă DataSheet, còn của Main form lă Single form.
Ví dụ: Thiết kế form lọc danh sâch cân bộtheo phòng ban:
Hình 4.24. Thiết kế form lọc danh sâch cân bộ theo phòng ban
Với yíu cầu năy, cần thực hiện:
- Tạo một form con hiển thị câc thông tin về danh sâch cân bộ. - Tạo một form mẹ cho phĩp chọn tín phòng ban.
- Thiết lập tham số cho form con sao cho mỗi khi chọn một phòng ban trín form mẹ, danh sâch cân bộ ở phòng ban đó sẽ tự động hiển thị ra form con.
Bƣớc 1: Tạo form con
- Tạo mới mới form ở chế độ Design View
- Thiết lập thuộc tính Default View cho form con lă Datasheet.
- Thiết lập nguồn dữ liệu lăm việc cho form con ở tuộc tính Record Source:
Hình 4.25. Thiết lập nguồn dữ liệu lăm việc cho form con
- Tại trƣờng phongbanid, ghi điều kiện lọc lă: [cbopb], đóng query.
- Sử dụng cửa sổ Field List để đƣa câc trƣờng cần thiết lín vùng Detail của form bao gồm: hoten, gioitinh, ngaysinh, tenchucvu;
Bƣớc 2: Tạo form mẹ
- Tạo mới mới Main form ở chế độ Design View.
- Tạo hộp Combo box chứa danh sâch câc phòng ban có thể chọn trín form mẹ. Thực hiện tạo bằng công cụ wizard, nguồn dữ liệu chọn từ danh sâch phòng ban.
Thiết lập thuộc tính Name cho Combo box trùng tín với tham số đê thiết lập ở form con lă cbopb.
- Sử dụng đối tƣợng Subform\Subreport trín thanh công cụ ToolBox để đƣa form con lín form mẹ.
4.5.6 Tạo Form có hai cấp SUBFORM
a. Khâi niệm
Thông thƣờng, Main Form / SubForm biểu thị mối quan hệ giữa hai dữ liệu nguồn (quan hệ Một - Nhiều). SubForm loại năy lă SubForm cấp 1.
Một số trƣờng hợp cần thiết kế Form biểu thị mối Quan hệ 2 cấp giữa 3 dữ liệu cơ sở.
Dữ liệu của Main Form quan hệ một - nhiều với dữ liệu của SubForm cấp1 Dữ liệu của SubForm cấp 1 có quan hệ với Dữ liệu của SubForm cấp 2.
Ví dụ: Thiết kế Form biểu thị câc mối quan hệ nhƣ sau
Main Form hiển thị Công trình (Bảng CONGTRINH) vă SubForm cấp 1 hiển thị phiếu xuất vật tƣ cho công trình chỉ định ở Main Form (Bảng XUAT_VT). Field quan hệ lă MACT (mê công trình).
SubForm cấp 2 hiển thị câc chi tiết của phiếu xuất vật tƣ (Bảng CHITIET_XUAT) liín quan đến phiếu xuất có Mê số phiếu xuất chỉ định tại SubForm cấp1. Field quan hệ lă SOPHIEU.
b.Câc bƣớc thiết kế
Bƣớc 1: Tạo vă ghi lƣu Main Form vă SubForm cấp 1
- Tạo Main Form vă SubForm cấp 1 nhƣ quy trình đê trình băy trín.
- Ví dụ: Tạo Main Form tín MAIN - CONGTRINH chứa dữ liệu của Bảng CONGTRINH vă SubForm cấp 1 tín SUB1 – XUAT_VT chứa dữ liệu của Bảng XUAT_VT .
Bƣớc 2: Tạo SubForm cấp 2
- Ví dụ: Tạo Form tín SUB2 – CHITIET_XUAT chứa dữ liệu từ Bảng CHITIET_XUAT.
Bƣớc 3: Nhúng SubForm cấp 2 văo Main/SubForm
- Mở Form MAIN - CONGTRINH trong cửa sổ thiết kế (SubForm cấp 1 lă SUB1 – XUAT_VT cũng đƣợc mở theo vă hiệu chỉnh cho có chỗ trống để chứa SubForm cấp 2).
- Nhấn phím F11 để trở về cửa sổ Database.
- Chọn vă kĩo Form hóa đơn thả văo Main Form tại vị trí dự kiến. Bƣớc 4: Thiết lập một Control lăm trung gian liín kết giữa 2 SubForm - Dùng ToolBox tạo một UnBound Control (TextBox)
- Bỏ nhên của Control năy (Label do Access đƣa văo khi tạo TextBox). - Đổi thuộc tính Name của Control (đang lă TextBox#) thănh Field quan hệ của SubForm 1 với SubForm 2.
Theo ví dụ lă SOPHIEU
- Nhập công thức văo Control trung gian theo cú phâp sau:
[Tín SubForm 1].Form![Tín Field liín kết của SubForm 1] Theo ví dụ lă : [SUB1 – XUAT_VT].Form![SOPHIEU]
- Đặt thuộc tính VISIBLE của Control lă NO
Hình 4. 26. Tạo Subform
Bƣớc 5 : Thiết lập liín kết giữa 2 SubForm - Chọn SubForm 2 - mở cửa sổ Properties.
- Đặt thuộc tính LinkMasterField lă tín của Control trung gian Theo ví dụ lă SOPHIEU
Theo ví dụ: LinkMasterField lă SOPHIEU
Hình 4.27. Tạo liín kết
KẾT QUẢ NHƢ SAU
- Chọn một công trình trín MainForm, SubForm1 hiển thị câc phiếu xuất vật tƣ cho công trình năy.
- Chọn một phiếu xuất vật tƣ trín SubForm 1, SubForm 2 hiển thị chi tiết liín quan đến phiếu xuất vật tƣ trín SubForm 1.
Hình 4.28. Kết quả tạo biểu mẫu có hai cấp SUBFORM