Chuyên đề Xây dựng phần mềm quản lý kho tại công ty TNHH Quốc Minh

Thế giới đang bước vào kỷ nguyên của khoa học công nghệ và chúng ta không thể phủ nhận những thành công của công nghệ thông tin đem lại cho con người. Nhờ tin học mà con người đã bước lên tầm cao mới, bươc sang một nền kinh tế mới - nền kinh tế tri thức. Trong những năm gần đây việc ứng dụng công nghệ thông tin vào công tác quản lý càng nhiều và là một nhu cầu cấp bách của nền kinh tế hiện nay.Việc quản lý vật tư tại Công ty TNHH Quốc Minh hiện nay còn gặp nhiều hạn chế và phức tạp. Nhằm khắc phục được những nhược điểm đó em chọn đề tài “Xây dựng phần mềm quản lý kho tại công ty TNHH Quốc MInh”. Chương trình này giải quyết được phần nào khó khăn trong công việc của các nhân viên xuất nhập vật tư, giúp tiết kiệm thời gian, chi phí quản lý cũng như cung cấp các thông tin đúng đắn kịp thời hỗ trợ các quyết định.

doc154 trang | Chia sẻ: aloso | Lượt xem: 1689 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Chuyên đề Xây dựng phần mềm quản lý kho tại công ty TNHH Quốc Minh, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
toán sửa bản ghi 3.3.5.3.Thuật toán xoá bản ghi Bắt đầu Kết thúc Xoá bản ghi trong CSDL Đồng ý xoá? Chọn danh mục cần xoá Hiện thông tin cần xoá S Đ Hình.3.14 .Thuật toán xoá bản ghi 3.3.5.4. Thuật toán tìm kiếm bản ghi Bắt đầu Tiếp tục tìm kiếm? Hiện thông báo không có dữ liệu thoả mãn Kết thúc Hiện đầy đủ dữ liệu thoả mãn Tồn tại? Nhập điều kiện tìm kiếm Đ S Đ S Hình.3.15. Thuật toán tìm kiếm bản ghi 3.3.5.5. Thuật toán in báo cáo Bắt đầu Nhập điều kiện báo cáo Hiện báo cáo Đồng ý in? S Đ In báo cáo Kết thúc Hình.3.16. Thuật toán in báo cáo 3.4.Thiết kế giao diện Form Login Để sử dụng chương trình quản lý vật tư, người dùng phải nhập mã người dùng và mật khẩu vào 2 ô Textbox trong Form Login. Sau khi nhập tên và mật khẩu chọn OK để đăng nhập vào chương trình. Nếu người dùng nhập đúng tên và mật khẩu Form Main của chương trình sẽ hiện ra và bắt đầu cho phép khai thác các chức năng của chương trình. Nếu nhập sai tên hoặc mật khẩu chương trình sẽ thông báo và yêu cầu người dùng nhập lại. Người dùng được phép nhập tối đa 3 lần, nếu không đúng tên và mật khẩu hệ thống sẽ tự thoát. Form Main ( Giao diện chính của chương trình) Tại Form Main bao gồm các chức năng của chương trình quản lý vật tư. Người sử dụng muốn khai thác chức năng nào sẽ kích chuột vào menu tương ứng trên thanh thực đơn Form main bao gồm các chức năng: Hệ thống, Báo cáo, Phat sinh, Trợ giúp, Edit. Menu Hệ thống Menu hệ thống bao gồm các chức năng chinh: vào hệ thống, thay đổi mật khẩu, thoát khỏi chương trình. Người dùng muốn sử dụng chức năng nào thì kích chuột vào menu thể hiện chức năng đó. Form thay đổi mật khẩu Để thay đổi mật khẩu người dùng cần nhập mã nhân viên, mật khẩu cũ, mật khẩu mới và xác nhận lại mật khẩu mới vào các ô textbox tương ứng trên Form thay đổi mật khẩu. Sau đó chọn OK để đồng ý thay đổi thay đổi mật khẩu hoặc chọn Close để huỷ bỏ và thoát khỏi Form. Khi người dùng không muốn sử dụng chương trình quản lý vật tư nữa thì có thể kích chuột vào menu thoát khỏi chương chình để đóng toàn bộ chương trình. Ngoài các chức năng chính như trên thì menu hệ thống còn cung cấp các chức năng tiện ích khác như máy tính, lịch công tác… c.Menu quản lý phát sinh Menu này quản lý tất cả các danh mục của chương trình như danh mục khách hàng, danh mục kho, danh mục vật tư hàng hoá, danh mục mã hàng và cho phép cập nhật các phiếu nhập kho, xuất kho cũng như vào số dư vật tư hàng hoá với các thao tác thêm mới, sửa, xoá, tìm hay in phiếu xuất nhập. Form danh mục vật tư hàng hoá Form danh mục vật tư hàng hoá cho phép người dùng quản lý và cập nhật vật tư hàng hoá với các nút chức năng chính như: Thêm: khi muốn thêm mới một vật tư hàng hoá người dùng chỉ cần gõ mã số, tên vật tư và đơn vị tính vào 3 ô textbox tương ứng trên Form rồi nhấn nút Thêm khi đó chương trình sẽ tự động cập nhật thông tin vào DataGrid phía trên. Xoá: muốn xoá thông tin về một vật tư nào đó ta chọn khách hàng cần xoá rồi nhấn nút Xoá. Chương trình sẽ đưa ra thông báo “ Bạn có muốn xoá trường này không”, chọn Yes để xoá, chọn No để huỷ bỏ. Print: muốn in danh sách vật tư hiện có trong cơ sở dữ liệu ta chọn Prỉnt để in trên màn hình. Close: để kết thúc làm việc với Form danh mục vật tư ta chọn Close để đóng lại Form này và quay trở về Form Main. Form danh mục khách hàng Form danh mục khách hàng cho phép người dùng quản lý và cập nhật khách hàng là các nhà cung cấp của công ty với các nút chức năng chính như: Thêm: khi muốn thêm mới một khách hàng người dùng chỉ cần gõ mã số và tên khách hàng vào 2 ô textbox tương ứng trên Form rồi nhấn nút Thêm khi đó chương trình sẽ tự động cập nhật thông tin vào DataGrid phía trên. Xoá: muốn xoá thông tin về một khách hàng nào đó ta chọn khách hàng cần xoá rồi nhấn nút Xoá. Chương trình sẽ đưa ra thông báo “ Bạn có muốn xoá trường này không”, chọn Yes để xoá, chọn No để huỷ bỏ. Print: muốn in danh sách khách hàng hiện có trong cơ sở dữ liệu ta chọn Prỉnt để in trên màn hình. Close: để kết thúc làm việc với Form danh mục khách hàng ta chọn Close để đống lại Form này và quay trở về Form Main. Form danh mục kho Menu này cho phép quản lý các kho vật tư hàng hoá với các chức năng tương tự như trong Form danh mục khách hàng và danh mục vật tư hàng hoá như trên. Form danh mục mã hàng Form này cho phép người dùng cập nhật và quản lý các mặt hàng được sản xuất từ các vật tư được nhập kho cho sản xuất tượng tự như các Form danh mục trên. Form hồ sơ số dư vật tư hàng hoá Form này cho phép người dùng cập nhật số dư (tồn kho) vật tư hàng hoá khi bắt đầu sử dụng chương trình với các thông tin: mã kho, mã hàng, mã vật tư, số lượng, thành tiền. Các chức năng chính gồm: thêm, xoá thông tin số dư về một loại vật tư nào đó. Muốn kết thúc làm việc với form ta chọn Close để đóng Form. Form cập nhật phiếu nhập Form cập nhật phiếu nhập cho phép người dùng cập nhật các thông tin trên phiếu nhập kho với các thông tin - Số chứng từ : Tự động tăng trong năm - Ngày PS : Ngày phát sinh chứng từ, bắt buộc phải là ngày trong năm làm việc - Số hoá đơn : Số hoá đơn mua hàng đính kèm phiếu nhập kho nếu có - Kho hàng : Mã số kho hàng (Bắt buộc phải có) - Khách hàng : Mã số khách hàng, nhà cung cấp (Bắt buộc phải có) - Họ tên : Tên người giao, nhận vật tư - Kiểm tra : Tên người kiểm tra nhận hoặc xuất vật tư - Nội dung : nội dung phiếu nhập xuất kho - Mã hàng : mã hàng hoá sẽ sản xuất từ số vật tư nhập kho. Chương trình sẽ tính số tồn kho vật tư theo từng mã hàng nhập kho. - Mã sản phẩm : mã hàng hoá sản xuất từ số vật tư xuất kho. - Mã vật tư : mã vật tư nhập xuất kho - Đơn giá : đơn giá vật tư - Tỷ giá : sử dụng trong trường hợp đơn giá vật tư là ngoại tệ, theo dõi số thành tiền nhập kho là VND (Mặc định là 1) - Hợp đồng : số hợp đồng, dùng để thống kê báo cáo số vật tư nhập xuất theo từng hợp đồng sản xuất. Form cập nhật phiếu hỗ trợ các chức năng chính trong cập nhật cũng như thay đổi thông tin trên phiếu như sau: - Nhấn nút Phiếu để nhập một phiếu mới, sau khi nhập xong từng mục, chương trình sẽ ghi lại và con trỏ sẽ quay về mục mã hàng để tiếp tục nhập liệu cho một mục mới. Sau khi nhập xong tất cả các mục trong một phiếu vật tư nhấn nút Ngưng để nhập phiếu mới - Trong quá trình nhập liệu nếu chưa nhấn nút Ghi mà nhấn nút Ngưng thì chương trình sẽ không ghi nhận kết quả nhập liệu vào cơ sơ dữ liệu - Để nhập bổ sung mục vật tư vào phiếu có sẵn nhấn nút tìm chọn phiếu cần bổ sung mục vật tư, nhấn phím ESC để trở về màn hình nhập liệu. Nhấn nút Mục để thêm một mục mới vào phiếu vật tư đã có sẵn - Để sửa mục vật tư có sẵn nhấn nút Tìm chọn phiếu cần sửa, nhấn phím ESC để trở về màn hình nhập liệu. Chọn mục vật tư cần sửa, Nhấn nút Sửa để mục vật tư đã có sẵn. Để xem in phiếu ta chọn phiếu cần in rồi nhấn Print để in phiếu trên màn hình như sau: Form cập nhật phiếu xuất Việc cập nhật phiếu xuất kho tương tự như cập nhật phiếu nhập kho cũng với các chức năng hỗ trợ tưong tự như: thêm phiếu mới, sửa thông tin, xoá , tìm, in và thoát khỏi form làm việc như trên. Để kết thúc làm việc với Form ta chọn Thoát để đóng Form để quay về Form Main tiếp tục khai thác các chức năng khác của hệ thống. Menu Báo cáo Trong menu báo cáo có các loại báo cáo sau: liệt kê chứng từ xuất nhập kho, sổ chi tiết vật tư hàng hoá,sổ chi tiết nhập xuất tồn kho, báo cáo nhập xuất tồn. Ngoài các loại báo cáo trong menu báo cáo còn hỗ trợ chức năng tra cứu thông tin. Ngưòi sử dụng sẽ chọn từng loại báo cáo bằng cách kích chuột vào menu báo cáo thể hiện chức năng tương ứng Form liệt kê chứng từ nhập xuất kho Form này cho phép người dùng liệt kê chứng từ xuất nhập vật tư theo các tiêu chí khác nhau như theo khách hàng, kho hàng, mã hàng, mã vật tư… Nếu người dùng không chọn tiêu chí nào chương trình sẽ tổng hợp toàn bộ thông tin trên báo cáo. Bảng kê chi tiết hàng hoá nhập kho vật tư hàng hoá Bảng kê chi tiết xuất kho vật tư hàng hoá Form Sổ chi tiết nhập xuất tồn Form này cho phép in bảng kê chi tiết nhập xuất tồn vật tư theo từng tiêu chí khác nhau: theo khách hàng, mã hàng hay mã vật tư. Nếu không chọn các tiêu chí chương trình sẽ tổng hợp toàn bộ dữ liệu trên báo cáo. Bảng kê chi tiết nhập xuất tồn theo mã vật tư Bảng kê chi tiết nhập xuất tồn theo mã hàng Form báo cáo nhập xuất tồn Cho phép tổng hợp báo cáo nhập xuất tồn vật tư hàng hoá theo mã hàng hoặc mã vật tư. Báo cáo xuất nhập tồn theo mã hàng Báo cáo tổng hợp nhập xuất tồn theo mã vật tư Form báo cáo tình hình tồn kho Form báo cáo này giúp người dùng hệ thống tổng hợp các báo cáo về tình hình tồn kho theo mã hàng hoặc mã vật tư. Báo cáo tình hình tồn kho theo mã hàng Form Tra cứu Hệ thống cho phép tìm kiếm thông tin theo 2 điều kiện: tìm kiếm thông tin tồn kho và tìm kiếm chứng từ. Để tra cứu thông tin tồn kho ta chọn option tồn kho và nhấn nút số liệu để hiện thông tin tìm kiếm được. Để tra cứu chứng từ ta chon option chứng từ sau đó nhấn nút số liệu để hiện thông tin tìm kiếm Menu Trợ giúp Bao gồm các chức năng giới thiệu chương trình và hướng dẫn sử dụng Khi người dùng kích chuột vào chức năng giới thiệu chương trình hoặc hướng dẫn sử dụng các form thông tin sẽ hiện ra. Form hướng dẫn sử dụng KẾT LUẬN Thế giới đang bước vào kỷ nguyên của khoa học công nghệ và chúng ta không thể phủ nhận những thành công của công nghệ thông tin đem lại cho con người. Nhờ tin học mà con người đã bước lên tầm cao mới, bươc sang một nền kinh tế mới - nền kinh tế tri thức. Trong những năm gần đây việc ứng dụng công nghệ thông tin vào công tác quản lý càng nhiều và là một nhu cầu cấp bách của nền kinh tế hiện nay.Việc quản lý vật tư tại Công ty TNHH Quốc Minh hiện nay còn gặp nhiều hạn chế và phức tạp. Nhằm khắc phục được những nhược điểm đó em chọn đề tài “Xây dựng phần mềm quản lý kho tại công ty TNHH Quốc MInh”. Chương trình này giải quyết được phần nào khó khăn trong công việc của các nhân viên xuất nhập vật tư, giúp tiết kiệm thời gian, chi phí quản lý cũng như cung cấp các thông tin đúng đắn kịp thời hỗ trợ các quyết định. Chương trình được xây dựng hoàn toàn trên hướng mở để có thể hoàn thiện nâng cấp trong tương lai. Tuy nhiên đây chưa phải là một phần mềm hoàn chỉnh do còn nhiều hạn chế về sự hiểu biết, về mặt thực tế cũng như vấn đề thời gian. Cuối cùng em xin chân thành cảm ơn những góp ý, chỉ bảo của cô giáo Trần Thị Song Minh và các cán bộ phòng triển khai Công ty TNHH Quốc Minh đã giúp đỡ em hoàn thành chuyên đề này. TÀI LIỆU THAM KHẢO TS. Trương Văn Tú – TS. Trần Thị Song Minh Giáo trình hệ thống thông tin quản lý NXB Thống kê, Hà Nội, 2000 Nguyễn Văn Vy Phân tích và thiết kế các hệ thống thông tin hiện đại NXB Thống kê, Hà Nội, 2003 Ths. Trần Công Uẩn Giáo trình cơ sở dữ liệu 1,2 NXB Thống kê, Hà Nội, 2004 Phạm Hữu Khang Ví dụ và bài tập Visual Basic.Net: lập trình cơ sở dữ liệu và Report NXB Lao động xã hội PGS.TS Hàn Viết Thuận Bài giảng công nghệ phần mềm PHỤ LỤC MỘT SỐ ĐOẠN CODE CHƯƠNG TRÌNH Form Đăng nhập hệ thống Private Sub cmdOK_Click() Unload Me FrmMain.Show End Sub Private Sub Form_Load() On Error GoTo ErrHand: txtPassword.Text = "" AdodcPass.Refresh AdodcPass.Recordset.Requery AdodcPass.Recordset.MoveFirst Do Until AdodcPass.Recordset.EOF cmbUsername.AddItem AdodcPass.Recordset.Fields("Username") AdodcPass.Recordset.MoveNext Loop cmbUsername.ListIndex = 0 Exit Sub ErrHand: MsgBox Err.Description, vbInformation, "Error" End Sub Private Sub cmdClose_Click() Unload Me End Sub Private Sub txtPassword_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Dim Found As Boolean UName = cmbUsername.Text If txtPassword.Text = "" Then MsgBox "Hay nhap mat khau!", vbInformation, "Mat khau sai" txtPassword.SetFocus Else AdodcPass.Recordset.MoveFirst Do Until AdodcPass.Recordset.EOF Or Found If AdodcPass.Recordset.Fields("Username") = cmbUsername.Text And AdodcPass.Recordset.Fields("Password") = txtPassword.Text Then Found = True Else AdodcPass.Recordset.MoveNext End If Loop If Found = True Then FrmMain.Show Unload Me Else MsgBox "Mat khau khong hop le", vbExclamation, "Mat khau sai" txtPassword.Text = "" End If End If End If End Sub Form đổi mật khẩu Private Sub cmdOK_Click() Dim Found As Boolean Dim Change As Boolean Dim Box As VbMsgBoxResult FrmLogin.AdodcPass.Refresh If cmbUsername.Text = "" Or txtCurrPassword.Text = "" Or txtConfirmPass.Text = "" Or txtNewPass.Text = "" Then MsgBox "Please fill in all non-optional fields", vbInformation, "Password configuration | Error" ElseIf txtConfirmPass.Text txtNewPass.Text Then MsgBox "Passwords dont match", vbInformation, "Password configuration | Error" txtNewPass.Text = "" txtConfirmPass.Text = "" txtNewPass.SetFocus ElseIf Len(txtNewPass.Text) < 6 Then MsgBox "Your password should have at least 6 characters" txtNewPass.Text = "" txtConfirmPass.Text = "" txtNewPass.SetFocus Else Box = MsgBox("Are you sure?", vbQuestion + vbYesNo, "Change user password") If Box = vbYes Then FrmLogin.AdodcPass.Refresh FrmLogin.AdodcPass.Recordset.MoveFirst Do Until FrmLogin.AdodcPass.Recordset.EOF Or Found If FrmLogin.AdodcPass.Recordset.Fields("Username") = cmbUsername.Text And FrmLogin.AdodcPass.Recordset.Fields("Password") = txtCurrPassword.Text Then Found = True Else FrmLogin.AdodcPass.Recordset.MoveNext End If Loop If Found = True Then FrmLogin.AdodcPass.Refresh FrmLogin.AdodcPass.Recordset.MoveFirst Do Until FrmLogin.AdodcPass.Recordset.EOF Or Change If FrmLogin.AdodcPass.Recordset.Fields("Password") = txtCurrPassword.Text Then FrmLogin.AdodcPass.Recordset.Fields("Password") = txtNewPass.Text Change = True Else FrmLogin.AdodcPass.Recordset.MoveNext End If Loop Else MsgBox "Incorrect Old Password ", vbExclamation, "Incorrect Old Password" txtCurrPassword.Text = "" txtCurrPassword.SetFocus End If If Change = True Then MsgBox "Password changed." & vbCrLf & vbCrLf & "Password will take effect next time the application is started.", vbInformation, "Password Status" FrmLogin.AdodcPass.Recordset.Update Call CleanUp End If FrmLogin.AdodcPass.Refresh End If End If End Sub Private Sub CleanUp() txtCurrPassword.Text = "" txtNewPass.Text = "" txtConfirmPass.Text = "" End Sub Private Sub Form_Load() cmbUsername.Clear FrmLogin.AdodcPass.Recordset.MoveFirst Do Until FrmLogin.AdodcPass.Recordset.EOF cmbUsername.AddItem FrmLogin.AdodcPass.Recordset.Fields("Username") FrmLogin.AdodcPass.Recordset.MoveNext Loop cmbUsername.ListIndex = 0 End Sub Private Sub txtconfirmpass_Change() If txtConfirmPass.Text = txtNewPass.Text Then lblStatus.Caption = "MËt khÈu hîp nhau!" Else lblStatus.Caption = "MËt khÈu kh«ng hîp nhau!" End If End Sub Form danh mục khách hàng Option Explicit Dim recnum Dim xThem Private Sub CmdCuoi_Click() On Error GoTo Err_Cuoi_Click If AdodcKH.Recordset.EOF Then MsgBox "Ban dang o ban ghi cuoi", vbOKOnly, "Thong bao" Else AdodcKH.Recordset.MoveLast End If Exit_Cuoi_Click: Exit Sub Err_Cuoi_Click: MsgBox Err.Description Resume Exit_Cuoi_Click End Sub Private Sub CmdDau_Click() On Error GoTo Err_Dau_Click If AdodcKH.Recordset.BOF Then MsgBox "Ban dang o ban ghi dau tien", vbOKOnly, "Thong bao" Else AdodcKH.Recordset.MoveFirst End If Exit_Dau_Click: Exit Sub Err_Dau_Click: MsgBox Err.Description Resume Exit_Dau_Click End Sub Private Sub CmdGhi_Click() On Error GoTo Err_ghi_click AdodcKH.Recordset.UpdateBatch adAffectAll CmdThoat.Visible = True CmdSua.Visible = True CmdKhong.Visible = False CmdGhi.Visible = False CmdXoa.Visible = True CmdThem.Visible = True CmdSearch.Visible = True CmdThem.SetFocus xThem = False Exit_ghi_click: DGridKH.SetFocus Exit Sub Err_ghi_click: MsgBox "Data is invalid." Resume Exit_ghi_click End Sub Private Sub CmdKhong_Click() On Error GoTo Err_Khong_Click AdodcKH.Refresh AdodcKH.Recordset.Clone AdodcKH.Recordset.MoveLast CmdThoat.Visible = True CmdSua.Visible = True CmdKhong.Visible = False CmdGhi.Visible = False CmdXoa.Visible = True CmdThem.Visible = True CmdSearch.Visible = True CmdThem.SetFocus xThem = False Exit_Khong_Click: DGridKH.SetFocus Exit Sub Err_Khong_Click: MsgBox "Data is invalid!" Resume Exit_Khong_Click End Sub Private Sub CmdSau_Click() If AdodcKH.Recordset.EOF Then MsgBox "ban dang o ban ghi cuoi", vbOKOnly, "Thong bao" Else AdodcKH.Recordset.MoveNext End If End Sub Private Sub CmdSua_Click() On Error GoTo Err_Sua_click recnum = AdodcKH.Recordset.Bookmark CmdThoat.Visible = False CmdSua.Visible = False CmdKhong.Visible = True CmdGhi.Visible = True CmdXoa.Visible = False CmdThem.Visible = False xThem = False DGridKH.AllowDelete = True DGridKH.AllowUpdate = True Exit_Sua_click: Exit Sub Err_Sua_click: MsgBox Err.Description Resume Exit_Sua_click End Sub Private Sub CmdThem_Click() On Error GoTo Err_Them_click DGridKH.AllowDelete = True DGridKH.AllowUpdate = True AdodcKH.Recordset.AddNew DGridKH.SetFocus CmdThoat.Visible = False CmdSua.Visible = False CmdKhong.Visible = True CmdGhi.Visible = True CmdXoa.Visible = False CmdThem.Visible = False CmdSearch.Visible = False xThem = True Exit_Them_click: Exit Sub Err_Them_click: MsgBox Err.Description Resume Exit_Them_click End Sub Private Sub CmdThoat_Click() Unload Me End Sub Private Sub CmdTruoc_Click() If AdodcKH.Recordset.BOF Then MsgBox "Ban dang o ban ghi dau tien", vbOKOnly, "Thong bao" Else AdodcKH.Recordset.MovePrevious End If End Sub Private Sub CmdXoa_Click() On Error GoTo Err_Xoa_click Dim TraLoi TraLoi = MsgBox("Ban muon xoa Ma khach hang " & _ AdodcKH.Recordset.Fields("TenKH") & " (cung voi cac thong tin lien quan)?" _ , vbYesNo, "Thong bao") If TraLoi = 6 Then AdodcKH.Recordset.Delete AdodcKH.Recordset.MoveNext AdodcKH.Recordset.Clone If AdodcKH.Recordset.EOF Then AdodcKH.Recordset.MoveLast End If End If Exit_Xoa_click: Exit Sub Err_Xoa_click: MsgBox "Khong the xoa ban ghi nay!" Resume Exit_Xoa_click End Sub Private Sub Form_Load() CmdThoat.Visible = True CmdSua.Visible = True CmdKhong.Visible = False CmdGhi.Visible = False CmdXoa.Visible = True CmdThem.Visible = True AdodcKH.Visible = False DGridKH.AllowDelete = False DGridKH.AllowUpdate = False DGridKH.AllowRowSizing = False DGridKH.AllowArrows = False locked End Sub Private Sub txtFind_Change() If CmbField.Text = "" Or txtFind = "" Then AdodcKH.Recordset.Filter = "" AdodcKH.Refresh Exit Sub End If AdodcKH.Recordset.Filter = CmbField & " LIKE '*" & txtFind & "*'" End Sub Private Sub AddItem() CmbField.AddItem ("MaKH") CmbField.AddItem ("TenKH") CmbField.AddItem ("DiaChi") CmbField.AddItem ("Tel") CmbField.AddItem ("Email") End Sub Private Sub CmdSearch_Click() Unlocked AddItem CmbField.SetFocus End Sub Private Sub CmdStop_Click() CmbField.Clear txtFind.Text = "" locked End Sub Private Sub AdodcKH_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) lblResult.Caption = "Kh¸ch hµng hien t¹i cã " & AdodcKH.Recordset.RecordCount txtSoKH.Text = "Kh¸ch hµng " & AdodcKH.Recordset.AbsolutePosition & _ " trong " & AdodcKH.Recordset.RecordCount End Sub Private Sub locked() CmdSearch.Visible = True CmdThem.Enabled = True CmdSua.Enabled = True CmdXoa.Enabled = True lblTruong.Enabled = False lblTimKiem.Enabled = False CmbField.Enabled = False txtFind.Enabled = False CmdStop.Visible = False End Sub Private Sub Unlocked() CmdSearch.Visible = False CmdThem.Enabled = False CmdSua.Enabled = False CmdXoa.Enabled = False lblTruong.Enabled = True lblTimKiem.Enabled = True CmbField.Enabled = True txtFind.Enabled = True CmdStop.Visible = True End Sub Form cập nhật số dư (tồn kho) Option Explicit Dim recnum Dim xThem Dim MyQry Dim conn As ADODB.Connection Dim conn1 As ADODB.Connection Dim conn2 As ADODB.Connection Dim rs As ADODB.Recordset Dim rs1 As ADODB.Recordset Dim rs2 As ADODB.Recordset Dim strSQL As String Private Sub CmdCuoi_Click() On Error GoTo Err_Cuoi_Click If AdodcTonKho.Recordset.EOF Then MsgBox "Ban dang o ban ghi cuoi", vbOKOnly, "Thong bao" Else AdodcTonKho.Recordset.MoveLast End If Exit_Cuoi_Click: Exit Sub Err_Cuoi_Click: MsgBox Err.Description Resume Exit_Cuoi_Click End Sub Private Sub CmdDau_Click() On Error GoTo Err_Dau_Click If AdodcTonKho.Recordset.BOF Then MsgBox "Ban dang o ban ghi dau tien", vbOKOnly, "Thong bao" Else AdodcTonKho.Recordset.MoveFirst End If Exit_Dau_Click: Exit Sub Err_Dau_Click: MsgBox Err.Description Resume Exit_Dau_Click End Sub Private Sub CmdGhi_Click() On Error GoTo Err_ghi_click AdodcTonKho.Recordset.UpdateBatch adAffectAll CmdThoat.Visible = True CmdSua.Visible = True CmdKhong.Visible = False CmdGhi.Visible = False CmdXoa.Visible = True CmdThem.Visible = True CmdThem.SetFocus CmdSearch.Visible = True xThem = False Exit_ghi_click: DGridTonKho.SetFocus Exit Sub Err_ghi_click: MsgBox "Data is invalid." Resume Exit_ghi_click End Sub Private Sub CmdInTonKho_Click() Dim strSQL1 As String Set conn = New ADODB.Connection Set rs = New ADODB.Recordset Dim CMaHH, CSl conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Data\QuanLyBanHang.mdb;Persist Security Info=False" conn.Open strSQL = "SELECT * FROM tblTonKhoIn" rs.Open strSQL, conn If rs.RecordCount > 0 Then strSQL = "DELETE * FROM tblTonKhoIN" conn.Execute strSQL conn.Close End If rs.Close 'Chuyen du lieu ton kho dau ky vao bang trung gian tblTonKhoIN strSQL = "INSERT INTO tblTonKhoIN(MaHH,TenHang,SolgDauK,GtDauKUS) " strSQL = strSQL & "SELECT TK.MaHH,TK.TenHang,TK.SolgDauK,TK.GtDauKUS FROM tblTonKho As TK " conn.Execute strSQL conn.Close 'Chuyen du lieu nhap trong ky tu tblNhapCT vao tblTonKhoIN Set conn1 = New ADODB.Connection Set conn2 = New ADODB.Connection Set rs1 = New ADODB.Recordset Set rs2 = New ADODB.Recordset conn1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Data\QuanLyBanHang.mdb;Persist Security Info=False" conn1.Open conn2.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Data\QuanLyBanHang.mdb;Persist Security Info=False" conn2.Open strSQL = "SELECT * FROM qrySLNhap" rs1.Open strSQL, conn1 strSQL1 = "SELECT * FROM tblTonKhoIN" rs2.Open strSQL1, conn2 rs1.MoveFirst Do Until rs1.EOF 'CMaHH = rs![MaHH] 'CSl = rs![SlNhap] rs2.MoveFirst Do Until rs2.EOF If rs2![MaHH] = rs1![MaHH] Then rs2![solgNhap] = rs2![solgNhap] + rs1![SlNhap] rs2.Update End If rs2.MoveNext Loop rs1.MoveNext Loop rs1.Close rs2.Close End Sub Private Sub CmdKhong_Click() AdodcTonKho.Refresh AdodcTonKho.Recordset.Clone AdodcTonKho.Recordset.MoveLast CmdThoat.Visible = True CmdSua.Visible = True CmdKhong.Visible = False CmdGhi.Visible = False CmdXoa.Visible = True CmdThem.Visible = True CmdThem.SetFocus xThem = False Exit_Khong_Click: DGridTonKho.SetFocus Exit Sub Err_Khong_Click: MsgBox "Du lieu khong hop le!" Resume Exit_Khong_Click End Sub Private Sub CmdSau_Click() If AdodcTonKho.Recordset.EOF Then MsgBox "ban dang o ban ghi cuoi", vbOKOnly, "Thong bao" Else AdodcTonKho.Recordset.MoveNext End If End Sub Private Sub CmdSua_Click() On Error GoTo Err_Sua_click recnum = AdodcTonKho.Recordset.Bookmark CmdThoat.Visible = False CmdSua.Visible = False CmdKhong.Visible = True CmdGhi.Visible = True CmdXoa.Visible = False CmdThem.Visible = False xThem = False DGridTonKho.AllowDelete = True DGridTonKho.AllowUpdate = True Exit_Sua_click: Exit Sub Err_Sua_click: MsgBox Err.Description Resume Exit_Sua_click End Sub Private Sub CmdThem_Click() On Error GoTo Err_Them_click DGridTonKho.AllowDelete = True DGridTonKho.AllowUpdate = True AdodcTonKho.Recordset.AddNew DGridTonKho.SetFocus CmdThoat.Visible = False CmdSua.Visible = False CmdKhong.Visible = True CmdGhi.Visible = True CmdXoa.Visible = False CmdThem.Visible = False CmdSearch.Visible = False xThem = True Exit_Them_click: Exit Sub Err_Them_click: MsgBox Err.Description Resume Exit_Them_click End Sub Private Sub CmdThoat_Click() Unload Me End Sub Private Sub CmdTruoc_Click() If AdodcTonKho.Recordset.BOF Then MsgBox "Ban dang o ban ghi dau tien", vbOKOnly, "Thong bao" Else AdodcTonKho.Recordset.MovePrevious End If End Sub Private Sub CmdXoa_Click() On Error GoTo Err_Xoa_click Dim TraLoi TraLoi = MsgBox("Ban muon xoa Ma hang " & _ AdodcTonKho.Recordset.Fields("MaHH") & " (cung voi thong tin lien quna)?" _ , vbYesNo, "Thong bao") If TraLoi = 6 Then AdodcTonKho.Recordset.Delete AdodcTonKho.Recordset.MoveNext AdodcTonKho.Recordset.Clone If AdodcTonKho.Recordset.EOF Then AdodcTonKho.Recordset.MoveLast End If End If Exit_Xoa_click: Exit Sub Err_Xoa_click: MsgBox "Khong the xoa ban ghi nay!" Resume Exit_Xoa_click End Sub Private Sub DcboMaHH_Change() Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Data\QuanLyBanHang.mdb;Persist Security Info=False" conn.Open MyQry = DcboMaHH.Text If MyQry "" Then strSQL = "SELECT * FROM tblDMHH WHERE MaHH='" & MyQry & "'" rs.Open strSQL, conn txtTenHang.Text = rs.Fields("TenHH") txtGtDauKUS.Text = rs.Fields("DGUsd") rs.Close End If End Sub Private Sub Form_Load() CmdThoat.Visible = True CmdSua.Visible = True CmdKhong.Visible = False CmdGhi.Visible = False CmdXoa.Visible = True CmdThem.Visible = True AdodcTonKho.Visible = False DGridTonKho.AllowDelete = False DGridTonKho.AllowUpdate = False DGridTonKho.AllowRowSizing = False DGridTonKho.AllowArrows = False locked End Sub Private Sub txtFind_Change() If CmbField.Text = "" Or txtFind = "" Then AdodcTonKho.Recordset.Filter = "" AdodcTonKho.Refresh Exit Sub End If AdodcTonKho.Recordset.Filter = CmbField & " LIKE '*" & txtFind & "*'" End Sub Private Sub AddItem() CmbField.AddItem ("Reckey") CmbField.AddItem ("MaKho") CmbField.AddItem ("MaHH") CmbField.AddItem ("TenHang") End Sub Private Sub CmdSearch_Click() Unlocked AddItem CmbField.SetFocus End Sub Private Sub CmdStop_Click() CmbField.Clear txtFind.Text = "" locked End Sub Private Sub AdodcTonKho_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) lblResult.Caption = "Tån kho hien t¹i cã " & AdodcTonKho.Recordset.RecordCount txtSoKho.Text = "Nh©n viªn " & AdodcTonKho.Recordset.AbsolutePosition & _ " trong " & AdodcTonKho.Recordset.RecordCount End Sub Private Sub locked() CmdSearch.Visible = True CmdThem.Enabled = True CmdSua.Enabled = True CmdXoa.Enabled = True lblTruong.Enabled = False lblTimKiem.Enabled = False CmbField.Enabled = False txtFind.Enabled = False CmdStop.Visible = False End Sub Private Sub Unlocked() CmdSearch.Visible = False CmdThem.Enabled = False CmdSua.Enabled = False CmdXoa.Enabled = False lblTruong.Enabled = True lblTimKiem.Enabled = True CmbField.Enabled = True txtFind.Enabled = True CmdStop.Visible = True End Sub Private Sub DcboMaHH_GotFocus() DcboMaHH.BackColor = &HC0E0FF End Sub Private Sub DcboMaHH_LostFocus() DcboMaHH.BackColor = &HC0C0C0 End Sub Private Sub DcboMaHH_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then txtSolgDauK.SetFocus End If End Sub Private Sub txtSolgDauK_GotFocus() txtSolgDauK.BackColor = &HC0E0FF End Sub Private Sub txtSolgDauK_LostFocus() txtSolgDauK.BackColor = &HC0C0C0 End Sub Private Sub txtSolgDauK_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then txtMaKho.SetFocus End If End Sub Private Sub TxtMaKho_GotFocus() txtMaKho.BackColor = &HC0E0FF End Sub Private Sub TxtMaKho_LostFocus() txtMaKho.BackColor = &HC0C0C0 End Sub Private Sub TxtMaKho_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then CmdGhi.SetFocus End If End Sub Form cập nhật phiếu xuất- nhập Option Explicit Dim strSQL As String Dim MyQry As Variant Dim conn As ADODB.Connection Dim rs As ADODB.Recordset Dim OptSelected As Long Dim cboOriginator As TextBox Dim xThem, xsua, recnum, tgvalue, tg1value Dim xThemCT, mRec, mKhong, mLoad, mChange, mGhi, xXoa Dim CBK Dim HT As String '=================================================== 'Source Code For HDNhap " Hoa don nhap hang " '=================================================== 'START FROM HERE Private Sub CmdCuoi_Click() On Error GoTo Err_Cuoi_Click If AdodcHDNhap.Recordset.EOF Then AdodcHDNhapCT.Recordset.Filter = "SoCT = '" & TxtSoCT & "'" AdodcHDNhapCT.Recordset.Requery ThanhTienVND TxtTenNhaCC.Text = "" txtTel.Text = "" TxtEmail.Text = "" TxtDiaChi.Text = "" TxtTenNV.Text = "" MsgBox "Ban dang o ban ghi cuoi!", vbOKOnly, "Thong bao" Else AdodcHDNhap.Recordset.MoveLast AdodcHDNhapCT.Recordset.Filter = "SoCT = '" & TxtSoCT & "'" AdodcHDNhapCT.Recordset.Requery ThanhTienVND End If Exit_Cuoi_Click: Exit Sub Err_Cuoi_Click: MsgBox Err.Description Resume Exit_Cuoi_Click End Sub Private Sub CmdDau_Click() On Error GoTo Err_Dau_Click If AdodcHDNhap.Recordset.BOF Then MsgBox "Ban dang o ban ghi dau tien!", vbOKOnly, "Thong bao" Else AdodcHDNhap.Recordset.MoveFirst AdodcHDNhapCT.Recordset.Filter = "SoCT = '" & TxtSoCT & "'" AdodcHDNhapCT.Recordset.Requery ThanhTienVND End If AdodcHDNhapCT.Recordset.Filter = "SoCT = '" & TxtSoCT & "'" AdodcHDNhapCT.Recordset.Requery ThanhTienVND Exit_Dau_Click: Exit Sub Err_Dau_Click: MsgBox Err.Description Resume Exit_Dau_Click End Sub Private Sub CmdGhi_Click() On Error GoTo Err_ghi_click AdodcHDNhap.Recordset.UpdateBatch adAffectAll lock_text CmdThem.SetFocus xThem = False xsua = False Exit_ghi_click: DcboMaNhaCC.SetFocus Exit Sub Err_ghi_click: MsgBox "Du lieu da nhap vao khong hop le" Resume Exit_ghi_click End Sub Private Sub CmdKhong_Click() AdodcHDNhap.Refresh AdodcHDNhap.Recordset.Clone AdodcHDNhap.Recordset.MoveLast AdodcHDNhap.Recordset.CancelUpdate AdodcHDNhapCT.Recordset.Filter = "SoCT = '" & TxtSoCT & "'" AdodcHDNhapCT.Recordset.Requery ThanhTienVND lock_text CmdThem.SetFocus xThem = False xsua = False End Sub Private Sub CmdNgayCT_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) Set cboOriginator = TxtNgayCT CalBUNKRY.Visible = True CalBUNKRY.SetFocus If Not IsNull(cboOriginator) Then CalBUNKRY.Value = cboOriginator.Text Else CalBUNKRY.Value = Date End If End Sub Private Sub CmdSau_Click() If AdodcHDNhap.Recordset.EOF Then MsgBox "Ban dang o ban ghi cuoi!", vbOKOnly, "Thong bao" Else TxtTongCong.Text = "" AdodcHDNhap.Recordset.MoveNext End If AdodcHDNhapCT.Recordset.Filter = "SoCT = '" & TxtSoCT & "'" AdodcHDNhapCT.Recordset.Requery ThanhTienVND Opt End Sub Private Sub CmdSua_Click() On Error GoTo Err_Sua_click recnum = AdodcHDNhap.Recordset.Bookmark Unlock_text TxtSoCT.locked = True xThem = False xsua = True Exit_Sua_click: Exit Sub Err_Sua_click: MsgBox Err.Description Resume Exit_Sua_click End Sub Private Sub CmdThem_Click() On Error GoTo Err_Them_click AdodcHDNhap.Recordset.AddNew TxtTenNhaCC.Text = "" txtTel.Text = "" TxtEmail.Text = "" TxtDiaChi.Text = "" TxtTenNV.Text = "" TxtTongCong.Text = "" TxtTenHH.Text = "" AdodcHDNhapCT.Recordset.Filter = "SoCT = '" & TxtSoCT & "'" AdodcHDNhapCT.Recordset.Requery Unlock_text xThem = True xsua = False Exit_Them_click: Exit Sub Err_Them_click: MsgBox Err.Description Resume Exit_Them_click End Sub Private Sub CmdThoat_Click() Unload Me End Sub Private Sub CmdTruoc_Click() If AdodcHDNhap.Recordset.BOF Then MsgBox "Ban dang o ban ghi dau tien!", vbOKOnly, "Thong bao" Else AdodcHDNhap.Recordset.MovePrevious AdodcHDNhapCT.Recordset.Filter = "SoCT = '" & TxtSoCT & "'" AdodcHDNhapCT.Recordset.Requery ThanhTienVND End If Opt End Sub Private Sub CmdXoa_Click() On Error GoTo Err_Xoa_click Dim TraLoi Dim KRY As Variant TraLoi = MsgBox("Ban muon xoa Ma nha cung cap " & DcboMaNhaCC.Text & _ " (cung voi cac thong tin lien quan)?", 48 + 4, "Thong bao") KRY = TxtSoCT.Text If TraLoi = 6 Then Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Data\QuanLyBanHang.mdb;Persist Security Info=False" conn.Open KRY = TxtSoCT.Text strSQL = "DELETE * FROM tblHDNhapCT WHERE SoCT ='" & KRY & "';" conn.Execute strSQL conn.Close AdodcHDNhap.Recordset.Delete AdodcHDNhap.Recordset.Clone AdodcHDNhap.Recordset.MoveNext If AdodcHDNhap.Recordset.EOF Then AdodcHDNhap.Recordset.MoveLast End If AdodcHDNhapCT.Recordset.Filter = "SoCT = '" & TxtSoCT & "'" AdodcHDNhapCT.Recordset.Requery End If Exit_Xoa_click: Exit Sub Err_Xoa_click: MsgBox Err.Description Resume Exit_Xoa_click End Sub Private Sub CmdXemTruoc_Click() Dim rs As New ADODB.Recordset Dim Sql As String Dim Tien As Double Sql = "SELECT C.MaHH, H.TenHH, C.DVT,C.SL,C.DGVUSD,C.ThanhTien FROM tblDMHH AS H, tblHDNhapCT AS C WHERE C.MaHH= H.MaHH AND SoCT ='" & TxtSoCT.Text & "'" rs.Open Sql, conn cr.SetTablePrivateData 0, 3, rs cr.ReportFileName = App.Path & "\Reports\rptPhieuNH.rpt" cr.Formulas(0) = "TenKH= '" & TxtTenNhaCC.Text & "'" cr.Formulas(1) = "DienThoai='" & txtTel.Text & "'" cr.Formulas(2) = "Email= '" & TxtEmail.Text & "'" cr.Formulas(3) = "DiaChi='" & TxtDiaChi.Text & "'" cr.Formulas(4) = "NguoiNhan= '" & TxtTenNV.Text & "'" cr.Formulas(5) = "HTTT='" & HT & "'" cr.Formulas(6) = "SoCT= '" & TxtSoCT.Text & "'" cr.Formulas(7) = "NgayCT='" & TxtNgayCT.Text & "'" cr.Formulas(8) = "DienGiai= '" & TxtDienGiai.Text & "'" cr.Formulas(9) = "MaKho='" & TxtMaKho.Text & "'" cr.Formulas(10) = "TongTien= '" & TxtTongCong.Text & "'" cr.Formulas(11) = "TyGia='" & TxtTyGia.Text & "'" cr.Formulas(12) = "ThanhTienVND= '" & txtThanhTienVND.Text & "'" Tien = txtThanhTienVND.Text cr.Formulas(13) = "TienVietChu='" & TienVND(Tien) & "'" cr.PrintReport rs.Close End Sub Private Sub DcboMaHH_Change() Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Data\QuanLyBanHang.mdb;Persist Security Info=False" conn.Open MyQry = DcboMaHH.Text If MyQry "" Then strSQL = "SELECT * FROM tblDMHH WHERE MaHH='" & MyQry & "'" rs.Open strSQL, conn TxtTenHH.Text = rs.Fields("TenHH") rs.Close End If End Sub Private Sub Form_Load() lock_text Lock_textCT AdodcHDNhapCT.Recordset.Filter = "SoCT = '" & TxtSoCT & "'" AdodcHDNhapCT.Recordset.Update AdodcHDNhapCT.Recordset.Requery ThanhTienVND Opt End Sub Private Sub CalBunkry_Click() cboOriginator.Text = Format(CalBUNKRY.Value, "dd/mm/yyyy") cboOriginator.SetFocus CalBUNKRY.Visible = False Set cboOriginator = Nothing DcboMaNV.SetFocus End Sub Private Sub DcboMaNhaCC_Change() Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Data\QuanLyBanHang.mdb;Persist Security Info=False" conn.Open MyQry = DcboMaNhaCC.Text If MyQry "" Then strSQL = "SELECT * FROM tblDMNhaCC WHERE MaNhaCC='" & MyQry & "'" rs.Open strSQL, conn TxtTenNhaCC.Text = rs.Fields("TenNhaCC") txtTel.Text = rs.Fields("Tel") TxtEmail.Text = rs.Fields("Email") TxtDiaChi.Text = rs.Fields("DiaChi") rs.Close End If End Sub Private Sub DcboMaNV_Change() Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Data\QuanLyBanHang.mdb;Persist Security Info=False" conn.Open MyQry = DcboMaNV.Text If MyQry "" Then strSQL = "SELECT * FROM tblDMNV WHERE MaNV='" & MyQry & "'" rs.Open strSQL, conn TxtTenNV.Text = rs.Fields("TenNV") rs.Close End If End Sub Private Sub DcboMaNhaCC_GotFocus() DcboMaNhaCC.BackColor = &HC0E0FF End Sub Private Sub DcboMaNhaCC_LostFocus() DcboMaNhaCC.BackColor = &HC0C0C0 TxtSoCT.SetFocus End Sub Private Sub Option1_Click(Index As Integer) OptSelected = Index If OptSelected = 0 Then AdodcHDNhap.Recordset.Fields("TT") = "Thanh tien ngay" HT = "Thanh tiÒn ngay" Else AdodcHDNhap.Recordset.Fields("TT") = "Ghi no" HT = "Ghi nî" End If End Sub Private Sub Opt() If TxtSoCT "" Then Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Data\QuanLyBanHang.mdb;Persist Security Info=False" conn.Open CBK = TxtSoCT.Text strSQL = "SELECT TT FROM tblHDNhap WHERE SoCT = '" & CBK & "'" rs.Open strSQL, conn If rs.Fields("TT") = "Ghi no" Then Option1(1).Value = True ElseIf rs.Fields("TT") = "Thanh tien ngay" Then Option1(0).Value = True End If rs.Close End If End Sub Private Sub TxtSoCT_Change() If TxtSoCT = "" Then txtThanhTienVND.Text = "" End If TinhTongCong End Sub Private Sub TinhTongCong() If TxtSoCT.Text "" Then Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Data\QuanLyBanHang.mdb;Persist Security Info=False" conn.Open CBK = TxtSoCT.Text strSQL = " SELECT Sum(ThanhTien) AS TongCong FROM tblHDNhapCT GROUP BY SoCT AND SoCT = '" & CBK & "'" rs.Open strSQL, conn TxtTongCong.Text = Format(rs.Fields("TongCong"), "$###,###,###,##0.00") rs.Close End If End Sub Private Sub TxtSoCT_GotFocus() TxtSoCT.BackColor = &HC0E0FF End Sub Private Sub TxtSoCT_LostFocus() TxtSoCT.BackColor = &HC0C0C0 End Sub Private Sub TxtSoCT_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then TxtNgayCT.SetFocus End If End Sub Private Sub TxtNgayCT_GotFocus() TxtNgayCT.BackColor = &HC0E0FF End Sub Private Sub TxtNgayCT_LostFocus() TxtNgayCT.BackColor = &HC0C0C0 End Sub Private Sub TxtNgayCT_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then DcboMaNV.SetFocus End If End Sub Private Sub DcboMaNV_GotFocus() DcboMaNV.BackColor = &HC0E0FF End Sub Private Sub DcboMaNV_LostFocus() DcboMaNV.BackColor = &HC0C0C0 TxtDienGiai.SetFocus End Sub Private Sub TxtDienGiai_GotFocus() TxtDienGiai.BackColor = &HC0E0FF End Sub Private Sub TxtDienGiai_LostFocus() TxtDienGiai.BackColor = &HC0C0C0 End Sub Private Sub TxtDienGiai_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then TxtMaKho.SetFocus End If End Sub Private Sub TxtMaKho_GotFocus() TxtMaKho.BackColor = &HC0E0FF End Sub Private Sub TxtMaKho_LostFocus() TxtMaKho.BackColor = &HC0C0C0 End Sub Private Sub TxtMaKho_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then TxtTyGia.SetFocus End If End Sub Private Sub TxtTyGia_GotFocus() TxtTyGia.BackColor = &HC0E0FF End Sub Private Sub TxtTyGia_LostFocus() TxtTyGia.BackColor = &HC0C0C0 End Sub Private Sub TxtTyGia_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then ThanhTienVND CmdGhi.SetFocus End If End Sub Private Sub ThanhTienVND() If AdodcHDNhap.Recordset.EOF = False And AdodcHDNhap.Recordset.BOF = False Then txtThanhTienVND.Text = Format(TxtTongCong.Text * TxtTyGia.Text, "###,###,###,##0") End If End Sub Private Sub DcboMaHH_GotFocus() DcboMaHH.BackColor = &HC0E0FF End Sub Private Sub DcboMaHH_LostFocus() DcboMaHH.BackColor = &HC0C0C0 TxtDvt.SetFocus End Sub Private Sub TxtDvt_GotFocus() TxtDvt.BackColor = &HC0E0FF End Sub Private Sub TxtDvt_LostFocus() TxtDvt.BackColor = &HC0C0C0 End Sub Private Sub TxtDvt_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then TxtSl.SetFocus End If End Sub Private Sub TxtSl_GotFocus() TxtSl.BackColor = &HC0E0FF End Sub Private Sub TxtSl_LostFocus() TxtSl.BackColor = &HC0C0C0 End Sub Private Sub TxtSl_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then TxtDGUsd.SetFocus End If End Sub Private Sub TxtDGUsd_GotFocus() TxtDGUsd.BackColor = &HC0E0FF End Sub Private Sub TxtDGUsd_LostFocus() TxtDGUsd.BackColor = &HC0C0C0 End Sub Private Sub TxtDGUsd_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then TxtTT.Text = Format(TxtSl * TxtDGUsd, "$###,###,###,##0.00") CmdGhiCT.SetFocus End If End Sub Private Sub Unlock_text() DcboMaNhaCC.locked = False DcboMaNV.locked = False TxtSoCT.locked = False TxtNgayCT.locked = False TxtDienGiai.locked = False TxtMaKho.locked = False TxtTyGia.locked = False CmdDau.Visible = False CmdSau.Visible = False CmdTruoc.Visible = False CmdCuoi.Visible = False CmdThoat.Visible = False CmdSua.Visible = False CmdKhong.Visible = True CmdGhi.Visible = True CmdXoa.Visible = False CmdThem.Visible = False Option1(0).Enabled = True Option1(1).Enabled = True CmdNgayCT.Enabled = True End Sub Private Sub lock_text() DcboMaNhaCC.locked = True DcboMaNV.locked = True TxtSoCT.locked = True TxtNgayCT.locked = True TxtDienGiai.locked = True TxtMaKho.locked = True CmdDau.Visible = True CmdSau.Visible = True CmdTruoc.Visible = True CmdCuoi.Visible = True CmdThoat.Visible = True CmdSua.Visible = True CmdKhong.Visible = False CmdGhi.Visible = False CmdXoa.Visible = True CmdThem.Visible = True Option1(0).Enabled = False Option1(1).Enabled = False CmdNgayCT.Enabled = False End Sub 'End of Source For HDNhap " Hoa don nhap hang " '======================================================== 'Source Code For HDNhapCT " Hoa don nhap hang chi tiet" '======================================================== 'START FROM HERE Private Sub CmdCuoiCT_Click() On Error GoTo Err_Cuoi_Click If AdodcHDNhapCT.Recordset.EOF Then MsgBox "Ban dang o ban ghi cuoi!", vbOKOnly, "Thong bao" Else AdodcHDNhapCT.Recordset.MoveLast End If Exit_Cuoi_Click: Exit Sub Err_Cuoi_Click: MsgBox Err.Description Resume Exit_Cuoi_Click End Sub Private Sub CmdDauCT_Click() On Error GoTo Err_Dau_Click If AdodcHDNhapCT.Recordset.BOF Then MsgBox "Ban dang o ban ghi dau tien!", vbOKOnly, "Thong bao" Else AdodcHDNhapCT.Recordset.MoveFirst End If Exit_Dau_Click: Exit Sub Err_Dau_Click: MsgBox Err.Description Resume Exit_Dau_Click End Sub Private Sub CmdGhiCT_Click() On Error GoTo Err_ghi_click CBK = DcboMaHH.Text If CBK = "" Then MsgBox "Chua Chon ma hang hoa" DcboMaHH.SetFocus Else AdodcHDNhapCT.Recordset.Update Lock_textCT End If DGridHDNhapCT.Refresh AdodcHDNhapCT.Recordset.Filter = "SoCT = '" & TxtSoCT & "'" AdodcHDNhapCT.Recordset.Requery TinhTongCong TxtTongCong.Refresh ThanhTienVND Exit_ghi_click: DcboMaHH.SetFocus Exit Sub Err_ghi_click: MsgBox "Du lieu da nhap vao khong hop le" Resume Exit_ghi_click End Sub Private Sub CmdKhongCT_Click() On Error GoTo Err_Khong_Click mKhong = True mLoad = False mChange = False mGhi = False AdodcHDNhapCT.Refresh AdodcHDNhapCT.Recordset.CancelUpdate AdodcHDNhapCT.Recordset.Filter = "SoCT = '" & TxtSoCT & "'" AdodcHDNhapCT.Recordset.Requery Lock_textCT CmdThemCT.SetFocus xThemCT = False Exit_Khong_Click: DcboMaHH.SetFocus Exit Sub Err_Khong_Click: MsgBox "Can nhap du lieu cho truong khoa" Resume Exit_Khong_Click End Sub Private Sub CmdSauCT_Click() If AdodcHDNhapCT.Recordset.EOF Then MsgBox "Ban dang o ban ghi cuoi!", vbOKOnly, "Information" Else AdodcHDNhapCT.Recordset.MoveNext End If End Sub Private Sub CmdSuaCT_Click() On Error GoTo Err_Sua_click recnum = AdodcHDNhapCT.Recordset.Bookmark Unlock_textCT xThemCT = False mKhong = False mLoad = False mChange = False mGhi = False TinhTongCong Exit_Sua_click: Exit Sub Err_Sua_click: MsgBox Err.Description Resume Exit_Sua_click End Sub Private Sub CmdThemCT_Click() On Error GoTo Err_Them_click xThemCT = True mKhong = False mLoad = False mChange = False mGhi = False AdodcHDNhapCT.Recordset.AddNew Unlock_textCT AdodcHDNhapCT.Recordset.Fields("SoCT") = Trim(TxtSoCT.Text) TinhTongCong TxtTenHH.Text = "" Exit_Them_click: Exit Sub Err_Them_click: MsgBox Err.Description Resume Exit_Them_click End Sub Private Sub CmdTruocCT_Click() If AdodcHDNhapCT.Recordset.BOF Then MsgBox "Ban dang o ban ghi dau tien!", vbOKOnly, "Thong bao" Else AdodcHDNhapCT.Recordset.MovePrevious End If End Sub Private Sub CmdXoaCT_Click() On Error GoTo Err_Xoa_click xThemCT = False mKhong = False mLoad = False mChange = False mGhi = False xXoa = True Dim TraLoi TraLoi = MsgBox("Ban muon xoa Ma hang " & DcboMaHH.Text & _ " (cung voi cac thong tin lien quan)?", 48 + 4, "Thong bao") If TraLoi = 6 Then AdodcHDNhapCT.Recordset.Delete AdodcHDNhapCT.Recordset.Clone AdodcHDNhapCT.Recordset.MoveNext If AdodcHDNhapCT.Recordset.EOF Then AdodcHDNhapCT.Recordset.MoveLast End If End If AdodcHDNhapCT.Recordset.Filter = "SoCT = '" & TxtSoCT & "'" AdodcHDNhapCT.Recordset.Requery TinhTongCong ThanhTienVND Exit_Xoa_click: Exit Sub Err_Xoa_click: MsgBox "Khong the xoa ban ghi nay !" Resume Exit_Xoa_click End Sub Private Sub Lock_textCT() DcboMaHH.locked = True TxtDvt.locked = True TxtSl.locked = True TxtDGUsd.locked = True CmdDauCT.Visible = True CmdSauCT.Visible = True CmdTruocCT.Visible = True CmdCuoiCT.Visible = True CmdSuaCT.Visible = True CmdKhongCT.Visible = False CmdGhiCT.Visible = False CmdXoaCT.Visible = True CmdThemCT.Visible = True DGridHDNhapCT.AllowUpdate = False End Sub Private Sub Unlock_textCT() DcboMaHH.locked = False TxtDvt.locked = False TxtSl.locked = False TxtDGUsd.locked = False CmdDauCT.Visible = False CmdSauCT.Visible = False CmdTruocCT.Visible = False CmdCuoiCT.Visible = False CmdSuaCT.Visible = False CmdKhongCT.Visible = True CmdGhiCT.Visible = True CmdXoaCT.Visible = False CmdThemCT.Visible = False End Sub Private Sub AdodcHDNhap_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) txtSoPhieu.Text = "PhiÕu nhËp " & AdodcHDNhap.Recordset.AbsolutePosition & _ " trong " & AdodcHDNhap.Recordset.RecordCount End Sub Private Sub AdodcHDNhapCT_MoveComplete(ByVal adReason As ADODB.EventReasonEnum, ByVal pError As ADODB.Error, adStatus As ADODB.EventStatusEnum, ByVal pRecordset As ADODB.Recordset) txtSoPhieuCT.Text = "Hµng nhËp hiÖn t¹i : " & AdodcHDNhapCT.Recordset.RecordCount End Sub Form báo cáo xuất nhập Dim conn As ADODB.Connection Dim rs As ADODB.Recordset Dim rs1 As ADODB.Recordset Dim loai As String Private Sub CboSoCT_Click() CmdXemTruoc.Enabled = True CmdInBC.Enabled = True End Sub Private Sub CmdXemTruoc_Click() Dim rs As New ADODB.Recordset Dim rs1 As New ADODB.Recordset Dim Sql As String Dim sql1 As String Dim Tien As Double If loai = "Xuat" Then sql1 = "SELECT C.TenKH AS Ten,C.DiaChi,C.Tel,C.Email,H.TT,H.DienGiai,H.Makho,H.TyGia,H.NgayCT,H.SoCT FROM tblDMKH As C ,tblHDXuat AS H WHERE C.MaKH = H.MaKH AND H.SOCT ='" & CboSoCT.Text & "'" Sql = "SELECT C.MaHH, H.TenHH, C.DVT,C.SL,C.DGVUSD,C.ThanhTien FROM tblDMHH AS H, tblHDXuatCT AS C WHERE C.MaHH= H.MaHH AND SoCT ='" & CboSoCT.Text & "'" Else sql1 = "SELECT C.TenNhaCC AS Ten,C.DiaChi,C.Tel,C.Email,H.TT,H.DienGiai,H.Makho,H.TyGia,H.NgayCT,H.SoCT FROM tblDMNhaCC As C ,tblHDNhap AS H WHERE C.MaNhaCC=H.MaNhaCC AND H.SOCT ='" & CboSoCT.Text & "'" Sql = "SELECT C.MaHH, H.TenHH, C.DVT,C.SL,C.DGVUSD,C.ThanhTien FROM tblDMHH AS H, tblHDNhapCT AS C WHERE C.MaHH= H.MaHH AND SoCT ='" & CboSoCT.Text & "'" End If rs.Open Sql, conn rs1.Open sql1, conn Cr.SetTablePrivateData 0, 3, rs Cr.ReportFileName = App.Path & "\Reports\rptPhieuNH.rpt" Cr.Formulas(0) = "TenKH= '" & rs1.Fields("Ten") & "'" Cr.Formulas(1) = "DienThoai='" & rs1.Fields("Tel") & "'" Cr.Formulas(2) = "Email= '" & rs1.Fields("Email") & "'" Cr.Formulas(3) = "DiaChi='" & rs1.Fields("DiaChi") & "'" 'Cr.Formulas(4) = "NguoiNhan= '" & txtTenNV.Text & "'" Cr.Formulas(5) = "HTTT='" & rs1.Fields("TT") & "'" Cr.Formulas(6) = "SoCT= '" & rs1.Fields("SoCT") & "'" Cr.Formulas(7) = "NgayCT='" & rs1.Fields("NgayCT") & "'" Cr.Formulas(8) = "DienGiai= '" & rs1.Fields("DienGiai") & "'" Cr.Formulas(9) = "MaKho='" & rs1.Fields("MaKho") & "'" 'Cr.Formulas(10) = "TongTien= '" & TxtTongCong.Text & "'" Cr.Formulas(11) = "TyGia='" & rs1.Fields("TyGia") & "'" 'Cr.Formulas(12) = "ThanhTienVND= '" & txtThanhTienVND.Text & "'" 'Tien = txtThanhTienVND.Text 'Cr.Formulas(13) = "TienVietChu='" & TienVND(Tien) & "'" Cr.PrintReport rs.Close End Sub Private Sub Form_Load() CmdXemTruoc.Enabled = False CmdInBC.Enabled = False End Sub Private Sub Option1_Click(Index As Integer) Dim OptSelected As Long Dim strSQL As String OptSelected = Index Set conn = New ADODB.Connection Set rs = New ADODB.Recordset conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\Data\QuanLyBanHang.mdb;Persist Security Info=False" conn.Open CboSoCT.Clear If OptSelected = 0 Then strSQL = "SELECT SoCT FROM tblHDXuat ORDER BY SoCT" rs.Open strSQL, conn rs.MoveFirst Do Until rs.EOF CboSoCT.AddItem (rs!SoCT) rs.MoveNext Loop loai = "Xuat" Else strSQL = "SELECT SoCT FROM tblHDNhap ORDER BY SoCT" rs.Open strSQL, conn rs.MoveFirst Do Until rs.EOF CboSoCT.AddItem (rs!SoCT) rs.MoveNext Loop loai = "Nhap" End If rs.Close End Sub

Các file đính kèm theo tài liệu này:

  • doc11154.doc
Tài liệu liên quan