0
Tải bản đầy đủ (.doc) (129 trang)

Một số giải thuật

Một phần của tài liệu PHÂN TÍCH VÀ THIẾT KẾ PHẦN MỀM QUẢN LÝ HÀNG HÓA VẬT TƯ (Trang 64 -108 )

II. Phân tích thiết kế phần mềm quản lý hàng hoá vật t

2. Một số giải thuật

Giải thuật đăng nhập

B Đ

Mở form đăng nhập

Nhập tên NSD

Kiểm tra tên NSD và mật khẩu? K T Đúng Sai Nhập mật khẩu Vào Form chính Thông báo nhập sai Có nhập lại Không

Giải thuật cập nhật dữ liệu Không Sai Không Đúng B Mở form cập nhật Thêm 1 bản ghi trắng Nhập dữ liệu Kiểm tra dữ liệu Lưu bản ghi KT Tiếp tục?

Thông báo dữ liệu nhập sai

Nhập lại?

Giải thuật xoá dữ liệu B Chọn bản ghi cần xóa NDùng nhấn nút xoá Sai Đúng Thông báo có xoá ko? Thực hiện lệnh xoá KT

3. Thiết kế giao diện và đầu ra của ch ơng trình

Việc thiết kế giao diện có ý nghĩa vô cùng quan trọng đối với sự thành công của hệ thống. Qúa trình thiết kế giao diện trong hệ thống quản lý hàng hoá vật t đã tuân thủ một số nguyên tắc sau:

 Hệ thống luôn đảm bảo rằng ngời sử dụng đang kiểm soát hệ thống.

 Hệ thống đợc thiết kế theo thói quen và kinh nghiệm của ngời sử dụng.

 Hệ thống che khuất những bộ phận bên trong của các phần mềm và phần cứng tạo thành hệ thống.

 Hệ thống cung cấp thông tin t liệu trên màn hình.

 Hệ thống đã đợc thiết kế để giảm tối thiểu lợng thông tin mà ng- ời sử dụng phải nhớ trong qúa trình sử dụng chơng trình.

 Hệ thống tuân thủ những nguyên tắc chuẩn đã đợc chấp nhận khi thể hiện thông tin trên màn hình hay trên giấy.

Một số giao diện chính trong chơng trình.

Form Login hệ thống: Khi ngời sử dụng login vào chơng trình thì

phải khai báo tên đăng nhập và mật khẩu để truy nhập.

Form Quản lý ngời dùng : Cho phép ngời quản lý có thể tạo thêm mới

Form Nhập tồn kho đầu kì : Cho phép cập nhật những hàng hoá tồn

trong kho cuối kì trớc vào đầu kì mới. Có thể xem, chỉnh sửa các thông tin về hàng hoá tồn trong kho.

Form Đổi mật khẩu : Ngời dùng có thể sử dụng chức năng thay đổi

mật khẩu trong chơng trình để đảm bảo tính bảo mật của hệ thống.

Form Viết, xem, sửa, xoá phiếu nhập vật t : Cho phép ngời dùng có

thể xem các phiếu đã viết trớc, có thể chỉnh sửa phần mũ phiếu và viết thêm các phiếu nhập mới.

Form Cập nhật ruột phiếu nhập: Đợc sử dụng để cập nhật, chỉnh sửa

và xoá các thông tin về vật t trong phiếu nhập.

Form Viết, xem, sửa, cập nhật phiếu xuất vật t: Cho phép ngời sử

dụng có thể xem, chỉnh sửa các phiếu cũ, đồng thời viết mới các phiếu xuất kho

Form Cập nhật ruột phiếu xuất: Dùng để cập nhật và chỉnh sửa các

thông tin về vật t trong mục phiếu xuất.

Form Chọn vật t trong danh mục vật t: Dùng để chọn vật t để cập

Form Danh mục vạt t tồn trong kho: Dùng để chọn các vật t để cập

nhật vào phiếu xuất vật t.

Form Danh mục kho: Cho phép ngời dùng có thể cập nhật, chỉnh sửa

Form Danh mục vật t: Cho phép xem, sửa, xoá các thông tin về danh

mục vật t.

Form Danh mục đơn vị nhập: Ngời dùng có thể xem, chỉnh sửa, xoá

Form Danh mục đơn vị xuất: Cho phép ngời dùng có thể xem, sửa,

