Với các tập thực thể có khóa gồm nhiều thuộc tính ghép lại, trong đó các thuộc tính chỉ phụ thuộc h.

33 40 0
Với các tập thực thể có khóa gồm nhiều thuộc tính ghép lại, trong đó các thuộc  tính chỉ phụ thuộc h.

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Với các tập thực thể có khóa gồm nhiều thuộc tính ghép lại, trong đó các thuộc tính chỉ phụ thuộc hàm vào một phần của khóa thì ta sẽ đưa nó vào một thực thể mới với khóa là bộ phận kh[r]

(1)

Phần I CÁC BƯỚC PHÂN TÍCH MỘT CHƯƠNG TRÌNH QUẢN TRỊ Cơ Sở Dữ Liệu I/ Tổng quan

Một chương trình quản trị CSDL thường dựa q trình phân tích thiết kế hệ thống, quản trị thơng tin để đảm bảo tính xác dễ dàng việc bảo trì, phát triển chương trình Đối với chương trình lớn, phức tạp nhóm chuyên viên thực hiện, việc xác định phân tích người có chun mơn có kinh nghiệm phân tích, sau phân tích xong giao cho phận thiết kế dưa thiết kế chi tiết sau dó thiết kế giao cho nhóm lập trình viết chương trình dựa bảng phân tích thiết kế đó, sau lập trình xong vấn đề cịn lại nhóm kiểm thử bảo trì sản phẩm Tuy nhiên chương trình quản trị thơng tin phục vụ cho quản lý kế toán nghiệp vụ doanh nghiệp nhỏ cho phận doanh nghiệp việc phân tích viết chương trình người thực

II/ Quá trình thực chương trình

Một dự án phân chia thành giai đoạn sau đây: xác định, phân tích, thiết kế, thực hiện, kiểm thử hệ thống, kiểm thử chấp nhận vận hành

- giai đoạn xác định: nhằm mục đích hiểu biết đầy đủ vấn đề người dùng để hình dung đầy đủ vấn đề dự án

- giai đoạn phân tích: nhằm mục tiêu xác định xác hệ thống xây dựng dự định làm theo quan điểm người sử dụng

- giai đoạn thiết kế

+ mức tổng thể: cho thấy kiến trúc chung hệ thống phần cứng lẫn phần mềm

+ tiếp tục chia nhỏ thiết kế thành phần nhỏ

+ thiết kế module: công việc tiến hành giai đoạn thực

- giai đoạn thực hiện: nhằm thiết kế chi tiết, cài đặt gáp nối thành phần, module hệ thống bao gồm phần cứng lẫn phần mềm

- giai đoạn kiểm thử hệ thống: tích hợp tấc phần hoạt động kiểm tra cặn kẽ phần, moodule theo chức thiết kế bao gồm phần cứng lẫn phần mềm

- kiểm thử chấp nhận: giai đoạn trình diễn cho khách hàng, người sử dụng chức hệ thống nhằn đạt ký nhận người sử dụng

- giai đoạn vận hành khai thác: chuyển giao toàn hệ thống diện rộng cho người sử dụng nhằm khai thác hệ thống để giải tốn thực tế

* Tóm tắc q trình thực chương trình quản trị liệu

- Khảo sát yêu cầu chương trình, làm rõ thông tin đầu vào, thông tin đầu báo cáo phục vụ cho việc quản lý

- Dựa yêu cầu chương trình, xây dựng sơ đồ chức năng, lấy làm sở để xây dựng hệ thống menu cho chương trình, hệ thống menu phải thể đầy đủ chức chương trình

- Dựa sơ đồ chức năng, xây dựng sơ đồ dòng liệu thể thông tin đưa vào hệ thống, sau chức xử lý lưu trữ tạo thành báo cáo

- Qua phân tích sơ đồ dịng liệu thơng tin khảo sát ban đầu, xây dựng thực thể (lưu trữ thông tin bản) mối quan hệ chúng Đó bước xây dựng sơ đồ quan hệ thực thể, làm sở để xây dựng Table relationship Access

III/ Khảo sát thông tin yêu cầu chương trình Khảo sát ban đầu

2 Khảo sát chi tiết Khảo sát trạng - Phương pháp quan sát - Phương pháp vấn - Phương pháp bảng hỏi - Phương pháp mẫu bảng ghi

(2)

A Chương trình quản lý hàng hóa cơng nợ cửa hàng Mơ tả yêu cầu

a Về quản lý hàng hóa

- Quản lý PNXK cửa hàng, phải biết mua hàng từ nhà cung cấp xuất cho khách hàng

- Báo cáo tình hình nhập xuất tồn mặt hàng theo số lượng theo giá trị Tồn kho theo giá trị tính theo phương pháp bình qn gia quyền kế tốn

b Về quản lý cơng nợ

- Quản lý phiếu thu tiền mặt khách hàng trả nợ phiếu chi tiền mặt trả nợ nhà cung cấp

- Đối với nhà cung cấp:

+ Khi mua hàng (PNK) làm cơng nợ nhà cung cấp tăng + Khi cửa hàng trả tiền cho NCC (phiếu chi) cơng nợ giảm - Đối với khách hàng mua hàng:

+ Khi xuất cho KH (PXK) làm công nợ khách hàng tăng

+ Khi cửa hàng thu tiền mặt khách hàng trả nợ (phiếu thu TM) cơng nợ khách hàng giảm

- Báo cáo tình hình cơng nợ khách hàng nhà cung cấp (nợ đầu kỳ, nợ tăng kỳ, nợ giảm kỳ, nợ cuối kỳ)

2 Các thông tin quản lý

Qua mô tả cho thấy thông tin quản lý bao gồm:

-Thông tin nhập: DMNCC, DMKH, DMHH, PNK, PXK, PHIEUTHU (KH trả nợ), PHIEUCHI (trả nợ NCC), CTPNK, CTPXK

-Thông tin xuất: Báo cáo nhập xuất hàng tồn kho, báo cáo công nợ khách hàng nhà cung cấp Thơng thường viết chương trình cho cơng ty cụ thể cơng ty cung cấp mẫu báo cáo mà công ty yêu cầu chương trình thực B Chương trình quản lý nhân tiền lương cho công ty

1 Mô tả chương trình a Về quản lý nhân

- Cập nhật lý lịch nhân viên - Xem lý lịch NV theo mã số - Xem lý lịch NV theo phòng ban - Điều chỉnh lý lịch NV

- Xóa NV

b Về quản lý tiền lương

Hàng ngày sau làm việc nhân viên thống kê đến phòng ban để ghi nhận nhân viên vắng mặt, sau ghi vào sổ chấm công Dựa vào sổ chấm công người điều hành biết NV vắng mặt ngày để ghi nhận vào sổ Cuối tháng dựa vào sổ để tính lương cho NV

- Nhập số liệu chấm công hàng tháng NV công ty - Thay đổi số liệu chấm công

- Thống kê lương theo phòng ban - Thống kê lương theo tồn cơng ty Các thơng tin quản lý

Thông tin nhập: Nhập danh sách, lý lịch nhân viên, ds phịng ban, ds chức vụ, số liệu chấm cơng hàng tháng

Thông tin xuất: Báo cáo lý lịch NV theo cá nhân theo phòng ban, thống kê lương cho NV theo cá nhân, theo phòng ban tồn cơng ty

V/ Đưa thực thể hệ thống

Từ việc mô tả hệ thống ta đưa thực thể hệ thống mổi thực thể hệ thống ký hiệu hình chử nhật có dạng sau

(3)

Mơ hình thực thể xác định đơn vị thông tin sở cần thiết cho hệ thống mối quan hệ chúng Điều có nghĩa tất liệu lưu giữ lần tồn hệ thống thâm nhập từ chương trình

Dữ liệu lưu trữ hệ thống dạng bảng, bảng thể sở liệu (Database) Xây dựng mơ hình thực thể xác định có bảng dùng hệ thống mối quan hệ chúng

TD: Bảng DMKH

Mã KH Tên KH Phone Địa

KH001 Đinh Thế Hiển 0903711720 254 Điện Biên Phủ Q.3 KH002 Nguyễn Văn Bách 3A Nguyễn Thiện Thuật Q.3

2 Các thành phần mô hình thực thể: a Thực thể:

Là đối tượng, kiện, thơng tin lưu trữ hệ thống dịng thơng tin bảng Một thực thể bao gồm tên thực thể thuộc tính thực thể

b Tập thực thể:

