Mô hình này chính là lược đồ cơ sở dữ liệu của hệ thống. Đây là bước trung gian chuyển đổi giữa mô hình thực thể (gần với người sử dụng) và mô hình vật lý dữ liệu (mô hình trong máy tính), chuẩn bị cho việc cài đặt hệ thống.
II.1. THIẾT KẾ CƠ SỞ DỮ LIỆU
II.1.1. Khách Hàng
KHACHHANG (Dùng cho cả nhà cung cấp và khách mua hàng)
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaKH nvarchar PK Mã KH
2 HoKH nvarchar Họ KH
3 TenKH nvarchar Tên KH
4 TenGiaoDich nvarchar Tên giao dịch
5 SoNhaKH nvarchar Số nhà KH
6 DTKhachHang nvarchar DT khách hàng
7 FaxKH nvarchar Fax KH
8 TaiKhoan nvarchar Tài khoản
9 STNoCoThe nvarchar ST nợ có thể
10 MaDuong nvarchar FK Mã huyện
11 MaHuyen nvarchar FK Mã đường
12 MaNH nvarchar FK Mã NH
II.1.2. Mặt Hàng
Mặt hàng <MATHANG>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaHang nvarchar PK Mã hàng
2 TenHang nvarchar Tên hàng
3 SLTonTT Int SL tồn TT
4 SLTonTD Int SL tồn TD
5 MaDVT nvarchar v Mã HSX
6 MaHSX nvarchar FK Mã DVT
7 MaNhom nvarchar FK Mã nhóm
II.1.3. Quản Lý Kho Quản lý kho <KHO>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaKho nvarchar PK Mã kho
2 TenKho nvarchar Tên kho
3 DTKho nvarchar DT kho
4 FaxKho nvarchar Fax kho
5 SoNhaKho Int Số nhà kho
6 ThuKho nvarchar Thủ kho
7 MaDuong nvarchar FK Mã đường
II.1.4. Quản Lý Đơn Đặt Hàng
Quản lý đơn đặt hàng <DONDHANG>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaDDH nvarchar PK Mã DDH
2 NgayDH datetime Mã KH
3 HanNgaygiao Nvarchar Ngày DH
4 MaKH Nvarchar FK Hạn ngày giao
VI.1.5. Dòng Đơn Đặt Hàng
Dòng đơn đặt hàng <DONGDONDH>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaDDH Nvarchar
2 MaHang Nvarchar PK
Mã DDH Mã hàng
3 SoLuongDH Int Số lượng DH
4 DonGiaDH Int Đơn giá DH
II.1.6.
Quản lý phiếu nhập xuất hàng <NXHANG>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaPNXH nvarchar PK Mà PNXH
2 MaDDH nvarchar FK Mã DDH
3 MaKho nvarchar FK Mã kho
4 NgayNXH datetime Ngày NXH
5 NgayHTT datetime Ngày HTT
6 NgayLapPNX datetime Ngày lập PNX
II.1.7.
Quản lý dòng phiếu nhập xuất hàng <DONGNXHANG>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaPNXH nvarchar PK Mà PNXH
2 MaHang nvarchar Mã hàng
3 SoLuongNXH Int Số lượng NXH
4 DonGiaNXH Float Đơn giá NXH
II.1.8.
Quản lý phiếu thanh toán <THANHTOAN>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaPTT nvarchar
2 MaPNXH nvarchar PK
Mã PTT Mã PNXH
3 NgayTT Datetime Ngày TT
4 SoTien Float Số tiền
II.1.9.
Quản lý đường <DUONG>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaDuong Nvarchar PK Mã đường
2 TenDuong Nvarchar Tên đường
II.1.10.
Quản lý ngân hàng <NGANHANG>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaNH Nvarchar PK Mã NH
2 TenNH Nvarchar Tên NH
II.1.11.
Quản lý huyện <HUYEN>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaHuyen Nvarchar PK Mã huyện
2 TenHuyen Nvarchar Tên huyện
3 MaTinh Nvarchar FK Mã tỉnh
II.1.12.
Quản lý tỉnh <TINH>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaTinh nvarchar PK Mã tỉnh
2 TenTinh nvarchar Tên tỉnh
3 MaNuoc nvarchar FK Mã nước
II.1.13.
Quản lý nước <NUOC>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaNuoc nvarchar PK Mã nước
2 TenNuoc nvarchar Tên nước
II.1.14.
Quản lý hãng sản xuất <HANGSX>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaHSX nvarchar PK Mã HSX
2 TenHSX nvarchar Tên HSX
3 MaNuoc nvarchar FK Mã nước
II.1.15.
Quản lý đơn vị tính <DONVITINH>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaDVT nvarchar PK Mã DVT
2 TenDVT nvarchar Tên DVT
II.1.16.
Quản lý nhóm hàng <NHOM>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaNhom nvarchar PK Mã nhóm
2 TenNhom nvarchar Tên nhóm
III. Một số giao diện chính :
III.1. Hình ảnh Form Đăng nhập hệ thống
III.2. Hình ảnh Form chính của chương trình:
III.3. Hình ảnh Form cập nhật hàng hóa :
III.4. Hình ảnh Form cập nhật khách hàng
III.5. Hình ảnh Form Đơn đặt hàng
III.6. Hình ảnh Form cập nhật kho
III.7. Hình ảnh Form Phiếu nhập hàng
III.8. Hình ảnh Form Phiếu chi
III.9. Hình ảnh Form Phiếu xuất
III.10. Hình ảnh Form Phiếu thu
III.11. Hình ảnh Form Thống kê báo cáo theo khoảng thời gian
III.12. Hình ảnh Báo cáo Phiếu đặt hàng
III.13. Hình ảnh Báo cáo phiếu nhập kho
III.14. Hình ảnh Báo cáo phiếu xuất kho
III.15. Hình ảnh Báo cáo phiếu thu
III.16. Hình ảnh Báo cáo phiếu chi
IV. Một số mô đun chính : IV.1. Mô đun kết nối CSDL :
Public Function Ketnoi() As Boolean On Error Resume Next
con.ConnectionTimeout = 5
'su dung sqloledb de ket noi toi sqlserver ' phuong thuc chuoi ket noi
con.ConnectionString = "PROVIDER=SQLOLEDB.1;server =(local)" & ";Database=dulieu1" & ";Trusted_Connection=yes"
'con.Properties("Prompt") = adPromptComplete con.Open
End Function
IV.2. Mô đun kiểm tra ngày tháng nhập vào :
' Ham kiem tra ngay nhap vao
Public Function checkdate(strdate As String) As String Dim temp As Integer
Dim strtemp As String temp = 3
If IsNumeric(Left(strdate, 1)) Then ' Neu ky tu dau la so thi
If IsNumeric(Mid(strdate, 2, 1)) Then ' Neu ky tu thu hai la so thi If Left(strdate, 2) <= 31 Then ' Neu gia tri 2 ky tu
' <=31 thi kiem tra dau "/" mask1:
If Mid(strdate, temp, 1) = "/" Then
If IsNumeric(Mid(strdate, temp + 1, 1)) Then If IsNumeric(Mid(strdate, temp + 2, 1)) Then If Mid(strdate, temp + 1, 2) <= 12 Then If Mid(strdate, temp + 3, 1) = "/" Then
strtemp = Left(strdate, temp + 3) ' Cat bo 6 ky tu dau If IsDate(strdate) Then ' Chuyen phan con lai th nam checkdate = strtemp & Format(strdate, "yyyy") Else GoTo msgdate End If End If Else GoTo msgdate End If Else
If Mid(strdate, temp + 2, 1) = "/" Then
strtemp = Left(strdate, temp + 2) If IsDate(strdate) Then
checkdate = strtemp & Format(strdate, "yyyy") Else GoTo msgdate End If End If End If Else GoTo msgdate End If Else GoTo msgdate End If Else GoTo msgdate End If Else If Mid(strdate, 2, 1) = "/" Then temp = 2 GoTo mask1 Else GoTo msgdate End If End If Else msgdate: checkdate = "1" End If
End Function
IV.3. Mô đun lưu dữ liệu xuất hàng:
Public Sub Luudl()
On Error GoTo error1
Dim rs As New ADODB.Recordset Dim cmd As New ADODB.Command Dim str As String
If Trim(txtmapnx) = "" Or Trim(txtngaylappnx) = "" Or Trim(Combomaddh.Text) = "" Or Trim(txtngaynx) = "" Or Trim(txtngayhtt) = "" Or Trim(Combomahang.Text) = "" Or Trim(txtsoluongnx) = "" Or Trim(txtdongianx) = "" Then
MsgBox "Chu y: Phai nhap day du thong tin truoc khi luu!", vbOKOnly + vbExclamation, "Thong bao"
txtmapnx.SetFocus Exit Sub
End If
'Neu kiem tra ma khach hang co bat dau bang chu 'K' hay khong If Left(Trim(txtmapnx), 1) <> "X" Then
MsgBox "Chu y: Ma phieu xuat hang phai bat dau boi 'X ...' !", vbOKOnly + vbExclamation, "Thong bao"
txtmapnx.SetFocus Exit Sub
End If
'Tim xem da ton tai Maduong nay trong Table duong hay chua? Set cmd.ActiveConnection = con
str = "Select NXHANG.mapnxh, NXHANG.maddh, NXHANG.makho, NXHANG.ngaynxh, NXHANG.ngayhtt, NXHANG.ngaylappnx from NXHANG where mapnxh like 'X%' and mapnxh = '" & Trim(txtmapnx) & "'"
rs.Open str, con, adOpenKeyset, adLockPessimistic, adCmdText If rs.EOF = True Then 'Neu chua ton tai
Set rs = Nothing ' Dong record lai toithieu = 0 'Xoa gia tri ban dau toida = 0 'Xoa gia tri ban dau Set cmd.ActiveConnection = con
str = "select MATHANG.mahang, MATHANG.sltontt, MATHANG.sltontd from MATHANG where MATHANG.mahang ='" & Trim(Left(Combomahang.Text, 4)) & "'"
rs.Open str, con, adOpenKeyset, adLockPessimistic, adCmdText If rs.EOF = False Then ' Neu da ton tai, chac chan co
toithieu = rs!sltontt toida = rs!sltontd Set rs = Nothing End If
Set cmd.ActiveConnection = con
str = "select CTMATHANG.mahang, CTMATHANG.soluongton from
CTMATHANG where CTMATHANG.mahang ='" &
Trim(Left(Combomahang.Text, 4)) & "'"
rs.Open str, con, adOpenKeyset, adLockPessimistic, adCmdText If rs.EOF = False Then ' Neu da ton tai
sltontam = rs!soluongton - Val(txtsoluongnx) If sltontam < toithieu Then
MsgBox "So luong hang ton duoi muc toi thieu. Can phai nhap them truoc da.", vbOKOnly + vbExclamation, "Thong bao"
txtsoluongnx.SetFocus Me.MousePointer = 0 Set rs = Nothing Exit Sub
Else ' Neu khong duoi muc ton toi thieu, cap nhat SL
Set rs = Nothing
Set cmd.ActiveConnection = con 'Mo lai de luu
str = "Select NXHANG.mapnxh, NXHANG.maddh, NXHANG.makho, NXHANG.ngaynxh, NXHANG.ngayhtt, NXHANG.ngaylappnx from NXHANG where mapnxh like 'X%' and mapnxh = '" & Trim(txtmapnx) & "'" rs.Open str, con, adOpenKeyset, adLockPessimistic, adCmdText
If rs.EOF = True Then 'Neu chua ton tai, chac chan chua co rs.AddNew rs!mapnxh = Trim(txtmapnx) rs!ngaylappnx = Trim(txtngaylappnx) rs!maddh = Trim(Left(Combomaddh.Text, 5)) rs!makho = Trim(Left(Combomakho.Text, 5)) rs!ngaynxh = Trim(txtngaynx) rs!ngayhtt = Trim(txtngayhtt) rs.Update
Set rs = Nothing ' Dong record lai End If
Set cmd.ActiveConnection = con
str = "Select DONGNXHANG.mapnxh, DONGNXHANG.mahang, DONGNXHANG.soluongnxh, DONGNXHANG.dongianxh from DONGNXHANG where mapnxh like 'X%' and mapnxh = '" & Trim(txtmapnx) & "' and mahang = '" & Trim(Left(Combomahang.Text, 4)) & "'"
rs.Open str, con, adOpenKeyset, adLockPessimistic, adCmdText If rs.EOF = True Then 'Neu chua ton tai
rs.AddNew rs!mapnxh = Trim(txtmapnx) rs!mahang = Trim(Left(Combomahang.Text, 4)) rs!soluongnxh = Trim(txtsoluongnx) rs!dongianxh = Trim(txtdongianx) rs.Update Set rs = Nothing End If
'Chi tiet mat hang duoc cap nhat sau cung
Set rs.ActiveConnection = con 'Cap nhat phai nhu vay
str = "Update CTMATHANG set soluongton ='" & sltontam & "' where mahang ='" & Trim(Left(Combomahang.Text, 4)) & "'"
rs.Open str, con, adOpenKeyset, adLockPessimistic, adCmdText sltontam = 0 ' Xoa
Set rs = Nothing 'Dong ban ghi lai End If
Else ' Neu chua co (chua xuat lan nao)
sltontam = Val(txtsoluongnx) ' Kiem tra vuot Sltontd If sltontam < toithieu Then
MsgBox "So luong hang ton duoi muc toi thieu. Can phai nhap them truoc da.", vbOKOnly + vbExclamation, "Thong bao"
txtsoluongnx.SetFocus Me.MousePointer = 0 Set rs = Nothing Exit Sub
Else ' Khong duoi SLtontt, tao moi Set rs = Nothing
Set cmd.ActiveConnection = con 'Mo lai de luu
str = "Select NXHANG.mapnxh, NXHANG.maddh, NXHANG.makho, NXHANG.ngaynxh, NXHANG.ngayhtt, NXHANG.ngaylappnx from NXHANG where mapnxh like 'X%' and mapnxh = '" & Trim(txtmapnx) & "'" rs.Open str, con, adOpenKeyset, adLockPessimistic, adCmdText
If rs.EOF = True Then 'Neu chua ton tai, chac chan chua co rs.AddNew rs!mapnxh = Trim(txtmapnx) rs!ngaylappnx = Trim(txtngaylappnx) rs!maddh = Trim(Left(Combomaddh.Text, 5)) rs!makho = Trim(Left(Combomakho.Text, 5)) rs!ngaynxh = Trim(txtngaynx) rs!ngayhtt = Trim(txtngayhtt) rs.Update
Set rs = Nothing ' Dong record lai End If
Set cmd.ActiveConnection = con
str = "Select DONGNXHANG.mapnxh, DONGNXHANG.mahang, DONGNXHANG.soluongnxh, DONGNXHANG.dongianxh from DONGNXHANG where mapnxh like 'X%' and mapnxh = '" & Trim(txtmapnx) & "' and mahang = '" & Trim(Left(Combomahang.Text, 4)) & "'"
rs.Open str, con, adOpenKeyset, adLockPessimistic, adCmdText
If rs.EOF = True Then 'Neu chua ton tai rs.AddNew rs!mapnxh = Trim(txtmapnx) rs!mahang = Trim(Left(Combomahang.Text, 4)) rs!soluongnxh = Trim(txtsoluongnx) rs!dongianxh = Trim(txtdongianx) rs.Update Set rs = Nothing End If
'Chi tiet mat hang phai duoc tao moi sau cung Set cmd.ActiveConnection = con
str = "select CTMATHANG.mahang, CTMATHANG.soluongton from
CTMATHANG where CTMATHANG.mahang ='" &
Trim(Left(Combomahang.Text, 4)) & "'"
rs.Open str, con, adOpenKeyset, adLockPessimistic, adCmdText If rs.EOF = True Then 'Chac chan chua co
rs.AddNew
rs!mahang = Trim(Left(Combomahang.Text, 4)) rs!soluongton = sltontam
rs.Update
Set rs = Nothing
sltontam = 0 'Xoa gia tri End If
End If End If
toithieu = 0 'Xao gia tri toida = 0 'Xao gia tri
Else 'Neu da ton tai phieu xuat hang nay roi
MsgBox "Phieu xuat hang co ma so [" & Trim(txtmapnx) & "] da ton tai. Vui long kiem tra lai !", vbOKOnly + vbExclamation, "Thong bao"
txtmapnx.SetFocus Me.MousePointer = 0 Exit Sub
End If
DisplayGrid 'Hien thi danh sach cac hang san xuat
error1:
If Err.Number <> 0 Then
MsgBox Err.Number & Err.Description Else
MsgBox "Luu thanh cong phieu xuat hang co ma so: '" & Trim(txtmapnx) & "'"
response = MsgBox("Ban co muon them mat hang vao phieu xuat hang nua khong ?", vbYesNo + vbQuestion, "Thong bao")
If response = vbYes Then 'Neu chon NO thi khong Xoa Locktext
Unlocktext2
Setnull2 'Xoa Textbox Combomahang.SetFocus Flag = True
Else
Setnull2 'Xoa Textbox Locktext
End If End If End Sub
KẾT LUẬN VÀ ĐÁNH GIÁ
HỆ THỐNG THÔNG TIN QUẢN LÝ HÀNG HOÁ