xoá danh mục các đơn vị xuất.

Form Danh mục tính chất nhập: Lu các thông tin về cách thức nhập

Form Danh mục tính chất xuất: Gồm có mã tính chất xuất và tên tính chất xuất.

Form Xem tồn kho: Dùng để xem các thông tin về hàng hoá tồn trong

kho tại thời điểm hiện tại.

4. Một số mẫu báo cáo trong ch ơng trình

Phiếu xuất vật t

Báo cáo hàng tồn kho

Báo cáo danh mục tính chất xuất

5. Một số ch ơng trình nguồn. Mã nguồn của modul kết nối.

Public Cn As New ADODB.Connection Public rs As New ADODB.Recordset Public f_user, f_group As String Public flag_pass As String Public key As String

Public Sub connect_database() Dim Str As String

Dim db_name

db_name = App.Path & "\db1.mdb"

Str = "provider=Microsoft.jet.OLEDB.4.0;data source=" & db_name & "" DE_HH.CN_HH.ConnectionString =

"Provider=Microsoft.jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & db_name & ""

DE_HH.CN_HH.Open Cn.Open Str

Hàm mã hoá và giải mã mật khẩu.

Public Function mahoa(pass) As String Dim strtemp, kqua, nlen, l

nlen = Len(key) kqua = ""

l = 0

Do Until Len(pass) <= nlen strtemp = Left(pass, nlen) pass = Mid(pass, nlen + 1) If l = 0 Then

kqua = kqua & StrReverse(strtemp) l = 1

Else

kqua = kqua & strtemp l = 0

End If Loop

If l = 0 Then

mahoa = kqua & StrReverse(pass) Else

mahoa = kqua & pass End If

End Function

Public Function giaima(pass) As String Dim strtemp, kqua, nlen, l

nlen = Len(key) kqua = ""

l = 1

Do Until Len(pass) <= nlen strtemp = Left(pass, nlen) pass = Mid(pass, nlen + 1) If l = 1 Then

kqua = kqua & StrReverse(strtemp) l = 0

Else

kqua = kqua & strtemp l = 1

End If Loop

If l = 1 Then

giaima = kqua & StrReverse(pass) Else

giaima = kqua & pass End If

End Function

Hàm đổi số thành chữ

Public Function VND(D_sotien As Double)

Dim Ketqua, B, TIEN, Chudoc, Chuso, i, BACONSO, chu, So1, So2, So3, j, Dich, S, Vitri If D_sotien = 0 Then Ketqua = "Không đồng" Else If D_sotien < 0 Then Ketqua = "Trừ " Else Ketqua = "" End If B = " " TIEN = Format(Abs(D_sotien), "##0.00") TIEN = Right(Space(12) + TIEN, 15) Chudoc = ""

Chudoc = Chudoc + "trăm mơi tỷ " Chudoc = Chudoc + "trăm mơi triệu " Chudoc = Chudoc + "trăm mơi ngàn " Chudoc = Chudoc + "trăm mơi đồng " Chudoc = Chudoc + "trăm mơi "

Chuso = ""

Chuso = Chuso + "một hai ba bốn năm " Chuso = Chuso + "sáu bảy tám chín " For i = 1 To 5

BACONSO = Mid(TIEN, i * 3 - 2, 3) If BACONSO <> Space(3) Then Select Case BACONSO

Case "000" If i = 4 Then chu = "đồng " Else chu = "" End If Case ".00" chu = "chẵn " Case Else So1 = Left(BACONSO, 1) So2 = Mid(BACONSO, 2, 1) So1 = Right(BACONSO, 1)

chu = "" For j = 1 To 3 Dich = ""

S = Val(Mid(BACONSO, j, 1)) If S > 0 Then

Dich = Trim(Mid(Chuso, S * 5 - 4, 5)) + B + Trim(Mid(Chudoc, (i - 1) * 18 + j * 6 - 5, 6)) + B

End If

Select Case j Case 2 And S = 1 Dich = "mời "

Case 3 And S = 0 And BACONSO <> Space(2) + "0" Dich = Trim(Mid(Chudoc, (i - 1) * 18 + j * 6 - 5, 6)) + " " Case 3 And S = 5 And So2 <> " " And So2 <> "0"

Dich = "l" + Mid(Dich, 2)