Là tập hợp thực thể có tính chất, mơ tả cho loại thơng tin

Thí dụ Khách hàng tập thực thể mơ tả khách hàng Trong sơ đồ thực thể, tập thực thể có dạng hình chữ nhật Nó tương đương với bảng

Tập thực thể sinh thuộc dạng sau:

- Liên quan đến giao dịch chủ yếu hệ thống TD: Đơn đặt hàng - Liên quan đến thuộc tính tài nguyên hệ thống TD: Kho, NCC, KH - Thông tin khái quát dạng thống kê Bảng lương

thực thể sinh thơng qua tên thực thể sau xác định thuộc tính thực thể

c Thuộc tính: Mỗi thực thể bao gồm nhiều thông tin, thông tin thuộc tính thực thể, cịn gọi Field thể cột bảng VD: Thực thể khách hàng gồm thuộc tính Mã KH, Số phone, Địa

Có loại thuộc tính:

- Thuộc tính khóa: Là thuộc tính thực thể mà ta xác định thực thể chý ý thuộc tính khố khơng trùng tập thực thể có tính TD: Mã KH thuộc tính khóa tập thực thể KH ứng với thực thể KH có mã số khơng trùng

- Thuộc tính mơ tả: thuộc tính mơ tả thơng tin đối tượng TD: Tên KH, Phone, địa

- Thuộc tính kết nối: Đối với tập thực thể thuộc tính mơ tả thực thể khác thuộc tính khóa, thuộc tính kết nối thể mối liên hệ bảng với bảng khác TD: Mã KH bảng Đơn hàng thuộc tính kết nối

Đơn hàng

Số hiệu đơn hàng Mã KH Ngày giao Địa giao 2001 KH002 5/12/96 1A Nguyễn Trãi

VI/ Mơ hình quan hệ thực thể (erd: entity relationship diagram) Mối quan hệ

a Quan hệ 1-1

Một thực thể tập thực thể tương ứng với thực thể tập thực thể ngược lại

TD: tập thực thể HV(Mã HV, Họ tên, Năm sinh, Địa chỉ) Đề tài tốt nghiệp(Mã đề tài, Tên đề tài, GVHD)

Mỗi HV làm đề tài tốt nghiệp sinh viên chọn đề tài tốt nghiệp HV khác khơng chọn đề tài

b Quan hệ 1-n

(4)

TD: Mỗi HV làm đề tài tốt nghiệp đề tài tốt nghiệp có nhiều HV làm

Thuộc tính khóa HV thuộc tính thể Đề tài TN c Quan hệ n-n

Một thực thể tập thực thể quan hệ với nhiều thực thể tập thực thể ngược lại

TD: Mỗi HV làm lúc nhiều đề tài tốt nghiệp lấy điểm cao số đó, đề tài có nhiều sinh viên chọn

2 Nhận xét

Quan hệ 1-n cần thiết việc thiết kết CSDL, thuộc tính khóa tập thực thể bên thuộc tính mơ tả tập thực thể bên nhiều Quan hệ 1-1 đưa đến việc nhập chung tập thực thể thành tập thực thể có thuộc tính thuộc tính tập thực thể ban đầu

Quan hệ n-n cần phải tách làm mối quan hệ 1-n cách tạo thêm tập thực thể thứ có thuộc tính khóa tập hợp thuộc tính khóa tập thực thể ban đầu

VD:

Tập thực thể mới: Điềm TN(Mã HV, Mã Đề tài, điểm) Phân tích mơ hình liệu cụ thể

Chương trình A

Từ DFD, kho liệu biến đổi thành tập thực thể, sau xác định mối quan hệ chúng trình phân tích

Chương trình B

VII/ Mơ hình liệu quan hệ

Xây dựng mơ hình liệu quan hệ cho phép xác định danh sách thuộc tính bảng thực thể

Q trình xây dựng mơ hình liệu quan hệ gồm bước sau: - Xác định thuộc tính cần cho mối quan hệ

- Chuẩn hóa

- Xác định mối quan hệ Xác định thuộc tính

Từ thơng tin đầu vào, ta lập nên bảng danh sách tập thực thể thuộc tính cho thực thể, sau xác định thuộc tính khóa, thuộc tính gạch để phân biệt thuộc tính cịn lại

TD:

(5)

Đơn đặt hàng (Số hiệu đơn, Mã KH, ngày đặt hàng) Chuẩn hóa tập thực thể

Chuẩn hóa:

Là trình khảo sát danh sách thuộc tính, phân tích chúng để đưa dạng cho:

- Khơng có lặp lại thuộc tính bảng khác trừ thuộc tính khóa thuộc tính kết nối

- Loại bỏ thuộc tính có giá trị kết thuộc tính khác - Những tập thực thể có vai trị ý nghĩa rõ ràng

Phụ thuộc hàm:

- Với giá trị khóa thời điểm xét có tương ứng giá trị cho thuộc tính khác bảng Nếu có thuộc tính khơng phụ thuộc hàm vào khóa phải nằm tập thực thể khác

Quá trình chuẩn hóa: Chọn khóa

- Mỗi tập thực thể có khóa

- Khóa hay nhiều thuộc tính tập thực thể xác định tính thực thể

- Nếu thuộc tính tự nhiên tập thực thể khơng tạo thành khóa, ta cần đưa thêm thuộc tính khóa vào TD: Mã KH

- Khi tập thực thể tạo từ việc chuyển mối quan hệ n -n thành mối quan hệ 1-n, khóa tập thực thể tập hợp khóa tập thực thể ban đầu

Chuẩn hóa dạng

Các thuộc tính xuất nhiều lần với thực thể loại bỏ tách với thuộc tính khóa tập thực thể ban đầu tạo thành tập thực thể Chuẩn hóa dạng

Các thuộc tính tập thực thể phải phụ thuộc hàm vào tồn khóa Tập thực thể có khóa thuộc tính đương nhiên thỏa dạng chuẩn

Với tập thực thể có khóa gồm nhiều thuộc tính ghép lại, thuộc tính phụ thuộc hàm vào phần khóa ta đưa vào thực thể với khóa phận khóa tập thực thể ban đầu

Chuẩn hóa dạng

Các thuộc tính khơng phụ thuộc hàm vào khóa mà cịn khơng phụ thuộc hàm vào thuộc tính khơng phải khóa thực thể

Khi có thuộc tính phụ thuộc hàm vào thuộc tính khơng khoá thực thể ta cần đưa chúng vào thực thể có khóa thuộc tính mà phụ thuộc hàm Kết hợp tập thực thể:

Sau chuẩn hóa tồn tập thực thể, tập thực thể giống kết hợp lại thành tập thực thể

3 Xác định mối quan hệ Ma trận thực thể

Tạo bảng ma trận để xác định mối quan hệ Các cột: liệt kê tập thực thể

Các hàng: liệt kê thuộc tính khóa có tập thực thể Đánh dấu:

Nếu khóa có tập thực thể đánh dấu X

Nếu khơng phải khóa có xuất tập thực thể đánh dấu O VIII/ Sơ đồ chức bfd (bussiness function diagram)

1 Khái niệm BFD

BFD việc cụ thể hóa có thứ bậc chức hệ thống Mỗi chức bao gồm nhiều chức thể khung sơ đồ

2 Xây dựng BFD theo phân cấp chức Phân mức:

(6)

- Một chức khơng nên có q chức con, thông thường khoảng mức phù hợp

- Sơ đồ nên cân bằng, chức mức có kích thước độ phức tạp tương đương

- Mỗi chức cần có tên nhất, đơn giản, thể bao quát chức nó, phản ánh thực tế nghiệp vụ

4 Phân tích BFD chương trình BFD chương trình A

Quản lý HH & CN

QLHH: CNPNK, CNPXK, CNDMHH, BCHH (Tổng hợp & CTiết)

QLCN: CNPT, CNPC, CNDMKH, CNDMNCC, BCCơng nợ (Tổng hợp & CTiết) BFD chương trình B

QLNS & TL

QLNS: Thêm NV mới, hiệu chỉnh NV, CN Phịng ban, chức vụ, Xem thơng tin NV, Xem thơng tin phịng ban, chức vụ

QLTL: Chấm công NV, Sửa số liệu CC, Báo cáo bảng lương ngày công LV tổng hợp & CT

IX/ Sơ đồ dòng liệu dfd (data flow diagram) Khái niệm:

