Một số thuật toỏn cơ bản trong chương trỡnh

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 hoá vật tư lưu kho (Trang 78 - 110)

c. Sơ đồ quan hệ thực thể

3.2.6.Một số thuật toỏn cơ bản trong chương trỡnh

THUẬT TOÁN ĐĂNG NHẬP VÀO HỆ THỐNG

THUẬT TOÁN CẬP NHẬT DỮ LIỆU

B Đ MỞ FORM ĐĂNG NHẬP KIỂM TRA TấN NSD VÀ MẬT KHẨU K T ĐÚNG Sai NHẬP TấN VÀ MẬT KHẨU VÀO CHƯƠNG TRèNH THễNG BÁO NHẬP SAI Cể NHẬP LẠI KHễNG Sai ĐÚNG

THUẬT TOÁN LấN BÁO CÁO ĐÚNG sai Sai ĐÚNG sai ĐÚ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 ?

ĐÚNG CHỌN BÁO CÁO NHẬP ĐIỀU KIỆN THỰC HIỆN TèM KIẾM Cể THẤY DỮ LIỆU? IN BÁO CÁO sai KT THễNG BÁO KHễNG Cể DỮ LIỆU

KẾT LUẬN

Trong đồ ỏn tốt nghiệp này em đó giới thiệu cỏc thụng tin tổng quan về cơ sở thực tập, trỡnh bày một cỏch khỏi quỏt cỏc khỏi niệm cơ bản về hệ thống thụng tin, cơ sở dữ liệu, sự hiệu quả trong việc ứng dụng cụng nghệ thụng tin trong việc quản lý, về quỏ trỡnh phõn tớch và thiết kế hệ thống thụng tin. Đề tài trỡnh bày một cỏch chi tiết toàn bộ quỏ trỡnh phõn tớch và thiết kế: “Chương

trỡnh quản lý hàng hoỏ vật tư lưu kho".

Đề tài đó thu được một số kết quả tốt như chương trỡnh cú tớnh bảo mật, cú khả năng sao lưu và phục hồi dữ liệu, nhập tồn kho, viết được cỏc phiếu xuất, phiếu nhập, xem tồn kho, xem được thẻ kho, tổng hợp được hàng xuất và hàng nhập của đơn vị.

Do thời gian hạn chế của một đề tài tốt nghiệp và hạn chế về kiến thức nờn hệ thống cũn rất nhiều thiếu xút, chưa thể đỏp ứng được tất cả cỏc nhu cầu của người sử dụng.Vỡ vậy, em hy vọng trong thời gian tới sẽ cú điều kiện để nghiờn cứu và thực hiện tốt hơn chương trỡnh này.

Phương hướng phỏt triển: Đề tài cú thể phỏt triển thờm chức năng như cho phộp quản lý vốn ngõn sỏch, cho phộp xuất và nhập theo cỏc giỏ khỏc nhau, quản lý tài chớnh, hoỏ đơn, hợp đồng,…

Để hoàn thành được luận văn tốt nghiệp này, một lần nữa em xin gửi lời cảm ơn tới thầy giỏo Nguyễn Bỏ Tiến đó hướng dẫn, chỉ bảo tận tỡnh cho em trong quỏ trỡnh thực hiện đồ ỏn.

Em xin chõn thành cảm ơn tới cỏc thầy cụ trong khoa Cụng Nghệ Thụng Tin - ĐHDL Phương Đụng đó giảng dạy em trong 5 năm học đại học giỳp em cú được những kiến thức khoa học, những tư duy cho cụng việc sau này.

Em xin chõn thành cảm ơn!

Hà Nội thỏng 4 năm 2006 Sinh viờn

PHỤ LỤC 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_Field Name

db_Field Name = App.Path & "\db1.mdb"

Str = "provider=Microsoft.jet.OLEDB.4.0;data source=" & db_Field Name & ""

DE_HH.CN_HH.ConnectionString =

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

DE_HH.CN_HH.Open Cn.Open Str

End Sub

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 (adsbygoogle = window.adsbygoogle || []).push({});

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 sao lưu dữ liệu

Private Sub Drive1_Change() On Error GoTo loi

Dir1.Path = Drive1.Drive exit_loi:

Exit Sub loi:

MsgBox "Lỗi " & Err.Number & ": " & Err.Description, vbCritical, "Cảnh bỏo" Drive1.Drive = Left(App.Path, 2)

Me.Dir1.Path = App.Path Resume exit_loi

End Sub

Private Sub SSCommand1_Click() 'On Error Resume Next

On Error GoTo loi