Case 2 And S = 0 And So3 <> "0" And So1 >= "0" And i = 4 'If (So1 >= "1" And So1 <= "9") Or (So1 = "0" And I = 4) Then Dich = "lẻ "

'End If End Select

chu = chu + Dich Next j

End Select

Vitri = InStr(1, chu, "mơi một", 1) If Vitri > 0 Then

Mid(chu, Vitri, 9) = "mơi mốt" End If

Ketqua = Ketqua + chu End If

Next i End If

VND = UCase(Left(Ketqua, 1)) + Mid(Ketqua, 2) End Function

Hàm kiểm tra sự tồn tại của vật t.

Public Function Ktra_ExistVT(mSTT_REC As Integer, mMa_VT As String, mCL As String, mDG As Double) As Boolean

Dim Rs1 As ADODB.Recordset Set Rs1 = New ADODB.Recordset Ktra_ExistVT = False

Rs1.Open "SELECT * FROM CTVT WHERE STT_REC=" & Str(mSTT_REC) & " AND MA_VT='" & mMa_VT & "' AND CL='" & mCL & "' AND DG=" & Str(mDG), Cn, adOpenDynamic, adLockReadOnly If Not Rs1.EOF Then

Ktra_ExistVT = True End If Rs1.Close Set Rs1 = Nothing End Function Hàm kiểm tra số chứng từ.

Public Function Ktra_SoCT(mSO_CT As String, mMA_CT As String) As Boolean

Dim Rs1 As ADODB.Recordset Set Rs1 = New ADODB.Recordset Ktra_SoCT = False

Rs1.Open "SELECT * FROM CTCHUNG WHERE SO_CT='" & mSO_CT & "' AND MA_CT='" & mMA_CT & "'", Cn, adOpenDynamic, adLockReadOnly

If Not Rs1.EOF Then Ktra_SoCT = True End If

Rs1.Close

Set Rs1 = Nothing End Function

Mã nguồn trong form Viết phiếu nhập.

Option Explicit Dim State As String

Public mSTT_REC As Integer Dim mSO_CT As String Private Sub cmdADD_Click() State = "ADD" cmdEDIT.Caption = "&Ghi" cmdDEL.Caption = "&Hũy" cmdDEL.Enabled = True cmdEDIT.Enabled = True cmdADD.Enabled = False cmdCANDOI.Enabled = False mSO_CT = "" Call EmptyItem Call LockItem(False)

txtNGAY_CT.Value = Format(Date, "dd/mmm/yyyy") txtSO_CT.SetFocus

cmdPREV.Enabled = False cmdNEXT.Enabled = False cmdfirst.Enabled = False

cmdlast.Enabled = False comMAKHO.Enabled = False cmdIN.Enabled = False cmdADD_VT.Enabled = False cmdEDIT_VT.Enabled = False cmdDEL_VT.Enabled = False End Sub

Private Sub cmdADD_VT_Click() frmRUOT_PN.State = "ADD" frmRUOT_PN.Show 1

End Sub

Private Sub cmdCANDOI_Click()

If MsgBox("Bạn thực sự muốn cân đối vật t trong kho!", vbOKCancel, "Chú ý !") = vbOK Then

Cn.Execute "DELETE * FROM CDTEMP" Cn.Execute "delete * from CDTEMP2" Cn.Execute "delete * from TON_KHO" Cn.Execute "INSERT INTO

CDTEMP(MAKHO,MA_VT,CL,SL_DAU,DG) SELECT MAKHO,MA_VT,CL,SL,DG FROM TON_DAU " Cn.Execute "INSERT INTO

CDTEMP(MAKHO,MA_VT,CL,SL_NHAP,DG) SELECT MAKHO,MA_VT,CL,SL, DG from viewPSNHAP'"

Cn.Execute "INSERT INTO

CDTEMP(MAKHO,MA_VT,CL,SL_XUAT,DG) SELECT MAKHO,MA_VT,CL,SL, DG from viewPSXUAT'"

Cn.Execute "INSERT INTO

CDTEMP2(MAKHO,MA_VT,CL,SL_DAU,SL_NHAP,SL_XUAT,DG) SELECT * FROM viewTONGHOP"

Cn.Execute "INSERT INTO TON_KHO(MAKHO,MA_VT,CL,SL,DG) SELECT * FROM viewTONKHO"

cmdCANDOI.Enabled = False End If

End Sub