DFD cách có thứ tự thơng tin chuyển từ chức tiến trình sang chức tiến trình khác Tuy nhiên khơng xác định thứ tự thực chức thời gian hao tốn cho việc truy xuất liệu Các thành phần DFD:

Chức tiến trình:

- Có tác dụng thay đổi thơng tin đầu vào để tạo thông tin đầu - Tên tiến trình DFD cần đặt trùng tên với tên chức BFD

Dòng liệu: Thể đường thơng tin vào tiến trình Mỗi dịng liệu có tên

Kho liệu: Là File liệu máy tính tài liệu lưu trữ văn phòng

Tác nhân: Là phần tử hệ thống tác động trực tiếp đến tiến trình

3 Ký hiệu biểu diễn - Tiến trình hình trịn - Dịng liệu hình mũi tên - Tác nhân hình vng

- Kho liệu hình bình hành

4 Phân tích DFD chương trình a DFD chương trình A( trang 212 ) b DFD chương trình B( trang 155 ) X/ Giao diện

- thiết kế hỏi đáp - thiết kế menu

- dùng hình ảnh minh hoạ - dùng biểu mẩu

- dùng ngôn ngử lịnh - kết hợp

PHẦN II HƯỚNG DẪN THIẾT KẾ CHƯƠNG TRÌNH

I/ Quá trình thực chương trình Access 1/ yêu cầu lý thuyết:

(7)

Việc thực lập trình chương trình Access dựa bảng phân tích Nếu thiếu bước phân tích mà sử dụng Access để triển khai chương trình dễ bị thiếu sót lúng túng, đặc biệt Table chương trình

Sau có bảng phân tích, lập trình theo bước sau:

- Dựa sơ đồ thực thể (ERD) mơ hình quan hệ để tạo Table (bao gồm field, kiểu liệu, khóa Table) sử dụng Relationship để tạo quan hệ Table

- Dựa sơ đồ chức bảng phân tích (BFD), tạo hệ thống menu phù hợp

- Xác định chức cần xử lý, phác thảo giải thuật, chức cần thực trước, chức thực sau chức làm độc lập khơng phụ thuộc vào chức khác Việc mô tả giải thuật giúp cho giai đoạn lập trình Access dễ dàng

- Tạo cáo Form cập nhật thông tin gắn vào menu cập nhật Chúng ta nên tạo Form cập nhật danh mục trước (thí dụ DMHH, DMKH) đến Form chứa thông tin cập nhật thường xuyên (thí dụ PNK, PXK) Sau tạo form xong, nhập số thông tin để phục vụ cho việc kiểm tra Query xử lý, nhập thông tin theo trình tự nhập thơng tin bên form danh mục trước

- Xây dựng Query xử lý, modul Report phục vụ báo cáo Công việc đòi hỏi kết hợp Form, Query, Macro, Report Modul để thực theo ý muốn

(chú ý khơng thiết phải có Modul, khơng quan trọng chương trình sử dụng kỹ thuật mà phải đáp ứng yêu cầu đề ra)

- Sau thiết kế Form khởi động chương trình để dễ dàng cho người sử dụng Chương trình phải thiết kế cho dễ sử dụng, rõ ràng, đơn giản

(chú ý tránh giao diện phức tạp, nhiều màu sắc làm rối mắt người dùng)

giới thiệu database access, tạo table, tạo quan hệ table, nhập liệu cho table, thiết kế form nhập liệu, viết mã lệnh nút form, thiết kế query, sql, thiết kế report, thiết kế moodule, thiết kế macro, form chức năng, kết nối chương trình, tạo setup

(8)

III/.Quan hệ table

IV/ Nhập liệu save lại Bộ liệu nhập cho TABLE:

- tạo modul capnhat Option Compare Database Public Sub moirec()

'DoCmd.GoToRecord , , acNewRec

(9)

End Sub

Public Sub luurec()

'DoCmd.DoMenuItem acFormBar, acRecordsMenu, acSaveRecord, , acMenuVer70 DoCmd.RunCommand acCmdSaveRecord

End Sub

Public Sub huyrec()

'DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70 DoCmd.RunCommand acCmdUndo

End Sub

Public Sub xoarec()

'DoCmd.DoMenuItem acFormBar, acEditMenu, 8, , acMenuVer70 'DoCmd.DoMenuItem acFormBar, acEditMenu, 6, , acMenuVer70 DoCmd.RunCommand acCmdDeleteRecord

End Sub

- tao module dichuyen Option Compare Database Public Sub daurec()

'DoCmd.GoToRecord , , acFirst

DoCmd.RunCommand acCmdRecordsGoToFirst End Sub

Public Sub luirec()

'DoCmd.GoToRecord , , acPrevious

DoCmd.RunCommand acCmdRecordsGoToPrevious End Sub

Public Sub toirec()

'DoCmd.GoToRecord , , acNext

DoCmd.RunCommand acCmdRecordsGoToNext End Sub

Public Sub cuoirec()

'DoCmd.GoToRecord , , acLast

DoCmd.RunCommand acCmdRecordsGoToLast End Sub

Public Sub thoatrec() 'DoCmd.Close

DoCmd.RunCommand acCmdClose End Sub

Public Sub dichuyen(sukien As String) Select Case sukien

Case "dau"

DoCmd.RunCommand acCmdRecordsGoToFirst Case "lui"

DoCmd.RunCommand acCmdRecordsGoToPrevious Case "toi"

DoCmd.RunCommand acCmdRecordsGoToNext Case "cuoi"

DoCmd.RunCommand acCmdRecordsGoToLast Case "thoat"

DoCmd.RunCommand acCmdClose Case "moi"

DoCmd.RunCommand acCmdRecordsGoToNew Case "xoa"

DoCmd.RunCommand acCmdDeleteRecord Case "luu"

DoCmd.RunCommand acCmdSaveRecord Case "huy"

(10)

End Select End Sub

* ý thiết kế không chọn đối tượng control wizard công cụ toolbox

V/ Thiết kế form giao diện:

1/.Thiết Kế Form Thay Đổi Ngày Hệ Thống (Dùng làm form Startup chương trình)

- nhấn nút more control công cụ toolbox, chọn microsoft date and time picker control, kéo thả vào form

Private Sub cancel_Click() Me.ok.SetFocus

Me.layngay.Visible = False Me.NGAY.Visible = False End Sub

Private Sub Form_Activate() DoCmd.Maximize

End Sub

Private Sub ok_Click() Me.ok.SetFocus

Me.NGAY.Visible = True Me.layngay.Visible = True Me.Refresh

Date = Me.layngay Me.Refresh

End Sub

Đối tượng ngay: Hiển thị ngày hệ thống cách dùng hàm Date() Đối tượng layNgay: hiển thị ngày tháng năm cho người sử dụng chọn hệ thống không thực tế

Nút ok: Khi nhấn vào sửa ngày hệ thống ngày mà người sử dụng chọn đối tượng

Nút cancel: không cho sữa đổi ngày hệ thống 2/.Tạo Form Cập Nhật DMHH

- Vào Tab Form/New/Design View, record Source = DMHH - Bật Form Header Form Footer

- Thiết kế giống sau:

Tạo function trả giá trị mã hàng mới, tham số nhập vào mã nhà cung cấp

Mở Table DMHH chế độ Design, vào menu View/Index, tạo Index tên STT, xếp field MAHANG giảm dần Mục đích xếp để Browse Table mẫu tin liệt kê theo MAHANG giảm dần

Khi người sử dụng nhấn nút tạo mới, Focus chuyển đến comboBox mã nhà cung cấp cho người sử dụng chọn, sau chọn kích hoạt kiện After Update để tạo mã hàng

Viết Code cho kiện After Update combo MANCC sau: Private Sub MANCC_AfterUpdate()

MAHANG = MAHH(Me.MANCC) End Sub

Ta muốn cho ComboBox MANCC người sử dụng nhấn nút tạo mới, mẫu tin có bị mờ cách viết Code cho kiện Current Form

Viết Code cho kiện Current Form: Private Sub Form_Current()

(11)

Me.MANCC.Enabled = False End If

End Sub

Chọn thẻ Module tạo hàm, đặt tên MAHH Hàm trả mã hàng phụ thuộc vào mã nhà cung cấp nên có tham số mã nhà cung cấp tương ứng mà ta đưa vào sau

Public Function MAHH(NCC As String) Dim db As DAO.Database

Dim HH As DAO.Recordset Set db = CurrentDb

Set HH = db.OpenRecordset("DMHH") If HH.RecordCount = Then