If MsgBox("Bạn cú thực sự muốn sao lưu khụng ?", vbQuestion + vbYesNo, "Thụng bỏo") = vbYes Then

Screen.MousePointer = vbHourglass Else Exit Sub End If 'MsgBox Dir1.Path

If rs Is Nothing Then Else ' rs.Close Set rs = Nothing End If DE_HH.CN_HH.Close Cn.Close Set Cn = Nothing Dim ngay As String

ngay = "QuanLyHangHoa" ngay = ngay & ".MDB" 'MsgBox ngay & ".mdb"

' DBEngine.CompactDatabase App.Path & "\db1.mdb", Dir1.Path & "\" & ngay

Dim sSource As String

sSource = App.Path & "\db1.mdb" Dim sDes As String

sDes = Dir1.Path & "\" & ngay 'MsgBox sSource

'MsgBox sDes

Dim fso As New FileSystemObject

fso.CopyFile App.Path & "\db1.mdb", Dir1.Path & "\" & ngay connect_database

MsgBox "Đó sao lưu thành cụng !!!", vbInformation, "Thụng bỏo" Screen.MousePointer = vbNormal

exit_loi:

Exit Sub loi:

MsgBox "Lỗi " & Err.Number & ":" & Err.Description, vbCritical, "Cảnh bỏo" connect_database

Screen.MousePointer = vbNormal Resume exit_loi (adsbygoogle = window.adsbygoogle || []).push({});

End Sub

Private Sub SSCommand2_Click() Unload Me

Private Sub cboMaVatTu_Click() Dim mRs As ADODB.Recordset Set mRs = New ADODB.Recordset Me.combochatluong.Clear

Me.comdongia.Clear

mRs.Open "SELECT ma_cl,ten_cl FROM chatluong where makho ='" & Trim(frmTheKho.commakho.ColText) & "' AND MA_VT ='" & Trim(frmTheKho.cboMaVatTu.ColText) & "' group by ma_cl,ten_cl", Cn, adOpenDynamic, adLockReadOnly

'Me.combochatluong.Clear Do While Not mRs.EOF

combochatluong.AddItem Trim(mRs!ma_cl) & vbTab & Trim(mRs! TEN_cl) mRs.MoveNext Loop mRs.Close Set mRs = Nothing End Sub

Private Sub cmdcancel_Click() Unload Me

End Sub

Private Sub cmdIn_Click()

If Len(commakho.Text) = 0 Then

MsgBox "Chưa chọn mó kho !", vbCritical, "Chỳ ý !" commakho.SetFocus

Exit Sub End If

If Len(cboMaVatTu.Text) = 0 Then

MsgBox "Chưa chọn vật tư!", vbCritical, "Chỳ ý !" cboMaVatTu.SetFocus

Exit Sub End If

If Len(combochatluong.Text) = 0 Then

MsgBox "Chưa chọn chất lượng!", vbCritical, "Chỳ ý !" combochatluong.SetFocus

Exit Sub End If

If Len(comdongia.Text) = 0 Then

MsgBox "Chưa chọn đơn giỏ!", vbCritical, "Chỳ ý !" comdongia.SetFocus

Exit Sub End If

TheKho frmTheKho.cboMaVatTu.ColText,

frmTheKho.combochatluong.ColText, Me.comdongia.Text '" & Trim(frmTON_DAU.comMAKHO.ColText) & "' Dim rpt As New arTheKho

Set rpt.DataControl1.Connection = Cn

rpt.DataControl1.Source = "Select MaVT,ChatLuong,NgayNhap,NgayXuat,DonViXuat,DonViNhap,LuongXuat,L uongNhap,LuongTon from TheKho where mavt ='" & Trim(frmTheKho.cboMaVatTu.ColText) & "' and ChatLuong =" & Trim(frmTheKho.combochatluong.ColText) & ""

' rpt.MaVT.DataField = "MaVT" Dim rs As New ADODB.Recordset

rs.Open "Select MaVT,DonViTinh,ChatLuong from Thekho where MaVT ='" & Trim(frmTheKho.cboMaVatTu.ColText) & "'", Cn, adOpenStatic, adLockReadOnly If rs.RecordCount > 0 Then rpt.txttenkho.Text = frmTheKho.commakho.Text rpt.MaVT.Caption = frmTheKho.cboMaVatTu.ColText rpt.DonViTinh.Caption = rs("DonViTinh") rpt.ChatLuong.Caption = IIf(frmTheKho.combochatluong.ColText = "1", "Tốt", IIf(Me.combochatluong.ColText = "2", "Trung bỡnh", "Kộm"))