Private Sub cmdDEL_Click() If State = "" Then

If MsgBox("Thực sự muốn xóa phiếu nhập này !", vbOKCancel, "Chú ý !") = vbOK Then

Cn.Execute "DELETE FROM CTVT WHERE STT_REC=" & Str(rs!Stt_Rec)

Cn.Execute "DELETE FROM CTCHUNG WHERE STT_REC=" & Str(rs!Stt_Rec)

rs.Find "MAKHO='" & Trim(comMAKHO.ColText) & "'" cmdEDIT.Caption = "&Sửa phiếu"

cmdDEL.Caption = "&Xóaphiếu" cmdADD.Enabled = True Call LockItem(True) If rs.EOF Then Call EmptyItem cmdDEL.Enabled = False cmdEDIT.Enabled = False cmdIN.Enabled = False cmdADD_VT.Enabled = False cmdDEL_VT.Enabled = False cmdEDIT_VT.Enabled = False Else Call MovePhieu cmdDEL.Enabled = True cmdEDIT.Enabled = True cmdIN.Enabled = True End If End If Else State = ""

cmdEDIT.Caption = "&Sửa phiếu" cmdDEL.Caption = "&Xóaphiếu" cmdADD.Enabled = True

Call LockItem(True) cmdADD.SetFocus

If rs.BOF And rs.EOF Then cmdDEL.Enabled = False cmdEDIT.Enabled = False cmdIN.Enabled = False cmdADD_VT.Enabled = False cmdDEL_VT.Enabled = False cmdEDIT_VT.Enabled = False Call EmptyItem Else cmdIN.Enabled = True Call MovePhieu End If cmdPREV.Enabled = True cmdNEXT.Enabled = True cmdfirst.Enabled = True cmdlast.Enabled = True comMAKHO.Enabled = True End If

cmdCANDOI.Enabled = True End Sub

Private Sub cmdDEL_VT_Click()

If MsgBox("Thực sự muốn xóa khoản hàng này !", vbOKCancel, "Chú ý !") = vbOK Then

Cn.Execute "DELETE FROM CTVT WHERE STT_REC=" &

Str(mSTT_REC) & " AND STT_KHOAN = " & Grid.TextMatrix(Grid.Row, 0)

Call RuotPhieu(rs!Stt_Rec) End If

End Sub

Private Sub cmdEDIT_Click() Dim Ten_ND

Dim Sql As String Dim mDate As String If State = "" Then State = "EDIT" cmdEDIT.Caption = "&Ghi" cmdDEL.Caption = "&Hũy" cmdDEL.Enabled = True cmdEDIT.Enabled = True cmdADD.Enabled = False Call LockItem(False) mSO_CT = Trim(txtSO_CT.Text) txtSO_CT.Enabled = False cmdPREV.Enabled = False cmdNEXT.Enabled = False cmdfirst.Enabled = False cmdlast.Enabled = False comMAKHO.Enabled = False cmdIN.Enabled = False cmdADD_VT.Enabled = False cmdEDIT_VT.Enabled = False cmdDEL_VT.Enabled = False Else

If State = "ADD" Then

If Ktra_SoCT(Trim(txtSO_CT.Text), "PN") = True Then txtSO_CT.SetFocus

MsgBox "Trùng số chứng từ !", vbCritical, "Chú ý !" Exit Sub

End If

If txtSO_CT = "" Then

txtSO_CT.SetFocus Exit Sub

End If End If

If txtNGAY_HH.Value <= txtNGAY_CT.Value Then MsgBox " Ngày hết hạn nhập sai !", vbCritical, "Chú ý !" txtNGAY_HH.SetFocus

Exit Sub End If

If txtNGAY_HH.ValueIsNull Then

MsgBox "Ngày hết hạn không đợc để trống !", vbCritical, "Chú ý !" txtNGAY_HH.SetFocus

Exit Sub End If

If IsDate(txtNGAY_CT.Value) = False Then

MsgBox "Ngày chứng từ nhập sai !", vbCritical, "Chú ý !" txtNGAY_CT.SetFocus

Exit Sub End If

If comMA_TCN.ListIndex = -1 Then

MsgBox "Cha nhập tính chất nhập !", vbCritical, "Chú ý !" comMA_TCN.SetFocus

Exit Sub End If

If comMA_DVN.ListIndex = -1 Then