MAHH = NCC & "001" Exit Function Else

HH.Index = "STT" HH.MoveFirst

MAHH = NCC & Format(Val(Right(HH!MAHANG, 3)) + 1, "000") End If

End Function

Mã hàng tạo tương ứng với nhà cung cấp cung cấp mặt hàng kết hợp với số thứ tự tăng dần tương ứng với số mặt hàng mà nhà cung cấp cung cấp cho cửa hàng

NCC01 cung cấp mặt hàng CocaCola => Mã hàng tương ứng NCC01001 NCC01 cung cấp mặt hàng Pepsi => Mã hàng tương ứng NCC01002 Giải thích giải thuật hàm:

Khai báo biến DB kiểu Database (cơ sở liệu), sau đặt biến DB tham chiếu đến sở liệu mở, có nghĩa DB chứa tất Table từ DMKH đến CTPXK

Khai báo biến RS kiểu Recordset (kiểu bảng), đặt biến RS tham chiếu đến bảng cần xử lý DMHH để tạo mã hàng tương ứng

Kiểm tra Table DMHH có mẫu tin chưa, chưa có phát sinh mã hàng = Tham số nhập vào & “001” (tham số nhập vào MANCC)

Nếu có mẫu tin xếp Table DMHH theo field MAHANG giảm dần cách gọi Index tên STT tạo sẵn phần trên, sau nhảy lên mẫu tin Thực vịng lặp tìm đến mã hàng có ký tự đầu mã nhà cung cấp nhập vào hàm, tìm thấy mẫu tin thoả có nghĩa mã hàng có ký tự sau giá trị lớn nhất, dùng hàm Right cắt ký tự cộng thêm 1, sau gắn vào bên trái mã nhà cung cấp tương ứng, trả giá trị cho hàm MAHH khỏi hàm Ngược lại, tìm đến cuối mẫu tin chưa thấy đến mẫu tin có ký tự đầu mã hàng nhỏ nhà cung cấp cho hàm MAHH trả giá trị nhà cung cấp ghép với số thứ tự 001

- nút đầu: đặt thuộc tính enable=no - nút lưu, huỷ:visabled=no

- đặt thuộc tính form: default view – continuous forms - đặt thuộc tính text box: locked=yes

- mã lệnh cho form CNDMHH Option Compare Database Private Sub dau_Click() On Error GoTo Err_dau_Click Me.MAHANG.SetFocus Call daurec

(12)

Err_dau_Click: MsgBox "" End Sub

Private Sub Form_Activate() DoCmd.Maximize

End Sub

Private Sub lui_Click() On Error GoTo Err_lui_Click Me.MAHANG.SetFocus Call luirec

Me.toi.Enabled = True Me.cuoi.Enabled = True Exit Sub

Err_lui_Click:

MsgBox "Da den mau tin dau tien", 64, "Th«ng B¸o" Me.dau.Enabled = False

Me.lui.Enabled = False End Sub

Private Sub MANCC_AfterUpdate() MAHANG = MAHH(Me.MANCC)

End Sub

Private Sub toi_Click() On Error GoTo Err_toi_Click Me.MAHANG.SetFocus Call toirec

Me.dau.Enabled = True Me.lui.Enabled = True Exit Sub

Err_toi_Click:

MsgBox "Da den mau tin cuoi cung", 64, "Thong bao" Me.toi.Enabled = False

Me.cuoi.Enabled = False End Sub

Private Sub cuoi_Click() On Error GoTo Err_cuoi_Click Me.MAHANG.SetFocus

Call cuoirec

Me.toi.Enabled = False Me.cuoi.Enabled = False Me.dau.Enabled = True Me.lui.Enabled = True Exit Sub

Err_cuoi_Click:

MsgBox Err.Description End Sub

Private Sub thoat_Click() On Error GoTo Err_thoat_Click Call thoatrec

Exit Sub

Err_thoat_Click:

MsgBox Err.Description End Sub

Private Sub moi_Click() On Error GoTo Err_MOI_Click Me.MAHANG.SetFocus Call moirec

(13)

Me.TENHANG.Locked = False Me.QUICACH.Locked = False Me.DVT.Locked = False Me.GIABAN.Locked = False Me.TONDAUKY.Locked = False Me.TGTONDAUKY.Locked = False Me.moi.Visible = False

Me.xoa.Visible = False Me.luu.Visible = True Me.huy.Visible = True Exit Sub

Err_MOI_Click:

MsgBox Err.Description End Sub

Private Sub luu_Click() On Error GoTo Err_luu_Click Me.MAHANG.SetFocus Call luurec

Me.MAHANG.Locked = True Me.TENHANG.Locked = True Me.QUICACH.Locked = True Me.DVT.Locked = True Me.GIABAN.Locked = True Me.TONDAUKY.Locked = True Me.TGTONDAUKY.Locked = True Me.luu.Visible = False Me.huy.Visible = False Me.moi.Visible = True Me.xoa.Visible = True Exit Sub

Err_luu_Click:

MsgBox Err.Description End Sub

Private Sub huy_Click() On Error GoTo Err_huy_Click Me.MAHANG.SetFocus Call huyrec

Me.MAHANG.Locked = True Me.TENHANG.Locked = True Me.QUICACH.Locked = True Me.DVT.Locked = True Me.GIABAN.Locked = True Me.TONDAUKY.Locked = True Me.TGTONDAUKY.Locked = True Exit Sub

Err_huy_Click:

MsgBox "Huy thao tac", 64, "Thong bao" Me.huy.Visible = False

Me.luu.Visible = False Me.moi.Visible = True Me.xoa.Visible = True End Sub

Private Sub xoa_Click() On Error GoTo Err_xoa_Click Call xoarec

(14)

MsgBox Err.Description End Sub

Vẽ ComboBox Form Header, vào Properties ComboBox, đổi Column Count = 2, chọn thuộc tính Row Source, nhấn vào nút có bên phải Query, Add vào Table DMNCC, chọn cột hiển thị MANCC TENNCC giống sau:

3/.Tạo Form Cập Nhật DMKH: - tăng mã DMKH

Public Function MKH() Dim db As DAO.Database Dim KH As DAO.Recordset Set db = CurrentDb

Set KH = db.OpenRecordset("DMKH") If KH.RecordCount = Then

MKH = "KH01" Exit Function Else

KH.Index = "STT" KH.MoveFirst

MKH = "KH" & Format(Val(Right(KH!MAKH, 2)) + 1, "00") End If

End Function - mã lệnh nút

Option Compare Database Private Sub dau_Click() On Error GoTo Err_dau_Click Me.MAKH.SetFocus

Call dau

Me.dau.Enabled = False Me.lui.Enabled = False Me.toi.Enabled = True Me.cuoi.Enabled = True Exit Sub

Err_dau_Click:

MsgBox Err.Description End Sub

Private Sub Form_Activate() DoCmd.Maximize

End Sub

Private Sub lui_Click() On Error GoTo Err_lui_Click Me.MAKH.SetFocus

Call luirec

Me.toi.Enabled = True Me.cuoi.Enabled = True Exit Sub

Err_lui_Click:

MsgBox "Da den mau tin dau tien", 64, "Thông Báo" Me.dau.Enabled = False

Me.lui.Enabled = False End Sub

Private Sub toi_Click() On Error GoTo Err_toi_Click Me.MAKH.SetFocus

(15)

Me.dau.Enabled = True Me.lui.Enabled = True Exit Sub

Err_toi_Click:

MsgBox "Da den mau tin cuoi cung", 64, "Thong bao" Me.toi.Enabled = False

Me.cuoi.Enabled = False End Sub

Private Sub cuoi_Click() On Error GoTo Err_cuoi_Click Me.MAKH.SetFocus

Call cuoirec

Me.toi.Enabled = False Me.cuoi.Enabled = False Me.dau.Enabled = True Me.lui.Enabled = True Exit Sub

Err_cuoi_Click:

MsgBox Err.Description End Sub

Private Sub thoat_Click() On Error GoTo Err_thoat_Click Call thoatrec

Exit Sub Err_thoat_Click:

MsgBox Err.Description End Sub

Private Sub moi_Click() On Error GoTo Err_MOI_Click Me.MAKH.SetFocus

Call moirec

Me.MAKH.Locked = False Me.TENKH.Locked = False Me.DIACHI.Locked = False Me.NODAUKY.Locked = False Me.moi.Visible = False Me.xoa.Visible = False Me.luu.Visible = True Me.huy.Visible = True MAKH = MKH()

