Thực hiện chương trình: Võ Hòa Đoàn Ngày cập nhật sau cùng: ngày 26 tháng 10 năm 2004
GIỚI THIỆU: Thực hiện chương trình: Võ Hòa Đoàn . Ngày cập nhật sau cùng: Ngày 26 tháng 10 năm 2004 XYZ là một Công Ty hoạt động theo mô hình phục vụ, được mô tả như sau: Khách hàng ký các đơn đặt hàng để gia công các sản phẩm nào đó.Nguyên liệu sẽ do khách hàng cung cấp để sản xuất và khi sản xuất xong thì Công ty sẽ giao sản phẩm được sản xuất cho khách hàng theo các đơn hàng đã ký. Việc tính lượng tồn nguyên liệu tồn còn lại dựa theo đònh mức sản xuất là bao nhiêu, các nguyên liệu nào để cho ra 1 đơn vò sản phẩm. Quản lý việc thanh toán (tiền gia công), công nợ khách hàng vàquản lý tồn nguyên liệu mà công ty còn giữ của khách hàng sau khi đã trừ các nguyên liệu sản xuất và giao các sản phẩm. Chương trình được viết trên ngôn ngữ Visual Basic, kết nối với Cơ sở dữ liệu Access; cùng với 2 phần mềm Data Widgets để hiển thò dữ liệu lên lưới và Crystal Report 8.5 để lập báo cáo. Chúng em đã được sự hướng dẫn tận tình của thầy Phạm Ngọc Linh cũng như ý kiến đóng góp quý báo của các bạn. Tuy nhiên thới gian và kinh nghiệm có hạn nên chương trìng không tránh khỏi thiếu sót, hạn chế. Rất mong được sự góp ý của quý thầy cô và ý kiến của các bạn. Thân ái. Tp HCM ngày 26 tháng 10 năm 2004 Lớp: CV0303S Nhóm HVTH: VÕ HÒA ĐOÀN TRỊNH CÔNG MINH ĐỖ KIẾN HÙNG THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Chương trình kết nối trên Cơ sở dữ liệu Access. Để kết nối với các hệ quản trò cơ sở dữ liệu bằng đối tượng ADO phải dùng chuỗi chuổi kết nối ( SQLConn ) thông qua trình điều khiển Provider: SQLConn = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source= <”đường dẫn.Tên database”> Persist Security Info=False " Đối tượng Connection: Dùng để kết nối các hệ quản trò cơ sở dữ liệu, thực thi câc lệnh SQL(insert, update, delete) thông qua phương thức Execute Có thể tạo đối tượng connection thông qua nhiều cách: Dim Conn as new ADODB.Connection Thực thi câu lệnh SQL <Đối tượng connection”>.Execute <”Câu lệnh SQL”> Ví dụ: Với câu lện SQL: Str = " insert into GIAONHAN values('" & Trim(cboSoPhieu) & "','" & Trim(cboSoDDH) & "','" & Trim(txtNgay) & "')" Conn.Execute Str Đối tượng Recordset : Dùng để thực thi lấy mẫu tin từ cơ sở dữ liệu thông qua câu lệnh SQL Select . Có thể tạo đối tượng Recordset bằng cách: Dim Rst as new ADODB. Recordset Câu lệnh SQL: strSQL = " select TenkhachHang From KhachHang " Thực thi câu lệnh SQL <“Đối tượng Recordset”>.open <”Câu lệnh SQL”>,<”Đối tượng connection”> THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN ví dụ: Rst.Open strSQL ,Conn I. MÔ TẢ CÁC PHIẾU: 1. Phiếu nhập nguyên liệu: Nguyên liệu được Khách Hàng cung cấp sau khi Công ty và khách hàng thoả thuận việc gia công sản phẩm mà khách hàng yêu cầu. Số HĐ : Khách Hàng : Đòa Chỉ : Điện Thoại : Ngày Nhập : Nguyên liệu Số lượng ĐVT 2. Đơn đặt hàng: Số ĐĐH : Khách Hàng : Đòa Chỉ : Điện Thoại : Ngày kí kết : Hạn giao : Sản phẩm ĐVT Số lượng Đơn giá 3. Phiếu giao nhận: Số Phiếu : Số ĐĐH : Khách Hàng : Đòa Chỉ : Điện Thoại : Ngày Giao : Sản phẩm Số lượng Đơn giá THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN 4. Phiếu thanh toán: Số TT : Ngày TT : Khách Hàng : Đòa Chỉ : Điện Thoại : Tiền TT : 5. Tồn nguyên liệu: Ngày tồn : Khách Hàng : Đòa Chỉ : Điện Thoại : Nguyên liệu Số lượng tồn ĐVT 6. Công nợ: Ngày CN : Khách Hàng : Đòa Chỉ : Điện Thoại : Tiền CN : 7. Thống kê doanh số theo Sản phẩm của từng ĐĐH: Tháng…….năm 2004 Sản phẩm Số lượng Doanh số (tiền thu) II. PHÂN TÍCH: PHÂN TÍCH THÀNH PHẦN DỮ LIỆU CỦA ỨNG DỤNG: 1. Sơ đồ quan niệm dữ liệu: THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Hình 1: Sơ đồ Quan niệm dữ liệu của ứng dụng ĐƠN HÀNG GIA CÔNG 2. Mô tả dữ liệu: a) Các loại thực thể: KhachHang Khách hàng DonDatHang Đơn đặt hàng ChiTietDonDatHang Chi tiết đơn đặt hàng SanPham Sản phẩm DinhMucSanXuat Đònh mức sản xuất CongNo Công nợ GiaoNhan Giao nhận ChiTietGiaoNhan Chi tiết giao nhận NguyenLieu Nguyên liệu ThanhToan Thanh toán Ton Tồn THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN NhapXuatNguyenLieu Nhập xuất nguyên liệu ChiTietNguyenLieu Chi tiết nguyên liệu b) Mô tả các loại thực thể: b1) Thực thể Khách hàng: Thuộc tính Diễn giải Kiểu Ràng buộc MaKhachHang Mã khách hàng Text Khoá chính TenKhachHang Tên khách hàng Text DiaChi Đòa chỉ Text DienThoai Điện thoại Text b2) Thực thể đơn đặt hàng: Thuộc tính Diễn giải Kiểu Ràng buộc SoDonDatHang Số đơn đặt hàng Text Khoá chính MaKhachHang Mã khách hàng Text Khoá ngoại NgayKiKet Ngày kí kết Date DienThoai Điện thoại String b3) Thực thể Chi tiết đơn đặt hàng: Thuộc tính Diễn giải Kiểu Ràng buộc SoDonDatHang Số đơn đặt hàng Text Khoá chính SanPham Sản phẩm Text Khoá ngoại SoLuongDatHang SL đặt hàng Number DonGia Đơn giá Number HanGia Hạn giao Date() b4) Thực thể Sản phẩm: Thuộc tính Diễn giải Kiểu Ràng buộc SanPham Sản phẩm Text Khoá chính TenSanPham Tên sản phẩm Text DonViTinh Đơn vò tính Number DonGia Đơn giá Number b5) Thực thể Đònh mức sản xuất: THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Thuộc tính Diễn giải Kiểu Ràng buộc NguyenLieu Nguyên liệu Text Khoá ngoại SanPham Sản phẩm Text Khoá ngoại SoLuongSanXuat Số lượng sản xuất Number b6) Thực thể công nợ: Thuộc tính Diễn giải Kiểu Ràng buộc NgayCongNo Ngày công nợ Date() Khoá chính MaKhachHang Mã khách hàng Text Khoá ngoại TienCongNo Tiền công nợ Number b7) Thực thể Giao Nhận: Thuộc tính Diễn giải Kiểu Ràng buộc SoPhieu Số phiếụ Text Khoá chính SoDonDatHang Số đơn đặt hàng Text Khoá ngoại NgayGiao Ngày giao Number b8) Thực thể Chi tiết giao nhận: Thuộc tính Diễn giải Kiểu Ràng buộc SoPhieu Số phiếu Text Khoá ngoại SanPham Sản phẩm Text Khoá ngoại SoLuong Số lượng Number DonGia Đơn giá Number b9) Thực thể Nguyên Liệu: Thuộc tính Diễn giải Kiểu Ràng buộc NguyenLieu Nguyên liệu Text Khoá chính Ten NguyenLieu Tên nguyên liệu Text DonViTinh Đơn vò tính Number b10) Thực thể Thanh Toán: Thuộc tính Diễn giải Kiểu Ràng buộc SoThanhToan Số thanh toán Text Khoá chính NgayThanhToan Ngày thanh toán Date() Khoá ngoại THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN MaKhachHang Mã khách Hàng Text TienThanhToan Tiền thanh toán Number b11) Tthực thể Tồn: Thuộc tính Diễn giải Kiểu Ràng buộc MaKhachHang Mã khách hàng Text Khoá ngoại NguyenLieu Nguyên liệu Text Khoá ngoại SoLuongTon Số lượng tồn Number NgayTon Ngày tồn Date() b12) Thực thể Nhập xuất nguyên liệu: Thuộc tính Diễn giải Kiểu Ràng buộc SoHoaDonNhap Số hoá đơn nhập Text Khoá chính MaKhachHang Mã khách hàng Text Khoá ngoại NgayNhap Ngày nhập Date() b13) Thực thể Chi tiết nguyên liệu: Thuộc tính Diễn giải Kiểu Ràng buộc SoHoaDonNhap Số hoá đơn nhập Text Khoá ngoại NguyenLieu Nguyên liệu Text Khoá ngoại SoLuong Số lượng Date() c) Ràng buộc toàn vẹn: KHOÁ CHÍNH: R1-01: id(CongNo) = sttCNO R1-02: id(KhachHang) = MaKhachHang R1-03: id(DonDatHang) = SoDDH R1-04: id(ChiTietDonDathang) = sttDDH R1-05: id(SanPham) = SanPham R1-06: id(DinhMucSanXuat) = sttSX R1-07: id(GiaoNhan) = SoPhieu R1-08: id(ChiTietGiaoNhan) = sttGiaoNhan R1-09: id(ThanhToan) = SoTT R1-10: id(Ton) = sttTon R1-11: id(NhapXuatNguyenLieu) = SoHDN R1-12: id(ChiTietNguyenLieu) = sttHDN R1-13: id(NguyenLieu) = NguyenLieu THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN RÀNG BUỘC MIỀN GÁI TRỊ: R2-01: (CTDDH.SoDDH>0) and (CTDDH.SLDH>0) and (CTDDH.DG>0) R2-02: (SP.DVT> 0 ) and (SP.DG > 0) R2-03: (DMSX.SLSX > 0) R2-04: (GN.NgGiao < DDH.NgKK) R2-05: (CTNL.SL > 0) R2-06: (NL.DVT > 0) R2-07: (TT.TienTT > 0) RÀNG BUỘC GIỮA CÁC THUỘC TÍNH TRONG THỰC THỂ: R3-0: CNO CK = CNO DK + TIENNO - TIENTHU R3-0: SLTon CK = SLTon DK + NHAP - XUAT R3-0: Tiền đặt hàng = CTDDH.SLDH * CTDDH.DG R3-0: Tiền giao nhận = CTGN.SL * CTGN.DG R3-0: Số tiền nợ đầu kì ( CNO DK ) của tháng này phải bằng số tiền nợ cuối kì ( CNO CK ) của tháng trước. R3-0: Số lượng tồn đầu kì ( SLTon DK ) của tah1ng này phải bằng số lựơng tồn cuối kì ( SLTon CK ) của tháng trước. PHÂN TÍCH THÀNH PHẦN XỬ LÝ CỦA ỨNG DỤNG: XL1: Cập nhật Nguyên liệu. XL2: Cập nhật phiếu Nhập nguyên liệu. XL3: Cập nhật đơn đặt hàng. XL4: Cập nhật Phiếu giao nhận. XL5: Cập nhật Phiếu thanh toán XL6: Tính Công nợ Khách hàng. XL7: Tính Tồn Nguyên liệu. MÔ TẢ CÁC XỬ LÝ: _ Tên xử lý : XL1: Chức năng : cập nhật nguyên liệu. Input : MaNL, NL. Output : NL. Qui tắc : NL n được thêm,sữa xoá vào NL _Tên xử lý : XL2: Chức năng : Cập nhật phiếu nhập nguyên liệu. Input : SoHDN h, NL n, NXNL, CTNL, NL, KH. Output : NXNL. Qui tắc : Số lượng nhập trong tháng t của NL n bằng tổng số lượng của CTNL trong tháng t có liên quan đến NL n. THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN _Tên xử lý : XL3: Chức năng : Cập nhật Đơn đặt hàng . Input : SDDH, MSP, DDH, CTDDH, KH, SP Output : DDH. Qui tắc : Số lượng Sản phẩm Khách hàng đặt trong tháng t bằng tổng số sản phẩm của CTDDH trong tháng t có liên quan đến sản phẩm đó. _Tên xử lý : XL4: Chức năng : Cập nhật phiếu Giao nhận. Input : SoP p, SoDDH h, GN, CTGN, DDH, CTDDH. Output : GN. Qui tắc : Số lượng giao nhận sản phẩm trong tháng t bằng tổng số lượng giao nhận của CTGN trong tháng t liên quan đến Sản phẩm đó. _Tên xử lý : XL5 Chức năng : Cập nhật phiếu thanh toán. Input : SoTT, MKH, TTOAN, KH Output : TTOAN. Qui tắc : Số tiền thanh toán trong tháng t bằng tổng tiền thanh toán của TTOAN trong tháng t có liên quan đến KH k. _Tên xử lý : XL6: Chức năng : Tính nợ Khách hàng. Input : NgCN, MKH, CNO. Output : CNO. Qui tắc : NO CK = NO DK + SONO - THANHTOAN _Tên xử lý : XL7 : Chức năng : Tính tồn Nguyên liệu : Input : NgTON, LN, TON. Output : TON. Qui tắc : TON CK = TON DK + NHAP - XUAT III. THIẾT KẾ DỮ LIỆU : 1. Sơ đồ Logic dữ liệu: THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN [...]... Màn hình chính: THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN H1ình 3: Màn hình chính của ứng dụng Danh Mục: Menu Đặt hàng Menu Giao nhận Menu Nhập xuất Nguyên liệu 2 Màn hình Đặt hàng: Khách hàng đặt đơn hàng mới Giao hàng cho Khách hàng Nhập nguyên liệu từ khách hàng THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Hình 4: Màn hình Đơn đặt hàng mới Source code lấy Mã KH lên combobox: Dim sqlMKH As String sqlMKH = "Select MaKhachHang from...THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Hình 2: Sơ đồ Logic dữ liệu của ứng dụng ĐƠN HÀNG GIA CÔNG 2 Từ điển dữ liệu: MaKhachHang TenKhachHang DiaChi DienThoai SoDonDatHang NgayKiKet SanPham TenSanPham DonViTinh DonGia SoPhieu Mã khách hàng Ten khách hàng Đòa chỉ Điện thoại Số đơn đặt hàng Ngày kí kết Sản phẩm Tên sản phẩm Đơn vò tính Đơn giá Số phiếu THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN NgayGiao NgayCongNo TienCongNo... mức sản xuất Tính toán: Menu Công nợ: Báo cáo công nợ THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Menu Tồn : Menu Thanh Toán: Màn hình công nợ: Báo cáo tồn nguyên liệu Hiển thò tiền thanh toán của khách hàng với công ty : Khi nhấn nút mới thì các textbox nhận focus nhập thông tin phiếu Công nợ mới : Lưu dữ liệu mới xuống Cơ sở dữ liệu : Thoát màn hình Tồn Nguyên Liệu Code xử lý tính công nợ: Q1: SELECT max(ngaycongNo)... Ngày công nợ Tiền công nợ Nguyên liệu Tên Nguyên liệu Số thanh toán Ngày thanh toán Tiền thanh toán Số hoá đơn nhập Ngày nhập Số lượng đặt hàng Đơn giá Hạn giao Số lượng Số lượng sản xuất Số lượng tồn Ngày tồn 3 Mô tả các bảng: 3.1) Khách hàng Thuộc tính: Thuộc tính MaKhachHang TenKhachHang DiaChi DienThoai Kiểu Text Text Text Text Khóa Chính Chỉ mục: Chỉ mục KHACHHANG_PK Thuộc tính MakhachHang 3.2) Công. .. Menu Khách hàng: Menu Nguyên liệu: Menu Sản phẩm: Menu Đònh mức sản xuất: 5 Màn hình Khách hàng : Hiển thò Khách hàng và nhập Khách hàng mới Hiển thò danh sách nguyên kiệu và Nhập nguyên liệu mới Hiển thò danh sách sản phẩm và nhập sản phẩm mới Hiển thò danh sách đònh mức sản xuất và nhập đònh mức sản xuất cho sản phẩm mới THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Hình 7: Màn hình tra cứu, nhập mới khách hàng Source... Khoá ngoại: Khoá ngoại MaKhachHang 3.3) Đơn đặt hàng Thuộc tính: Thuộc tính SoDonDatHang MaKhachHang NgayKiKet Kiểu Text Text Date() Khóa Chính Ngoại Chỉ mục: Chỉ mục DONDATHANG_PK DONDATHANG_FK Thuộc tính SoDonDatHang MaKhachHang MaKhachHang Thứ tự ASC Bảng tham chiếu KhachHang Khoá nội MaKhachHang ASC Khoá ngoại: Khoá ngoại MaKhachHang 3.4) Chi tiết Đơn đặt hàng Thuộc tính: THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN... SSODatHang.Columns(4).DataField = "dongia" Set SSODatHang.DataSource = Nothing Set SSODatHang.DataSource = Rst : Nút Mới để thêm Đơn đặt hàng mới, khi nhấn nút Mới thì số DDH sẽ tự tăng, ta có thể chọn Khách hàng cũ ở textbox MaKhachHang hoặc điền thông tin mới nếu là Khách hàng mới Source code khi nhấn nút mới số DDH sẽ tự tăng: Private Sub cmdmoi_Click() txtSDDH.SetFocus Dim SQLddh As String SQLddh... Trim(txtDG) & "',HANGIAO='" & Trim(frm1DatHang.txtHanGiao) & "'" Conn.Execute SQL5 Conn.Execute SQL6 Conn.Execute SQL7 End Sub THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN : Thoát cửa sổ đơn đặt hàng 3 Màn hình Giao Nhận: Hình 5: Màn hình giao nhận sản phẩm cho khách hàng Source code lấy dữ liệu lên cbo số phiếu: Dim sql As String sql = "select sophieu from giaoNhan " Set rsSoP = New ADODB.Recordset rsSoP.Open sql, Conn, adOpenKeyset,... SSOkh.Columns(2).DataField = "diachi" SSOkh.Columns(3).DataField = "dienthoai" Set SSOkh.DataSource = Nothing Set SSOkh.DataSource = Rst : Khi nhấn nút mới thì các textbox và combobox nhận focus để nhập thông tin khách hàng mới : Lưu dữ liệu mới xuống Cơ sở dữ liệu Source code : Private Sub cmdLuu_Click() Dim Str As String Dim Str1 As String If Trim(cboKH.Text) = "" Or Trim(txtTKH.Text) = "" Then MsgBox " Nhap MaKH va... Conn.Execute Str1 SSOkh.Update MsgBox "Da luu Khach Hang '" & Trim(cboKH) & "'' vao CSDL", vbOKOnly + vbExclamation, "WARNING" CmdLuu.Enabled = False cmdmoi.Enabled = True End Sub : Thoát màn hình Khách hàng 6 Màn hình Nguyên Liệu : THƯ VIỆN ĐIỆN TỬ TRỰC TUYẾN Hình 8: Màn hình tra cứu, nhập nguyên liệu Source code lấy dữ liệu lên lưới: Dim strSQL As String Dim Cnn As New ADODB.Connection strSQL = "select