MsgBox "Cha nhập đơn vị giao hàng !", vbCritical, "Chú ý !" comMA_DVN.SetFocus

Exit Sub End If

If State = "ADD" Then rs.AddNew

End If

rs!MA_CT = "PN"

rs!So_CT = UCase(Trim(txtSO_CT.Text))

rs!NGAY_CT = IIf(IsNull(txtNGAY_CT.Value), Null, Format(txtNGAY_CT.Value, "dd/mm/yyyy"))

rs!NGUOI_NHAP = Trim(f_user)

rs!MaKHO = Trim(comMAKHO.ColText) rs!MA_DVN = Trim(comMA_DVN.ColText) rs!MA_TCN = Trim(comMA_TCN.ColText)

rs!NGAY_HH = IIf(IsNull(txtNGAY_HH.Value), Null, Format(txtNGAY_HH.Value, "dd/mm/yyyy"))

rs.UpdateBatch adAffectAllChapters cmdEDIT.Caption = "&Sửa phiếu" cmdDEL.Caption = "&Xóa phiếu"

cmdDEL.Enabled = True cmdEDIT.Enabled = True cmdADD.Enabled = True cmdIN.Enabled = True Call LockItem(True) rs.Requery cmdADD.SetFocus If State = "ADD" Then rs.MoveLast Call MovePhieu frmRUOT_PN.State = "ADD" frmRUOT_PN.Show 1 Else Call MovePhieu End If State = "" cmdPREV.Enabled = True cmdNEXT.Enabled = True cmdfirst.Enabled = True cmdlast.Enabled = True comMAKHO.Enabled = True cmdIN.Enabled = True End If cmdCANDOI.Enabled = True End Sub

Private Sub cmdEDIT_VT_Click() frmRUOT_PN.State = "EDIT" frmRUOT_PN.Show 1

End Sub

Private Sub cmdEXIT_Click() Unload Me

End Sub

Private Sub cmdfirst_Click() If Not rs.EOF Then

rs.MoveFirst End If

If Not rs.EOF Then Call MovePhieu Else

If rs.BOF Then Exit Sub rs.MoveLast

Call MovePhieu End If

End Sub

reportPN.Show 1 End Sub

Private Sub cmdlast_Click() If Not rs.EOF Then

rs.MoveLast End If

If Not rs.EOF Then Call MovePhieu Else

If rs.BOF Then Exit Sub rs.MoveFirst

Call MovePhieu End If

End Sub

Private Sub cmdNEXT_Click() If Not rs.EOF Then

rs.MoveNext End If

If Not rs.EOF Then Call MovePhieu Else

If rs.BOF Then Exit Sub rs.MoveLast

Call MovePhieu End If

End Sub

Private Sub cmdPREV_Click() If Not rs.BOF Then

rs.MovePrevious End If

If Not rs.BOF Then Call MovePhieu End If

End Sub

Private Sub comMA_DVN_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then

comMA_TCN.SetFocus End If

End Sub

Private Sub comMA_DVN_LostFocus() On Error Resume Next

If comMA_DVN.ListIndex = -1 Then comMA_DVN.Text = ""

End If End Sub

Private Sub comMA_TCN_LostFocus() If comMA_TCN.ListIndex = -1 Then comMA_TCN.Text = ""

End If End Sub

Private Sub comMAKHO_Click()

Call DuyetPhieu(Trim(comMAKHO.ColText)) End Sub

Private Sub Form_Load()

Set rs = New ADODB.Recordset Grid.Rows = 1

Call LoadDM

Call LockItem(True) End Sub

Private Sub Form_Unload(Cancel As Integer) If State <> "" Then Cancel = 1 Else If rs.State = 1 Then rs.Close End If Set rs = Nothing End If End Sub

Private Sub Grid_DblClick() If Grid.Rows > 1 Then

frmRUOT_PN.State = "EDIT" frmRUOT_PN.Show 1

End If End Sub

Private Sub Grid_KeyDown(KeyCode As Integer, Shift As Integer) If Grid.Rows > 1 And KeyCode = 13 Then

frmRUOT_PN.State = "EDIT" frmRUOT_PN.Show 1

End If End Sub

Private Sub LoadDM()

Dim mRs As ADODB.Recordset Set mRs = New ADODB.Recordset