' rpt.ChatLuong.Caption = IIf(Me.txtChatLuong.Text = "1", "Tot", IIf(Me.txtChatLuong.Text = "2", "Tb", "Kem"))

Set rs = New ADODB.Recordset (adsbygoogle = window.adsbygoogle || []).push({});

rs.Open "Select ten_vt from dm_vt where ma_vt ='" & Trim(frmTheKho.cboMaVatTu.ColText) & "'", Cn, adOpenStatic, adLockReadOnly

If rs.RecordCount > 0 Then rpt.TenVT.Caption = rs(0) Set rs = New ADODB.Recordset

rs.Open "Select sl from Ton_dau where Ma_Vt ='" & Trim(frmTheKho.cboMaVatTu.ColText) & "' and dg =" & Trim(frmTheKho.comdongia.Text) & "", Cn, adOpenStatic, adLockReadOnly If rs.RecordCount > 0 Then

Else

rpt.TonDau.Caption = 0 End If

Set rs = New ADODB.Recordset

rs.Open "Select LuongTon from thekho where MaVt ='" & Trim(frmTheKho.cboMaVatTu.ColText) & "'", Cn, adOpenStatic, adLockReadOnly

If rs.RecordCount > 0 Then rs.MoveLast: rpt.TonCuoi.Caption = rs(0) rpt.DonGia.Caption = Me.comdongia.Text End If rpt.NgayNhap.DataField = "NgayNhap" rpt.NgayXuat.DataField = "NgayXuat" rpt.DVN.DataField = "DonViNhap" rpt.DVX.DataField = "DonViXuat" rpt.LuongNhap.DataField = "LuongNhap" rpt.LuongXuat.DataField = "LuongXuat" rpt.LuongTon.DataField = "LuongTon"

Dim fPreview As New frmPreview fPreview.RunReport rpt fPreview.Show 1 Set rpt = Nothing Unload fPreview End Sub

Private Sub cmdok_Click()

If Len(commakho.Text) = 0 Then

MsgBox "Chưa chọn mó kho !", vbCritical, "Chỳ ý !" commakho.SetFocus

Exit Sub End If

If Len(cboMaVatTu.Text) = 0 Then

MsgBox "Chưa chọn vật tư!", vbCritical, "Chỳ ý !" cboMaVatTu.SetFocus

Exit Sub End If

If Len(combochatluong.Text) = 0 Then

MsgBox "Chưa chọn chất lượng!", vbCritical, "Chỳ ý !" combochatluong.SetFocus

Exit Sub End If

If Len(comdongia.Text) = 0 Then

MsgBox "Chưa chọn đơn giỏ!", vbCritical, "Chỳ ý !" comdongia.SetFocus Exit Sub End If TheKho frmTheKho.cboMaVatTu.ColText, frmTheKho.combochatluong.ColText, Me.comdongia.Text frmXemTheKho.Show 1 End Sub

Private Sub combochatluong_Click() 'add don gia

'Me.comdongia.Clear

Dim mRs As New ADODB.Recordset Dim s As String

s = "Select DG from viewThe_khott where ma_vt ='" & Me.cboMaVatTu.ColText & "' and cl='" & Me.combochatluong.ColText & "' and Makho ='" & Me.commakho.ColText & "' group by dg"

Set mRs = New ADODB.Recordset

mRs.Open s, Cn, adOpenStatic, adLockReadOnly If mRs.RecordCount > 0 Then

mRs.MoveFirst ' Me.comdongia.Clear

Me.comdongia.Text = mRs(0) ' Me.combochatluong.Clear Do While Not mRs.EOF

Me.comdongia.AddItem mRs(0) mRs.MoveNext Loop End If mRs.Close End Sub (adsbygoogle = window.adsbygoogle || []).push({});

Private Sub comMAKHO_Click() 'load danh muc vat tu theo kho Dim rs As ADODB.Recordset Set rs = New ADODB.Recordset Me.cboMaVatTu.Clear

Me.combochatluong.Clear Me.comdongia.Clear

rs.Open "Select ma_vt,ten_vt,viewthe_khott.makho from viewthe_khott where makho ='" & Trim(frmTheKho.commakho.ColText) & "' group by makho,ma_vt,ten_vt", Cn, adOpenStatic, adLockOptimistic

If rs.RecordCount > 0 Then rs.MoveFirst

'Me.cboMaVatTu.Clear Do While Not rs.EOF

Me.cboMaVatTu.AddItem rs(0) & vbTab & rs(1) rs.MoveNext Loop End If rs.Close Set rs = Nothing

' LOAD DON GIA End Sub

Private Sub Form_Load() ' TheKho