Exit Sub Err_MOI_Click:

MsgBox Err.Description End Sub

Private Sub luu_Click() On Error GoTo Err_luu_Click Me.MAKH.SetFocus

Call luurec

(16)

Err_luu_Click:

MsgBox Err.Description End Sub

Private Sub huy_Click() On Error GoTo Err_huy_Click Me.MAKH.SetFocus

Call huyrec

Me.MAKH.Locked = True Me.TENKH.Locked = True Me.DIACHI.Locked = True Me.NODAUKY.Locked = True Exit Sub

Err_huy_Click:

MsgBox "Huy thao tac", 64, "Thong bao" Me.huy.Visible = False

Me.luu.Visible = False Me.moi.Visible = True Me.xoa.Visible = True End Sub

Private Sub xoa_Click() On Error GoTo Err_xoa_Click Call xoarec

Exit Sub Err_xoa_Click:

MsgBox Err.Description End Sub

4/ Tạo Form Cập Nhật DMNCC:

- hàm tăng mã DMNCC Public Function NCCAP() Dim db As DAO.Database Dim NC As DAO.Recordset Set db = CurrentDb

Set NC = db.OpenRecordset("DMNCC") If NC.RecordCount = Then

NCCAP = "NCC01" Exit Function Else

NC.Index = "STT" NC.MoveFirst

NCCAP = "NCC" & Format(Val(Right(NC!MANCC, 2)) + 1, "00") End If

End Function

- mã lệnh nút form DMNCC Option Compare Database

Private Sub dau_Click() On Error GoTo Err_dau_Click Me.MANCC.SetFocus

Call daurec

Me.dau.Enabled = False Me.lui.Enabled = False Me.toi.Enabled = True Me.cuoi.Enabled = True Exit Sub

Err_dau_Click:

(17)

End Sub

Private Sub Form_Activate() DoCmd.Maximize

End Sub

Private Sub lui_Click() On Error GoTo Err_lui_Click Me.MANCC.SetFocus

Call luirec

Me.toi.Enabled = True Me.cuoi.Enabled = True Exit Sub

Err_lui_Click:

MsgBox "Da den mau tin dau tien", 64, "Thong B¸o" Me.dau.Enabled = False

Me.lui.Enabled = False End Sub

Private Sub toi_Click() On Error GoTo Err_toi_Click Me.MANCC.SetFocus

Call toirec

Me.dau.Enabled = True Me.lui.Enabled = True Exit Sub

Err_toi_Click:

MsgBox "Da den mau tin cuoi cung", 64, "Thong bao" Me.toi.Enabled = False

Me.cuoi.Enabled = False End Sub

Private Sub cuoi_Click() On Error GoTo Err_cuoi_Click Me.MANCC.SetFocus

Call cuoirec

Me.toi.Enabled = False Me.cuoi.Enabled = False Me.dau.Enabled = True Me.lui.Enabled = True Exit Sub

Err_cuoi_Click:

MsgBox Err.Description End Sub

Private Sub thoat_Click() On Error GoTo Err_thoat_Click Call thoatrec

Exit Sub Err_thoat_Click:

MsgBox Err.Description End Sub

Private Sub moi_Click() On Error GoTo Err_MOI_Click Me.MANCC.SetFocus

Call moirec

(18)

Me.luu.Visible = True Me.huy.Visible = True MANCC = NCCAP()

Exit Sub Err_MOI_Click:

MsgBox Err.Description End Sub

Private Sub luu_Click() On Error GoTo Err_luu_Click Me.MANCC.SetFocus

Call luurec

Me.MANCC.Locked = True Me.TENNCC.Locked = True Me.DIACHI.Locked = True Me.NODAUKY.Locked = True Me.luu.Visible = False Me.huy.Visible = False Me.moi.Visible = True Me.xoa.Visible = True Exit Sub

Err_luu_Click:

MsgBox Err.Description End Sub

Private Sub huy_Click() On Error GoTo Err_huy_Click Me.MANCC.SetFocus

Call huyrec

Me.MANCC.Locked = True Me.TENNCC.Locked = True Me.DIACHI.Locked = True Me.NODAUKY.Locked = True Exit Sub

Err_huy_Click:

MsgBox "Huy thao tac", 64, "Thong bao" Me.huy.Visible = False

Me.luu.Visible = False Me.moi.Visible = True Me.xoa.Visible = True End Sub

Private Sub xoa_Click() On Error GoTo Err_xoa_Click Call xoarec

Exit Sub Err_xoa_Click:

MsgBox Err.Description End Sub

5/ Tạo Form Cập Nhật PCHI:

- hàm tăng mã phiếu: nhập, xuất, thu, chi Public Function NXTC(S As String)

Dim db As DAO.Database Dim TB As DAO.Recordset Set db = CurrentDb Select Case S Case "N"

(19)

Case "X"

Set TB = db.OpenRecordset("PXK") Case "T"

Set TB = db.OpenRecordset("PHIEUTHU") Case "C"

Set TB = db.OpenRecordset("PHIEUCHI") End Select

If TB.RecordCount = Then NXTC = "PHIEU" & "001" Exit Function

Else

TB.Index = "STT" TB.MoveFirst

NXTC = "PHIEU" & Format(Val(Right(TB!MSP, 3)) + 1, "000") End If

End Function

Mở Table PNK, PXK, PHIEUTHU, PHIEUCHI chế độ Design, vào menu View/Index, tạo Index tên STT, xếp field MSP giảm dần Mục đích xếp để mở Table với index mẫu tin liệt kê MSP giảm dần

Chọn thẻ Module, cuối Module tạo thêm hàm mới, đặt tên NXTC(s as string) Hàm trả mã số phiếu phụ thuộc số thứ tự phiếu

- mã lệnh nút form CNPCHI Option Compare Database

Private Sub dau_Click() On Error GoTo Err_dau_Click Me.MSP.SetFocus

Call daurec

Me.dau.Enabled = False Me.lui.Enabled = False Me.toi.Enabled = True Me.cuoi.Enabled = True Exit Sub

Err_dau_Click:

MsgBox Err.Description Resume Exit_dau_Click End Sub

Private Sub Form_Activate() DoCmd.Maximize

End Sub

Private Sub lui_Click() On Error GoTo Err_lui_Click Me.MSP.SetFocus

Call luirec

Me.toi.Enabled = True Me.cuoi.Enabled = True Exit Sub

Err_lui_Click:

MsgBox "Da den mau tin dau tien", 64, "Thong B¸o" Me.dau.Enabled = False

Me.lui.Enabled = False End Sub

Private Sub toi_Click() On Error GoTo Err_toi_Click Me.MSP.SetFocus

Call toirec

(20)

Me.lui.Enabled = True Exit Sub

Err_toi_Click:

MsgBox "Da den mau tin cuoi cung", 64, "Thong bao" Me.toi.Enabled = False

Me.cuoi.Enabled = False End Sub

Private Sub cuoi_Click() On Error GoTo Err_cuoi_Click Me.MSP.SetFocus

Call cuoirec

Me.toi.Enabled = False Me.cuoi.Enabled = False Me.dau.Enabled = True Me.lui.Enabled = True Exit Sub

Err_cuoi_Click:

MsgBox Err.Description End Sub

Private Sub thoat_Click() On Error GoTo Err_thoat_Click Call thoatrec

Exit Sub Err_thoat_Click:

MsgBox Err.Description End Sub

Private Sub moi_Click() On Error GoTo Err_MOI_Click Me.MSP.SetFocus

Call moirec

Me.MSP.Locked = False Me.NGAY.Locked = False Me.LYDO.Locked = False Me.SOTIEN.Locked = False Me.moi.Visible = False Me.xoa.Visible = False Me.luu.Visible = True Me.huy.Visible = True MSP = NXTC("C")

Exit Sub Err_MOI_Click:

MsgBox Err.Description End Sub

Private Sub luu_Click() On Error GoTo Err_luu_Click Me.MSP.SetFocus

Call luurec

Me.MSP.Locked = True Me.NGAY.Locked = True Me.LYDO.Locked = True Me.SOTIEN.Locked = True Me.luu.Visible = False Me.huy.Visible = False Me.moi.Visible = True Me.xoa.Visible = True Exit Sub

(21)

MsgBox Err.Description End Sub

Private Sub huy_Click() On Error GoTo Err_huy_Click Me.MSP.SetFocus

Call huyrec