mRs.Open "SELECT * FROM DM_TCN ORDER BY MA_TCN", Cn, adOpenDynamic, adLockReadOnly

Do While Not mRs.EOF

comMA_TCN.AddItem Trim(mRs!MA_TCN) & vbTab & Trim(mRs! TEN_TCN)

Loop mRs.Close

mRs.Open "SELECT * FROM DM_DVN ORDER BY MA_DVN", Cn, adOpenDynamic, adLockReadOnly

Do While Not mRs.EOF

comMA_DVN.AddItem Trim(mRs!MA_DVN) & vbTab & Trim(mRs! TEN_DVN)

mRs.MoveNext Loop

mRs.Close

mRs.Open "SELECT * FROM DM_KHO ORDER BY MAKHO", Cn, adOpenDynamic, adLockReadOnly

Do While Not mRs.EOF

comMAKHO.AddItem Trim(mRs!MaKHO) & vbTab & Trim(mRs! TENKHO) mRs.MoveNext Loop If comMAKHO.ListCount > 0 Then comMAKHO.ListIndex = 0 Else Call EmptyItem cmdDEL.Enabled = False cmdEDIT.Enabled = False cmdIN.Enabled = False cmdADD_VT.Enabled = False cmdDEL_VT.Enabled = False cmdEDIT_VT.Enabled = False End If mRs.Close Set mRs = Nothing End Sub

Private Sub LockItem(Dk As Boolean) txtNGAY_CT.ReadOnly = Dk txtNGAY_HH.ReadOnly = Dk txtSO_CT.Locked = Dk comMA_DVN.Enabled = Not Dk comMA_TCN.Enabled = Not Dk End Sub

Private Sub EmptyItem() txtNGAY_CT.Text = "" txtNGAY_HH.Text = "" txtSO_CT.Text = "" comMA_DVN.ListIndex = -1 comMA_TCN.ListIndex = -1 Grid.Rows = 1

labTONGTIEN.Caption = "" End Sub

Private Sub DuyetPhieu(MaKHO As String) Dim Sql As String

DoEvents

If rs.State = 1 Then rs.Close

rs.Open "SELECT * FROM viewCTNHAP WHERE MA_CT='PN' AND MAKHO='" & MaKHO & "'", Cn, adOpenDynamic,

adLockBatchOptimistic, adAsyncExecute

While (rs.State And adStateExecuting) = adStateExecuting Wend

If Not rs.EOF Then rs.MoveFirst mSTT_REC = rs!Stt_Rec Call MovePhieu cmdDEL.Enabled = True cmdEDIT.Enabled = True cmdIN.Enabled = True Else Call EmptyItem cmdDEL.Enabled = False cmdEDIT.Enabled = False cmdIN.Enabled = False cmdADD_VT.Enabled = False cmdDEL_VT.Enabled = False cmdEDIT_VT.Enabled = False End If End Sub

Public Sub RuotPhieu(Stt_Rec As Integer) Dim mRs As ADODB.Recordset

Dim mTONG_TIEN As Double Set mRs = New ADODB.Recordset

mRs.Open "SELECT STT_KHOAN,CL,SL,DG,DM_VT.MA_VT, DM_VT.TEN_VT,DM_VT.DVT FROM CTVT INNER JOIN DM_VT ON CTVT.MA_VT=DM_VT.MA_VT WHERE STT_REC=" & Str(Stt_Rec), Cn, adOpenDynamic, adLockBatchOptimistic

Grid.Rows = 1 mTONG_TIEN = 0 Do While Not mRs.EOF

Grid.AddItem mRs!STT_KHOAN & vbTab & Trim(mRs!MA_VT) & vbTab & Trim(mRs!TEN_VT) & vbTab & Trim(mRs!DVT) & vbTab & Trim(mRs!CL) & vbTab & mRs!SL & vbTab & mRs!DG & vbTab & IIf(IsNull(mRs!SL), 0, mRs!SL) * IIf(IsNull(mRs!DG), 0, mRs!DG)

mTONG_TIEN = mTONG_TIEN + IIf(IsNull(mRs!SL), 0, mRs!SL) * IIf(IsNull(mRs!DG), 0, mRs!DG)