Dim rs As New ADODB.Recordset 'load danh muc kho

Set rs = New ADODB.Recordset

rs.Open "Select MaKho,TenKHo from viewThe_KhoTT group by MaKho,TenKho order by MaKho,TenKho", Cn, adOpenStatic, adLockReadOnly

If rs.RecordCount > 0 Then rs.MoveFirst

Do While Not rs.EOF

Me.commakho.AddItem rs(0) & vbTab & rs(1) rs.MoveNext Loop End If rs.Close Set rs = Nothing 'load chatluong

' Set mRs = New ADODB.Recordset '

' mRs.Open "SELECT ma_cl,ten_cl FROM chatluong where makho ='" & Trim(frmTheKho.commakho.ColText) & "' AND MA_VT ='" &

Trim(frmTheKho.cboMaVatTu.ColText) & "' ", Cn, adOpenDynamic, adLockReadOnly

' Do While Not mRs.EOF

' combochatluong.AddItem Trim(mRs!ma_cl) & vbTab & Trim(mRs! TEN_cl)

' '& vbTab & Trim(mRs!TEN_TCX) ' mRs.MoveNext ' Loop ' mRs.Close ' Set mRs = Nothing ' End Sub

Mó nguồn trong Form phục hồi dữ liệu

Private Sub cmdcancel_Click() Unload Me

End Sub

Private Sub cmdok_Click() On Error GoTo loi

MsgBox "Bạn nờn sao lưu dữ liệu trước khi khụi phục !!!", vbCritical, "Cảnh bỏo"

If MsgBox("Dữ liệu sẽ bị ghi đố. Bạn cú chắc chắn khụi phục hay khụng ?", vbQuestion + vbYesNo, "Khụi phục dữ liệu") = vbYes Then

'huy ket noi toi CSDL

Screen.MousePointer = vbHourglass DE_HH.CN_HH.Close

Cn.Close

'Kill App.Path & "\db1.mdb" 'xoa file db1.mdb Dim fso As New FileSystemObject (adsbygoogle = window.adsbygoogle || []).push({});

Dim s As String s = Dir1.Path & "\" s = s & List1.Text

fso.CopyFile s, App.Path & "\db1.mdb", True

MsgBox "Đó khụi phục thành cụng !!!", vbInformation, "Thụng bỏo" Screen.MousePointer = vbNormal

connect_database 'khoi tao ket noi toi CSDL End If

exit_loi: Exit Sub loi:

MsgBox "Lỗi " & Err.Number & ":" & Err.Description, vbCritical, "Cảnh bỏo"

connect_database

Screen.MousePointer = vbNormal End Sub

Private Sub Dir1_Change() 'File1.Path = Dir1.Path On Error GoTo loi

Dim fso As New FileSystemObject Dim fil As file

Dim fol As Folder

Set fol = fso.GetFolder(Dir1.Path) List1.Clear

For Each fil In fol.Files

If UCase(Right(fil.Field Name, 4)) = ".MDB" Then List1.AddItem fil.Field Name

End If Next exit_loi: Exit Sub loi:

MsgBox "Lỗi " & Err.Number & ":" & Err.Description, vbCritical, "Cảnh bỏo"

connect_database End Sub

Private Sub Drive1_Change() On Error GoTo loi

Dir1.Path = Drive1.Drive exit_loi:

Exit Sub loi:

MsgBox "Lỗi " & Err.Number & ": " & Err.Description, vbCritical, "Cảnh bỏo" Drive1.Drive = Left(App.Path, 2) Me.Dir1.Path = App.Path Resume exit_loi End Sub

Mó nguồn trong Form Viết phiếu nhập.

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" (adsbygoogle = window.adsbygoogle || []).push({});

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

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.Requery

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 (adsbygoogle = window.adsbygoogle || []).push({});

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

MsgBox "Chưa nhập số chứng từ !", vbCritical, "Chỳ ý !" 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 "Chưa nhập tớnh chất nhập !", vbCritical, "Chỳ ý !" comMA_TCN.SetFocus

Exit Sub End If

If comMA_DVN.ListIndex = -1 Then

MsgBox "Chưa 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 (adsbygoogle = window.adsbygoogle || []).push({});

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

Private Sub cmdIN_Click() 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

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 (adsbygoogle = window.adsbygoogle || []).push({});

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

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)

mRs.MoveNext 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.Open "SELECT * FROM DM_KHO ORDER BY MAKHO", Cn, adOpenDynamic, adLockReadOnly (adsbygoogle = window.adsbygoogle || []).push({});

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

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

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 hoá vật tư lưu kho (Trang 78 - 110)