Me.MSP.Locked = True Me.NGAY.Locked = True Me.LYDO.Locked = True Me.SOTIEN.Locked = True Exit Sub

Err_huy_Click:

MsgBox "Huy thao tac", 64, "Thong bao" Me.huy.Visible = False

Me.luu.Visible = False Me.moi.Visible = True Me.xoa.Visible = True End Sub

Private Sub xoa_Click() On Error GoTo Err_xoa_Click Call xoarec

Exit Sub Err_xoa_Click:

MsgBox Err.Description End Sub

6/ Tạo Form Cập Nhật PTHU:

- mã lệnh nút form PTHU: Option Compare Database

Private Sub dau_Click() On Error GoTo Err_dau_Click Me.MSP.SetFocus

Call daurec

Me.dau.Enabled = False Me.lui.Enabled = False Me.toi.Enabled = True Me.cuoi.Enabled = True Exit Sub

Err_dau_Click:

MsgBox Err.Description End Sub

Private Sub Form_Activate() DoCmd.Maximize

End Sub

Private Sub lui_Click() On Error GoTo Err_lui_Click Me.MSP.SetFocus

Call luirec

Me.toi.Enabled = True Me.cuoi.Enabled = True Exit Sub

Err_lui_Click:

MsgBox "Da den mau tin dau tien", 64, "Thong B¸o" Me.dau.Enabled = False

(22)

Private Sub toi_Click() On Error GoTo Err_toi_Click Me.MSP.SetFocus

Call toirec

Me.dau.Enabled = True Me.lui.Enabled = True Exit Sub

Err_toi_Click:

MsgBox "Da den mau tin cuoi cung", 64, "Thong bao" Me.toi.Enabled = False

Me.cuoi.Enabled = False End Sub

Private Sub cuoi_Click() On Error GoTo Err_cuoi_Click Me.MSP.SetFocus

Call cuoirec

Me.toi.Enabled = False Me.cuoi.Enabled = False Me.dau.Enabled = True Me.lui.Enabled = True Exit Sub

Err_cuoi_Click:

MsgBox Err.Description End Sub

Private Sub thoat_Click() On Error GoTo Err_thoat_Click Call thoatrec

Exit Sub Err_thoat_Click:

MsgBox Err.Description End Sub

Private Sub moi_Click() On Error GoTo Err_MOI_Click Me.MSP.SetFocus

Call moirec

Me.MSP.Locked = False Me.NGAY.Locked = False Me.LYDO.Locked = False Me.SOTIEN.Locked = False Me.moi.Visible = False Me.xoa.Visible = False Me.luu.Visible = True Me.huy.Visible = True MSP = NXTC("T")

Exit Sub Err_MOI_Click:

MsgBox Err.Description End Sub

Private Sub luu_Click() On Error GoTo Err_luu_Click Me.MSP.SetFocus

Call luurec

(23)

Me.huy.Visible = False Me.moi.Visible = True Me.xoa.Visible = True Exit Sub

Err_luu_Click:

MsgBox Err.Description End Sub

Private Sub huy_Click() On Error GoTo Err_huy_Click Me.MSP.SetFocus

Call huyrec

Me.MSP.Locked = True Me.NGAY.Locked = True Me.LYDO.Locked = True Me.SOTIEN.Locked = True Exit Sub

Err_huy_Click:

MsgBox "Huy thao tac", 64, "Thong bao" Me.huy.Visible = False

Me.luu.Visible = False Me.moi.Visible = True Me.xoa.Visible = True End Sub

Private Sub xoa_Click() On Error GoTo Err_xoa_Click Call xoarec

Exit Sub Err_xoa_Click:

MsgBox Err.Description End Sub

7/ Tạo Form Cập Nhật PNK:

- mã lệnh nút form PNK Option Compare Database

Private Sub dau_Click() On Error GoTo Err_dau_Click Me.MSP.SetFocus

Call daurec

Me.dau.Enabled = False Me.lui.Enabled = False Me.toi.Enabled = True Me.cuoi.Enabled = True Exit Sub

Err_dau_Click:

MsgBox Err.Description End Sub

Private Sub Form_Activate() DoCmd.Maximize

End Sub

Private Sub lui_Click() On Error GoTo Err_lui_Click Me.MSP.SetFocus

Call luirec

(24)

Err_lui_Click:

MsgBox "Da den mau tin dau tien", 64, "Thong B¸o" Me.dau.Enabled = False

Me.lui.Enabled = False End Sub

Private Sub toi_Click() On Error GoTo Err_toi_Click Me.MSP.SetFocus

Call toirec

Me.dau.Enabled = True Me.lui.Enabled = True Exit Sub

Err_toi_Click:

MsgBox "Da den mau tin cuoi cung", 64, "Thong bao" Me.toi.Enabled = False

Me.cuoi.Enabled = False End Sub

Private Sub cuoi_Click() On Error GoTo Err_cuoi_Click Me.MSP.SetFocus

Call cuoirec

Me.toi.Enabled = False Me.cuoi.Enabled = False Me.dau.Enabled = True Me.lui.Enabled = True Exit Sub

Err_cuoi_Click:

MsgBox Err.Description End Sub

Private Sub thoat_Click() On Error GoTo Err_thoat_Click Call thoatrec

Exit Sub Err_thoat_Click:

MsgBox Err.Description End Sub

Private Sub moi_Click() On Error GoTo Err_MOI_Click Me.MSP.SetFocus

Call moirec

Me.MSP.Locked = False Me.NGAY.Locked = False Me.moi.Visible = False Me.xoa.Visible = False Me.luu.Visible = True Me.huy.Visible = True MSP = NXTC("N")

Exit Sub Err_MOI_Click:

MsgBox Err.Description End Sub

Private Sub luu_Click() On Error GoTo Err_luu_Click Me.MSP.SetFocus

Call luurec

(25)

Me.luu.Visible = False Me.huy.Visible = False Me.moi.Visible = True Me.xoa.Visible = True Exit Sub

Err_luu_Click:

MsgBox Err.Description End Sub

Private Sub huy_Click() On Error GoTo Err_huy_Click Me.MSP.SetFocus

Call huyrec

Me.MSP.Locked = True Me.NGAY.Locked = True Exit Sub

Err_huy_Click:

MsgBox "Huy thao tac", 64, "Thong bao" Me.huy.Visible = False

Me.luu.Visible = False Me.moi.Visible = True Me.xoa.Visible = True End Sub

Private Sub xoa_Click() On Error GoTo Err_xoa_Click Call xoarec

Exit Sub Err_xoa_Click:

MsgBox Err.Description End Sub

8/ Tạo Form Cập Nhật PXK:

- mã lệnh form PXK Option Compare Database Private Sub dau_Click() On Error GoTo Err_dau_Click Me.MSP.SetFocus

Call daurec

Me.dau.Enabled = False Me.lui.Enabled = False Me.toi.Enabled = True Me.cuoi.Enabled = True Exit Sub

Err_dau_Click:

MsgBox Err.Description End Sub

Private Sub Form_Activate() DoCmd.Maximize

End Sub

Private Sub lui_Click() On Error GoTo Err_lui_Click Me.MSP.SetFocus

Call luirec

(26)

Err_lui_Click:

MsgBox "Da den mau tin dau tien", 64, "Thong B¸o" Me.dau.Enabled = False

Me.lui.Enabled = False End Sub

Private Sub toi_Click() On Error GoTo Err_toi_Click Me.MSP.SetFocus

Call toirec

Me.dau.Enabled = True Me.lui.Enabled = True Exit Sub

Err_toi_Click:

MsgBox "Da den mau tin cuoi cung", 64, "Thong bao" Me.toi.Enabled = False

Me.cuoi.Enabled = False End Sub

Private Sub cuoi_Click() On Error GoTo Err_cuoi_Click Me.MSP.SetFocus

Call cuoirec

Me.toi.Enabled = False Me.cuoi.Enabled = False Me.dau.Enabled = True Me.lui.Enabled = True Exit Sub

Err_cuoi_Click:

MsgBox Err.Description End Sub

Private Sub thoat_Click() On Error GoTo Err_thoat_Click Call thoatrec

Exit Sub Err_thoat_Click:

MsgBox Err.Description End Sub

Private Sub moi_Click() On Error GoTo Err_MOI_Click Me.MSP.SetFocus

Call moirec

Me.MSP.Locked = False Me.NGAY.Locked = False Me.moi.Visible = False Me.xoa.Visible = False Me.luu.Visible = True Me.huy.Visible = True MSP = NXTC("X")