Grid.Cell(flexcpForeColor, Grid.Rows - 1, 0) = &H80& Grid.Cell(flexcpFontBold, Grid.Rows - 1, 0) = True Grid.Cell(flexcpFontBold, Grid.Rows - 1, 1) = True mRs.MoveNext Loop labTONGTIEN.Caption = Str(mTONG_TIEN) cmdADD_VT.Enabled = True If Grid.Rows = 1 Then cmdEDIT_VT.Enabled = False cmdDEL_VT.Enabled = False Else cmdEDIT_VT.Enabled = True cmdDEL_VT.Enabled = True End If End Sub

Public Sub MovePhieu() If rs.BOF Or rs.EOF Then Exit Sub

End If

txtSO_CT.Text = IIf(IsNull(rs!So_CT), "", Trim(rs!So_CT))

txtNGAY_CT.Value = Format(IIf(IsNull(rs!NGAY_CT), "", Trim(rs! NGAY_CT)), "dd/mm/yyyy")

txtNGAY_HH.Value = Format(IIf(IsNull(rs!NGAY_HH), "", Trim(rs! NGAY_HH)), "dd/mm/yyyy")

SetCmbValue comMA_DVN, IIf(IsNull(rs!MA_DVN), "", Trim(rs! MA_DVN))

SetCmbValue comMA_TCN, IIf(IsNull(rs!MA_TCN), "", Trim(rs! MA_TCN))

mSO_CT = IIf(IsNull(rs!So_CT), "", Trim(rs!So_CT)) mSTT_REC = rs!Stt_Rec

Call RuotPhieu(rs!Stt_Rec) End Sub

Private Sub txtNGAY_CT_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then

If comMA_DVN.Enabled = True Then comMA_DVN.SetFocus Else txtNGAY_HH.SetFocus End If End If End Sub

Private Sub txtNGAY_HH_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then

End If End Sub

Private Sub txtSO_CT_Change()

labSO_CT.Caption = Trim(txtSO_CT.Text) End Sub

Private Sub txtSO_CT_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 13 Then

txtNGAY_CT.SetFocus End If

End Sub

Mã nguồn trong form Viết phiếu xuất

Option Explicit Dim State As String

Public mSTT_REC As Integer Dim mSO_CT As String Private Sub cmdADD_Click() State = "ADD" cmdEDIT.Caption = "&Ghi" cmdDEL.Caption = "&Hũy" cmdDEL.Enabled = True cmdEDIT.Enabled = True cmdADD.Enabled = False mSO_CT = "" Call EmptyItem Call LockItem(False)

txtNGAY_CT.Value = Format(Date, "dd/mmm/yyyy") txtSO_CT.SetFocus 'txtSO_CT.SetFocus cmdPREV.Enabled = False cmdNEXT.Enabled = False cmdfirst.Enabled = False cmdlast.Enabled = False comMAKHO.Enabled = False cmdIN.Enabled = False cmdCANDOI.Enabled = False cmdADD_VT.Enabled = False cmdEDIT_VT.Enabled = False cmdDEL_VT.Enabled = False End Sub

frmRuot_PX.State = "ADD" frmRuot_PX.Show 1

End Sub

Private Sub cmdCANDOI_Click()

If MsgBox("Bạn thực sự muốn cân đối vật t trong kho!", vbOKCancel, "Chú ý !") = vbOK Then

Cn.Execute "DELETE * FROM CDTEMP" Cn.Execute "delete * from CDTEMP2" Cn.Execute "delete * from TON_KHO" Cn.Execute "INSERT INTO

CDTEMP(MAKHO,MA_VT,CL,SL_DAU,DG) SELECT MAKHO,MA_VT,CL,SL,DG FROM TON_DAU "

Cn.Execute "INSERT INTO

CDTEMP(MAKHO,MA_VT,CL,SL_NHAP,DG) SELECT MAKHO,MA_VT,CL,SL, DG from viewPSNHAP'"

Cn.Execute "INSERT INTO

CDTEMP(MAKHO,MA_VT,CL,SL_XUAT,DG) SELECT MAKHO,MA_VT,CL,SL, DG from viewPSXUAT'"

Cn.Execute "INSERT INTO

CDTEMP2(MAKHO,MA_VT,CL,SL_DAU,SL_NHAP,SL_XUAT,DG) SELECT * FROM viewTONGHOP"


Một phần của tài liệu PHÂN TÍCH VÀ THIẾT KẾ PHẦN MỀM QUẢN LÝ HÀNG HÓA VẬT TƯ (Trang 64 -108 )

×