Chương trình được viết bằng ngôn ngữ lập trình Visual Basic, là một ngôn ngữ lập trình huớng đối tượng của Microsoft, kết hợp với hệ quản trị cơ sở dữ liệu Microsoft SQL Server 2000 dùng để lưu cơ sở dữ liệu. Các thao tác đa phần đều thao tác với SQL Server nên khi viết mã trong chương trình Visual Basic cũng sử dụng các câu lệnh SQL phổ biến như Select, Insert, Update, Delete,…
Một số giải thuật chính:
Ä Giải thuật sinh mã tự động: (khi có yêu cầu thêm mới Nhà cung cấp, Khách hàng, Nhân viên, Phiếu nhập, Phiếu xuất,…)
1. Thực thi đoạn lệnh mở table cần thao tác trong SQL Server. 2. Tìm tới record cuối cùng trong table:
Nếu chưa có record nào thì gán giá trị khởi tạo lần đầu cho record. Ngược lại, lấy ra giá trị trường mã số (khóa) của record này. 3. Tăng giá trị lên 1 đơn vị.
4. Gán giá trị mới cho trường mã số của record được tạo ra. 5. Kết thúc.
Public Function CreateID(FieldID As String, rs, InitID As String) As String
Dim pos As Byte, i As Byte
Dim sId As String
If Not (rs.EOF) Then
rs.MoveLast sId = Trim(rs.Fields(FieldID)) Else CreateID = InitID Exit Function End If For i = 1 To Len(sId)
CHƯƠNG TRÌNH QUẢN LÝ KINH DOANH CÔNG TY CỔ PHẦN DƯỢC PHẨM KHÁNH HÒA
snum = Right(sId, Len(sId) - pos + 1)
num = CInt(snum) + 1
CreateID = mask & String(Len(snum) - Len(CStr(num)), "0") & num
End Function
ÄGiải thuật cập nhật Phiếu nhập hàng:
Theo quy định, khi một phiếu nhập hàng được lập thì:
− Mã số phiếu nhập tự động tăng.
− Khi phiếu nhập được lập thì làm cho công nợ nhà cung cấp tăng lên, số lượng hàng tồn trong kho tăng thêm.
1. Click chọn chức năng (menu) “Nhập hàng”.
2. Xuất hiện Form Nhập hàng và thi hành đoạn chương trình tự động tăng mã số phiếu nhập.
3. Nhập các thông tin phần đầu về phiếu nhập.
4. Chọn nhà cung cấp (bắt buộc), nếu ko nhập thì chương trình sẽ báo lỗi. Ứng với nhà cung cấp được chọn thì sẽ hiển thị các mặt hàng ứng với nhà cung cấp đó (không hiện hết tất cả mặt hàng).
5. Tiếp tục thêm mặt hàng vào chi tiết phiếu nhập. Trong quá trình thêm hàng mà thiếu thông tin nào đó bắt buộc thì chương trình hiện thông báo cho người sử dụng biết.
6. Sau khi chương trình tự động tính toán Tổng tiền của phiếu nhập, nếu thấy khớp với hóa đơn của nhà cung cấp thì kết thúc việc nhập hàng è click chọn “Lưu phiếu nhập” hoặc “Bỏ qua”.
- Nếu chọn “Bỏ qua” thì quay trở lại bước 2.
- Nếu chọn “Lưu phiếu nhập” thì sẽ lưu vào cơ sở dữ liệu ở các table tương ứng và hiện thông báo “Lưu thành công phiếu nhập”. Sau đó quay trở lại bước 2.
‘ Lưu thông tin vào table PHIEU_NHAP
s = "Select * from PHIEU_NHAP where MaPN = '" & Trim(txtMaPN.Text) & "'" rs.Open s, cn, adOpenStatic, adLockOptimistic, adCmdText
If rs.EOF = False Then
Chon = DialogXP1.MsgBoxV("Phiếu nhập này đã tồn tại rồi.", "Thông báo", vbOKOnly + vbInformation)
Me.txtMaPN.SetFocus Exit Sub
End If rs.AddNew
rs!MaPN = Me.txtMaPN.Text rs!NgayNhap = Date rs!SoCT = Me.txtSoHDPN.Text rs!NgayCT = NgayHoaDon rs!MaNCC = TimMaNCC(cboTenNCC_PN) rs!MaTTPP = TimMaTTPP(cboKhoNhap) rs!MaNV = TimMaNV(cboNhanVienNhap) rs!GTGTNhap = Me.cboVATNhap.Text rs!TongTienNhap = Me.txtTongTienNhap.Text rs.Update rs.Close
‘ Lưu thông tin chi tiết mặt hàng nhập vào table CHI_TIET_PN
s = "select * from CHI_TIET_PN"
rs.Open s, cn, adOpenKeyset, adLockOptimistic, adCmdText
For i = MSFlexGrdNhapHang.FixedRows To MSFlexGrdNhapHang.Rows - 1 rs.AddNew rs!MaPN = Me.txtMaPN.Text rs!MaMH = MSFlexGrdNhapHang.TextMatrix(i, 1) rs!SoLoNhap = MSFlexGrdNhapHang.TextMatrix(i, 6) rs!HanSDNhap = MSFlexGrdNhapHang.TextMatrix(i, 7) rs!SoLuongNhap = MSFlexGrdNhapHang.TextMatrix(i, 8) rs!DonGiaNhap = CCur(MSFlexGrdNhapHang.TextMatrix(i, 9)) rs!ChietKhauNhap = Val(MSFlexGrdNhapHang.TextMatrix(i, 11)) rs!ThanhTienNhap = MSFlexGrdNhapHang.TextMatrix(i, 12) Next i rs.Update rs.Close
‘ Tính lượng hàng tồn cho từng mặt hàng trong phiếu nhập, đồng thời đưa Giá nhập, Giá bán, Số lô, Hạn sử dụng vào table
CHƯƠNG TRÌNH QUẢN LÝ KINH DOANH CÔNG TY CỔ PHẦN DƯỢC PHẨM KHÁNH HÒA
MSFlexGrdNhapHang.TextMatrix(i, 1) & "' and SoLo = '" & MSFlexGrdNhapHang.TextMatrix(i, 6) & "' and GiaNhap = '" & CCur(MSFlexGrdNhapHang.TextMatrix(i, 9)) & "' and DonGia = '" & CCur(MSFlexGrdNhapHang.TextMatrix(i, 10)) & "'"
rs.Open s, cn, adOpenKeyset, adLockOptimistic, adCmdText If rs.EOF = True Then
rs.AddNew rs!MaTTPP = TimMaTTPP(cboKhoNhap) rs!MaMH = MSFlexGrdNhapHang.TextMatrix(i, 1) rs!SoLo = MSFlexGrdNhapHang.TextMatrix(i, 6) rs!HanSD = MSFlexGrdNhapHang.TextMatrix(i, 7) rs!SoLuongTon = MSFlexGrdNhapHang.TextMatrix(i, 8) rs!GiaNhap = CCur(MSFlexGrdNhapHang.TextMatrix(i, 9)) rs!DonGia = CCur(MSFlexGrdNhapHang.TextMatrix(i, 10)) rs.Update rs.Close Else SoLgTon = rs!SoLuongTon
SoLgTon = SoLgTon + MSFlexGrdNhapHang.TextMatrix(i, 8) Set rs = New ADODB.Recordset
s = "Update TON set SoLuongTon = '" & SoLgTon & "' where MaTTPP = '" & TimMaTTPP(cboKhoNhap) & "' and MaMH = '" & MSFlexGrdNhapHang.TextMatrix(i, 1) & "' and SoLo = '" & MSFlexGrdNhapHang.TextMatrix(i, 6) & "' and GiaNhap = '" & CCur(MSFlexGrdNhapHang.TextMatrix(i, 9)) & "' and DonGia = '" & CCur(MSFlexGrdNhapHang.TextMatrix(i, 10)) & "'"
cn.Execute (s) End If
Next i
‘ Tính toán công nợ nhà cung cấp
ConNoGanNhat = 0
Set rs = New ADODB.Recordset
s = "Select * From NHA_CC where MaNCC = '" & TimMaNCC(cboTenNCC_PN.Text) & "'"
ConNoGanNhat = CCur(ConNoGanNhat + CCur(Me.txtTongTienNhap.Text)) Set rs = New ADODB.Recordset
s = "update NHA_CC set NoDauKyNCC = '" & ConNoGanNhat & "' where MaNCC = '" & TimMaNCC(cboTenNCC_PN.Text) & "'"
rs.Open s, cn, adOpenKeyset, adLockOptimistic, adCmdText cn.Execute (s)
Ä Giải thuật tạo mới Phiếu chi:
Khi phiếu chi được lập thì:
− Mã phiếu chi tự động tăng.
− Công nợ nhà cung cấp giảm xuống.
1. Chọn chức năng “Phiếu chi” từ menu “Nghiệp vụ”. 2. Form giao diện phiếu chi được hiển thị.
3. Chọn button “Thêm” để tạo mới một phiếu chi và thi hành đoạn chương trình tự động tăng mã số phiếu chi.
4. Nhập các thông tin chi tiết kèm theo (số tiền chi, nhà cung cấp,…).
5. Sau khi nhập xong, chọn “Cập nhật” để lưu thông tin vào cơ sở dữ liệu. Đồng thời chương trình tự động tính toán lại công nợ nhà cung cấp cho phù hợp với số tiền trong phiếu chi.
‘ Tính công nợ Nhà cung cấp khi cập nhật mới phiếu chi Private Sub TinhCongNoNCC()
Dim ConNoGanNhat As Currency ConNoGanNhat = 0
Set rs = New ADODB.Recordset
s = "Select * From NHA_CC where MaNCC = '" & TimMaNCC(cboTenNCC_PC.Text) & "'"
rs.Open s, cn, adOpenKeyset, adLockOptimistic, adCmdText ConNoGanNhat = CCur(rs!NoDauKyNCC)
ConNoGanNhat = ConNoGanNhat - CCur(Me.txtSoTienChi.Text) Set rs = New ADODB.Recordset
s = "update NHA_CC set NoDauKyNCC = '" & CCur(ConNoGanNhat) & "' where MaNCC = '" & TimMaNCC(cboTenNCC_PC.Text) & "'" rs.Open s, cn, adOpenKeyset, adLockOptimistic, adCmdText
CHƯƠNG TRÌNH QUẢN LÝ KINH DOANH CÔNG TY CỔ PHẦN DƯỢC PHẨM KHÁNH HÒA