Exit Sub Err_MOI_Click:

MsgBox Err.Description End Sub

Private Sub luu_Click() On Error GoTo Err_luu_Click Me.MSP.SetFocus

Call luurec

(27)

Me.luu.Visible = False Me.huy.Visible = False Me.moi.Visible = True Me.xoa.Visible = True Exit Sub

Err_luu_Click:

MsgBox Err.Description End Sub

Private Sub huy_Click() On Error GoTo Err_huy_Click Me.MSP.SetFocus

Call huyrec

Me.MSP.Locked = True Me.NGAY.Locked = True Exit Sub

Err_huy_Click:

MsgBox "Huy thao tac", 64, "Thong bao" Me.huy.Visible = False

Me.luu.Visible = False Me.moi.Visible = True Me.xoa.Visible = True End Sub

Private Sub xoa_Click() On Error GoTo Err_xoa_Click Call xoarec

Exit Sub Err_xoa_Click:

MsgBox Err.Description End Sub

*** sau tạo form cập nhật ta có form chỉnh sữa tương tự form cập nhật

- vào cửa sổ form click phải vào form DMHH chọn save as đặt tên CSDMHH - mở form chế độ Design thay thuộc tính caption=Sữa

- click phải vào nút Sửa chọn build Event - bỏ lệnh call moirec()

VI/ Thực vấn tin để phục báo cáo: 1/.Báo cáo nhập xuất tồn hàng hóa

a/ Tạo Query QNHAPHANG tính tổng số lượng nhập tổng số tiền nhập mặt hàng tháng

- click phải vào dây nối hai table PNK CTPNK - chọn Join Properties chọn mục thứ

b/ Tạo Query QXUATHANG tính tổng số lượng xuất tổng số tiền xuất mặt hàng tháng

c/ Tạo Query QTONHHTH tính tổng số lượng tồn trị giá tồn cuối kỳ mặt hàng

Các bước thực hiện:

