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.
                
              
                                            
                                
            
 
            
                
154 trang | 
Chia sẻ: aloso | Lượt xem: 1866 | Lượt tải: 0
              
            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:
11154.doc