Lấy nguồn từ T05_DMHH (chứa số lượng tồn đầu kỳ trị giá tồn đầu kỳ), QNHAPHANG (chứa số lượng nhập kỳ tổng tiền nhập kỳ, QXUATHANG (chứa số lượng xuất kỳ tổng tiền xuất kỳ)

Liên kết field MAHANG từ DMHH qua QNHAPHANG QXUATHANG Nhấn chuột phải vào mối liên kết, chọn kiểu liên kết “Include All Record from DMHH ”

(28)

TGN: IIf([TTN] Is Not Null,[TTN],0) TSLX: IIf([SLX] Is Not Null,[SLX],0) TGX: IIf([TTX] Is Not Null,[TTX],0)

SLTCK: IIf(([TONDAUKY]+[TSLN]-[TSLX]) Is Not Null,([TONDAUKY]+[TSLN]-[TSLX]),0) DG:IIf(([TGTONDAUKY]+[TGN])/([TONDAUKY]+[TSLN]) Is Not Null,

([TGTONDAUKY]+[TGN])/([TONDAUKY]+[TSLN]),0)

TGTCK: IIf([SLTCK]*[DG] Is Not Null,[SLTCK]*[DG],0)

d/ Tạo query QTONHHCT

2/ Báo cáo công nợ nhà cung cấp:

a/ Tạo Query QCNNCCTANG tính Nợ phát sinh tăng kỳ nhà cung cấp tháng

b/ Tạo Query QCNNNCCGIAM tính Nợ phát sinh giảm kỳ nhà cung cấp tháng

c/ Tạo Query QCNNNCCTH tính nợ cuối kỳ nhà cung cấp Các bước thực hiện:

Lấy nguồn từ DMNCC (chứa nợ đầu kỳ nhà cung cấp), QCNNCCTANG (tính nợ phát sinh tăng kỳ), QCNNCCGIAM (tính nợ phát sinh tăng kỳ)

Chọn lại kiểu kết nối từ DMNCC, QCNNCCTANG, QCNNCCGIAM Chọn “Include all record from DMNCC”

Các Field Query:

NDK: IIf([NODAUKY] Is Not Null,[NODAUKY],0) NTANG: IIf([TTTANG] Is Not Null,[TTTANG],0) NGIAM: IIf([TTGIAM] Is Not Null,[TTTGIAM],0)

NCKNCC: IIf([NDK]+[NTANG]-[NGIAM] Is Not Null,[NDK]+[NTANG]-[NGIAM],0) d/ Tạo query QCNNCCCT:

3/.Báo cáo công nợ nhà khách hàng: a/ tạo query QCNKHTANG

b/ tạo query QCNKHGIAM c/ tạo query QCNKHTH

NDK: IIf([NODAUKY] Is Not Null,[NODAUKY],0) NTANG: IIf([TTTANG] Is Not Null,[TTTANG],0) NGIAM: IIf([TTTGIAM] Is Not Null,[TTTGIAM],0)

NCKKH: IIf([NDK]+[NTANG]-[NGIAM] Is Not Null,[NDK]+[NTANG]-[NGIAM],0) d/ tạo query QCNKHCT

4/ Tạo report báo cáo tổng hợp

a/.tạo report báo cáo nhập xuất tồn hàng hóa

Tạo Report Wizard lấy nguồn từ query QTONHHTH:

b/.tạo report báo cáo công nợ nhà cung cấp tháng Tạo Report Wizard lấy nguồn từ QCNNCCTH

c/ Báo cáo công nợ khách hàng

(29)

5/ Tạo report báo cáo chi tiết a/ báo cáo chi tiết hàng hoá

Tạo Report Wizard lấy nguồn từ query QTONHHCT b/ báo cáo chi tiết nhà cung cấp

Tạo Report Wizard lấy nguồn từ query QCNNCCCT b/ báo cáo chi tiết khách hàng

Tạo Report Wizard lấy nguồn từ query QCNKHCT VII/ Tạo module kết chuyển:

- mở query chế độ design chọn view sql để lấy mã lệnh sql đưa vào module kết chuyển

Option Compare Database Public Sub KCHH()

'neu dau thang-> ket chuyen du lieu thang truoc sang thang hien tai 'neu cuoi thang-> ket chuyen du lieu thang hien tai sang thang sau If (Day(Date) < 26) And Day(Date) > Then

MsgBox "khong ket chuyen du lieu thoi diem nay", 64, "thong bao" Exit Sub

End If

If Day(Date) < Then

TB = MsgBox("thoi diem dau thang ban co muon ket chuyen khong?", vbYesNo) If TB = vbNo Then

Exit Sub Else

'lay thang hien tai tru di mot thang Date = DateAdd("m", -1, Date)

End If Else

TB = MsgBox("thoi diem cuoi thang ban co muon ket chuyen khong?", vbYesNo) If TB = vbNo Then

Exit Sub End If End If

'tao chuoi ton hang hoa + voi thang hien tai DoCmd.SetWarnings (False)

TENTABLE = "THH" & Format(Date, "m") Dim sql As String

sql = "SELECT DMHH.MAHANG, DMHH.TENHANG, DMHH.TONDAUKY, DMHH.TGTONDAUKY, IIf([SLN] Is Not Null,[SLN],0) AS TSLN, IIf([TTN] Is Not Null" _

& ",[TTN],0) AS TGN, IIf([SLX] Is Not Null,[SLX],0) AS TSLX, IIf([TTX] Is Not Null,[TTX],0) AS TGX, IIf(([TONDAUKY]+[TSLN]-[TSLX]) Is Not Null" _

& ",([TONDAUKY]+[TSLN]-[TSLX]),0) AS SLTCK, IIf(([TGTONDAUKY]+[TGN])/ ([TONDAUKY]+[TSLN]) Is Not Null,([TGTONDAUKY]+[TGN])/([TONDAUKY]+[TSLN]),0) AS DG" _

& ", IIf([SLTCK]*[DG] Is Not Null,[SLTCK]*[DG],0) AS TGTCK into" _ & "[" & TENTABLE & "]" _

& "FROM (DMHH LEFT JOIN QNHAPHANG ON DMHH.MAHANG = QNHAPHANG.MAHANG) LEFT JOIN QXUATHANG ON DMHH.MAHANG = QXUATHANG.MAHANG;"

DoCmd.RunSQL sql

DoCmd.SetWarnings (True) Dim db As DAO.Database

(30)

Set rstruoc = db.OpenRecordset(TENTABLE) Set rshientai = db.OpenRecordset("DMHH") rstruoc.MoveFirst

For i = To rstruoc.RecordCount Do While Not rshientai.EOF

If rstruoc!MAHANG = rshientai!MAHANG Then rshientai.Edit

rshientai!TONDAUKY = rstruoc!SLTCK rshientai!GIABAN = rstruoc!DG

rshientai!TGTONDAUKY = rstruoc!TGTCK rshientai.Update

Exit Do Else

rshientai.MoveNext End If

Loop

rstruoc.MoveNext Next

If Day(Date) < Then

'tra lai thang dung cho he thong Date = DateAdd("m", 1, Date) End If

MsgBox "da ket chuyen xong", vbOKOnly, "thong bao" End Sub

Public Sub KCKH()

'neu dau thang-> ket chuyen du lieu thang truoc sang thang hien tai 'neu cuoi thang-> ket chuyen du lieu thang hien tai sang thang sau If (Day(Date) < 26) And Day(Date) > Then

MsgBox "khong ket chuyen du lieu thoi diem nay", 64, "thong bao" Exit Sub

End If

If Day(Date) < Then

TB = MsgBox("thoi diem dau thang ban co muon ket chuyen khong?", vbYesNo) If TB = vbNo Then

Exit Sub Else

'lay thang hien tai tru di mot thang Date = DateAdd("m", -1, Date)

End If Else

TB = MsgBox("thoi diem cuoi thang ban co muon ket chuyen khong?", vbYesNo) If TB = vbNo Then

Exit Sub End If End If

'tao chuoi ton hang hoa + voi thang hien tai DoCmd.SetWarnings (False)

TENTABLE = "CNKH" & Format(Date, "m") Dim sql As String

sql = "SELECT DMKH.MAKH, DMKH.TENKH, IIf([NODAUKY] Is Not Null,[NODAUKY],0) AS NDK" _

& ", IIf([TTTANG] Is Not Null,[TTTANG],0) AS NTANG, IIf([TTTGIAM] Is Not Null, [TTTGIAM],0) AS NGIAM" _

& ", IIf([NDK]+[NTANG]-[NGIAM] Is Not Null,[NDK]+[NTANG]-[NGIAM],0) AS NCKKH into" _

(31)

& "FROM (DMKH LEFT JOIN QCNKHGIAM ON DMKH.MAKH = QCNKHGIAM.MAKH) LEFT JOIN QCNKHTANG ON DMKH.MAKH = QCNKHTANG.MAKH;"

DoCmd.RunSQL sql

DoCmd.SetWarnings (True) Dim db As DAO.Database

Dim rstruoc As DAO.Recordset Dim rshientai As DAO.Recordset Set db = CurrentDb

Set rstruoc = db.OpenRecordset(TENTABLE) Set rshientai = db.OpenRecordset("DMKH") rstruoc.MoveFirst

For i = To rstruoc.RecordCount Do While Not rshientai.EOF

If rstruoc!MAKH = rshientai!MAKH Then rshientai.Edit

rshientai!NODAUKY = rstruoc!NCKKH rshientai.Update

Exit Do Else

rshientai.MoveNext End If

Loop

rstruoc.MoveNext Next

If Day(Date) < Then

'tra lai thang dung cho he thong Date = DateAdd("m", 1, Date) End If

MsgBox "da ket chuyen xong", vbOKOnly, "thong bao" End Sub

Public Sub KCNCC()

'neu dau thang-> ket chuyen du lieu thang truoc sang thang hien tai 'neu cuoi thang-> ket chuyen du lieu thang hien tai sang thang sau If (Day(Date) < 26) And Day(Date) > Then

MsgBox "khong ket chuyen du lieu thoi diem nay", 64, "thong bao" Exit Sub

End If

If Day(Date) < Then

TB = MsgBox("thoi diem dau thang ban co muon ket chuyen khong?", vbYesNo) If TB = vbNo Then

Exit Sub Else

'lay thang hien tai tru di mot thang Date = DateAdd("m", -1, Date)

End If Else

TB = MsgBox("thoi diem cuoi thang ban co muon ket chuyen khong?", vbYesNo) If TB = vbNo Then

Exit Sub End If End If

'tao chuoi ton hang hoa + voi thang hien tai DoCmd.SetWarnings (False)

TENTABLE = "CNNCC" & Format(Date, "m") Dim sql As String

(32)

& ", IIf([TTTANG] Is Not Null,[TTTANG],0) AS NTANG, IIf([TTGIAM] Is Not Null, [TTGIAM],0) AS NGIAM" _

& ", IIf([NDK]+[NTANG]-[NGIAM] Is Not Null,[NDK]+[NTANG]-[NGIAM],0) AS NCKNCC into" _

& "[" & TENTABLE & "]" _

& "FROM (DMNCC LEFT JOIN QCNNCCTANG ON DMNCC.MANCC = QCNNCCTANG.MANCC) LEFT JOIN QCNNCCGIAM ON DMNCC.MANCC = QCNNCCGIAM.MANCC;"

DoCmd.RunSQL sql

DoCmd.SetWarnings (True) Dim db As DAO.Database

Dim rstruoc As DAO.Recordset Dim rshientai As DAO.Recordset Set db = CurrentDb

Set rstruoc = db.OpenRecordset(TENTABLE) Set rshientai = db.OpenRecordset("DMNCC") rstruoc.MoveFirst

For i = To rstruoc.RecordCount Do While Not rshientai.EOF

If rstruoc!MANCC = rshientai!MANCC Then rshientai.Edit

rshientai!NODAUKY = rstruoc!NCKNCC rshientai.Update

Exit Do Else

rshientai.MoveNext End If

Loop

rstruoc.MoveNext Next

If Day(Date) < Then

'tra lai thang dung cho he thong Date = DateAdd("m", 1, Date) End If

MsgBox "da ket chuyen xong", vbOKOnly, "thong bao" End Sub

VIII/ Tạo form báo cáo tổng hợp chi tiết: 1/ Báo cáo tổng hợp hàng hoá

2/.1/ Báo cáo chi tiết hàng hoá 3/ Báo cáo tổng hợp nhà cung cấp 4/ Báo cáo chi tiết nhà cung cấp 5/ Báo cáo tổng hợp khách hàng

6/ Báo cáo chi tiết khách hàng

IX/ Tạo macro máy tính làm cơng cụ tính tốn X/.Tạo page làm trang giúp đở

(33)

XII/ Liên kết chương trình Tao file setup

5/ Giới thiệu page menu:

- page trang web dùng để đưa menu làm trang giúp đở

+ chọn page\new tạo trang nhập vào dòng văn giúp đở cho chương trình (như trang word)

+ để đưa trang page vào menu ta click phải vào menu chọn customize bật cửa sổ customize tab command chọn all web page bên khung categories Bênh cửa sổ command chọn trang page kéo trang page vào mục menu

- menu dùng làm thực đơn cho chương trình

+ click phải vào menu chọn customize bật cửa sổ customize, vào tab toolbar chọn new , sau đặt tên cho menu kéo menu lên menu access Sau vào tab commands chọn new menu bên khung categories Bênh cửa sổ command chọn new menu, sau kéo new menu thả lên menu vừa tạo

+ click phải vào menu tạo ra, đặt tên menu mục name, củng caption menu

+ lặp lại thao tác để tạo menu menu ôn tập

-& có giai đoạn việc tạo sản phẩm phần mềm hảy kể tên nói lên cơng viêc giai đoạn

- có loại quan hệ, kể tên nói lên ý nghĩa loại quan hệ - thực thể gì? Thực thể có đặt trưng gì?

- thực thể tương đương với đối tượng access - mơ hình quan hệ thực thể nói lên điều gì?

- mơ hình quan hệ thực thể tương đương với đối tượng access - cập nhật phiếu nhập kho, từ table

- cập nhật phiếu xuât kho, từ table - cập nhật phiếu thu, phiếu chi

- kết chuyển hàng hoá làm nào? Và nhằm mục đích gì? - kết chuyển khách hàng làm nào? Và nhằm mục đích gì? - kết chuyển nhà cung cấp làm nào? Và nhằm mục đích gì? - tăng mã hành hố làm nào? Và nhằm mục đích gì?

- tăng mã khách hàng làm nào? Và nhằm mục đích gì? - tăng mã nhà cung cấp làm nào? Và nhằm mục đích gì?

- tăng mã nhập, xuất, thu, chi làm nào? Và nhằm mục đích gì? - hàm iif() dùng để làm query?

Ngày đăng: 22/12/2020, 13:18

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan