Submitted To:
Submitted By:
Index S No. Topics 1 Acknowledgment 2 Tools/ Platform/ Language used &
Page 3 4
Hardware And Software 3 4 5 6
Requirements Project coding Forms Reports Bibliography
5 19 27
Index S No. Topics 1 Acknowledgment 2 Tools/ Platform/ Language used &
Page 3 4
Hardware And Software 3 4 5 6
Requirements Project coding Forms Reports Bibliography
5 19 27
Acknowledgement We wish to take this opportunity to express our deepest and immense thanks to all of the people who contributed to this project and helped us at every step and provided us with their valuable guidance. We want to place to record our sincere gratitude to our project guide Miss Parmjit Kaur, who has made us abstain from being being hackneyed hackneyed by showing showing us a new way and whole whole new dimensions in the analysis of our project “Welcome to Punjab – Pivot of rich culture and heritage”. We are much obliged to our Centre head Smt. Simran Bagga Bagga for liberally liberally offering offering the the facility facility to complete complete our project. We would like to take this chance to express our heartful gratitude to Mr. Hardeep Singhwhose initiative and selfness helped in accomplishing this great task.
Tools/ Platforms/ Languages used & Hardware And Software Requirements Platform: Platform which is so popular now a days i.e. Microsoft Windows, is used to develop this project.
Tools: 1. Visual Basic 6.0 2. Microsoft Access XP 3. Microsoft Access
Hardware Requirements: 1. Minimum 32 MB RAM (64 MB Recommended) 2. Minimum 20 KB Free Space on HDD 3.Minimum 450 MHz Processor
Software Requirement: 1. Windows Operating System 98/2000/XP 2. Visual Basic 6.0 3. Microsoft Access
INTRODUCTION TO VISUAL BASIC
Visual basic is very powerful and popular front-end-programming tool. Its latest versions have excellent features for working with the interest. It is also almost completely customizable through its new extensibility model. Accordingly, it has been include into curriculum of the course module on Post Graduation Diploma in Computer Application. The aim is to train the student or any working professional to write simple application program to meet the requirements of his organization or business. This course material deals with visual basic in a very systematic manner. As we proceed further the various features involved in the programming of visual basic are discussed in detail. It guide the retrieving properties and in using the various controls in an efficient manner. Also new version (7.0) of visual basic is more compatible and customized through its new extensibility model. The most important part that leads to an approach for connecting Visual Basic to the backend is data objects such as ADO, RDO and DAO. The active x data object to use this technique of database connectivity. Using active x programming a student gets exposed to one of the best approach to ward database programming. Microsoft Visual Basic Environment is fully integrated and supports the fully development life cycle. Visual Basic fully phase of the windows software Development life cycle, i.e. design, development and deployment visual basic provides you with a complete set of tools to simply rapid application development (RAD). Visual Basic has evolved from the original BASIC language, which is very widely used language. This is graphical user interface (GUI) based languag e, supports to windows programming. Existing objects are dragged and dropped into places instead of writing numerous lines of code. Visual Basic is a number of Microsoft Visual Studio, which is fully integrated suit of Visual tools that all have the same look and feel.
THE PROJECT EXPLORER WINDOW The following section describes the different types of files and objects that you include in a project:-
Form Module
Form module (.frm file extension) can contain textual descriptions of the form and its controls, including their properties settings. They can also contain form –level declarations of constants, variables, and external procedures; event procedures; and general procedures. ♦
Class Module
Class Module(.cls file name extension) are similar to form modules, except that they have no visible user interface. You can use class modules to create your own object, including code for methods and properties. ♦
Standard Modules Standard modules (.bas file name extension) can contain public or modeled-level declaration of types, constants, variables, external procedures, and public procedures.
♦
Components In addition to file modules, several other types of components can be added to the project. •
ActiveX controls ActiveX controls (.ocr file name extension) are optional controls, which can be added to the toolbox and used on the forms. When you install Visual Basic, the control including with Visual Basic, the file included with Visual Basic are copied to a common directory (windows\system subdirectory under window 95/98). Additional activeX controls are available from a wide variety of sources. You can also create your controls using the professional or enterprises edition of Visual Basic.
STRUCTURE OF A VB PROJECT
The project file is simply a list of all the objects associated with the project, as well as information on the environment options you set. This information is updated every time you save the project. All of the files and objects can be shared by other project as well.
When you have completed all the files for a project, you can convert the project into an executable file (.exe): From the file menu, choose the Make project.exe command. Each time you save a project, visual basic updates the project file (.vbp). A project file contains the same list of files that appears in the project explorer.
Window, you can open an existing project file by double-clicking its icon, by choosing the open project command from the menu, or by dragging the file and dropping it on the explorer window. Project consists of ⇒
One project file that keeps track of all the components (.vbp)
⇒
One file for each form (.frm)
⇒
Optionally, one file for each class module (.cls).
⇒
Optionally, one file for each standard module (.bas)
Optionally, one or more files containing ActiveX controls (.ocx) As you create, add, or remove editable files from a project, Visual Basic reflects your changes in the project explorer window, which contains a current list of the files in the project.
Project Coding MDI Form
Private Declare Function InitCommonControls Lib "comctl32.dll" () As Long Private Sub MDIForm_Load() Me.Show Set CN = New ADODB.Connection CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\MasterFile.mdb;Persist Security Info=False;" If CN.State <> adStateOpen Then MsgBox "Could not establish a connection with the database" & vbNewLine & "The database should exist in ApplicationPath\MasterFile.mdb", vbExclamation, "Database not found!": Unload Me frmReturn.FineAmnt = CCur(GetSetting(App.Title, "Settings", "Fine Amount", "2")) frmReturn.MaxDays = CInt(GetSetting(App.Title, "Settings", "Max Days", "14"))
End Sub
Private Sub MDIForm_Unload(Cancel As Integer)
Dim Form As Form
For Each Form In Forms Unload Form Set Form = Nothing Next Form Set CN = Nothing
End Sub
Private Sub MDIForm_Initialize()
InitCommonControls End Sub
'--------------------------------------------------------------------'=======================
Menu Coding
========================== '== Provides connectivity to other parts of the program to the user == '---------------------------------------------------------------------
Private Sub mnuAbout_Click()
frmAbout.Show vbModal
End Sub
Private Sub mnuArrangeIcons_Click()
frmMain.Arrange vbArrangeIcons
End Sub
Private Sub mnuBookRec_Click()
With frmBooks .Show .SetFocus End With
End Sub
Private Sub mnuBookRep_Click()
Dim RS As New ADODB.RecordSet
RS.Open "SELECT * FROM tblBooks Order by [Book ID]", CN, adOpenStatic, adLockReadOnly Set drBookList.DataSource = RS drBookList.Show Set RS = Nothing
End Sub
Private Sub mnuCascade_Click()
frmMain.Arrange vbCascade
End Sub
Private Sub mnuIssue_Click()
frmIssue.Show vbModal
End Sub
Private Sub mnuMembers_Click()
With frmMembers .Show .SetFocus End With
End Sub
Private Sub mnuReport_Click()
Dim RS As New ADODB.RecordSet
RS.Open "SELECT * FROM tblMembers Order by [Student ID]", CN, adOpenStatic, adLockReadOnly Set drMembers.DataSource = RS drMembers.Show Set RS = Nothing
End Sub
Private Sub mnuReturn_Click()
frmReturn.Show vbModal
End Sub
Private Sub mnuSettings_Click()
frmSettings.Show vbModal
End Sub
Private Sub mnuTileHorizontal_Click()
frmMain.Arrange vbTileHorizontal
End Sub
Private Sub mnuTileVertical_Click()
frmMain.Arrange vbTileVertical
End Sub
Private Sub mnuExit_Click()
Unload Me
End Sub
Private Sub mnuUnreturnedBooks_Click()
Dim RS As New ADODB.RecordSet
RS.Open "SELECT tblTrans.[Book ID], tblTrans.[Student ID], tblBooks.Title, [First Name] & ' ' & [Middle Initial] & ' ' & [Last Name] AS Borrower, tblTrans. [Date Borrowed] FROM tblMembers INNER JOIN (tblBooks INNER JOIN tblTrans ON tblBooks.[Book ID] = tblTrans.[Book ID]) ON tblMembers.[Student ID] = tblTrans.[Student ID] Where (((tblTrans.Returned) = False)) ORDER BY tblTrans.[Book ID];", CN, adOpenStatic, adLockReadOnly Set drTransUn.DataSource = RS drTransUn.Show Set RS = Nothing
End Sub
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Index Case 1: mnuIssue_Click Case 2: mnuReturn_Click Case 4: mnuBookRec_Click Case 5: mnuMembers_Click Case 6: PopupMenu mnuReports, , Toolbar1.Buttons(6).Left, Toolbar1.Top + Toolbar1.Height Case 8: mnuSettings_Click Case 9: mnuAbout_Click End Select
End Sub
Add Student Form Option Explicit
Private RS As ADODB.RecordSet
Private Sub cmdOperations_Click(Index As Integer) 'Shows the Search/Sort/Filter form by creating a new instance and destroying it once done Dim obj As Form
If Index = 0 Then Set obj = frmSearch If Index = 1 Then Set obj = frmFilter If Index = 2 Then Set obj = frmSort
With obj Set .SourceRs = RS
.Show vbModal End With Set obj = Nothing
End Sub
Private Sub cmdReport_Click(Index As Integer) 'Creates dynamic reports If Index = 0 Then cmdRefresh_Click Set drBookList.DataSource = RS drMembers.Show
End Sub
Private Sub cmdRetrive_Click() 'Retrives a picture to be shown in the Photo box with the use of Photo Access User Control Dim tmpRS As New ADODB.RecordSet
With tmpRS .Open "SELECT [Picture] FROM tblMembers WHERE [Student ID]='" & txtDisp(0).Text & "'", CN, adOpenForwardOnly, adLockOptimistic If Len(RS!Picture) > 0 Then picBox.LoadPhoto RS!Picture Else Set picBox.Picture = LoadPicture() End If .Close End With Set tmpRS = Nothing
End Sub
Private Sub Form_Load() 'Loads a form and initializes all variables On Error GoTo hell Set RS = New ADODB.RecordSet RS.CursorLocation = adUseClient RS.Open "SELECT * FROM tblMembers", CN, adOpenDynamic, adLockOptimistic Set DataGrid1.DataSource = RS DisplayRecords With frmMain.ImgList32 cmdReport(0).Picture = .ListImages(6).Picture cmdReport(1).Picture = .ListImages(6).Picture End With
Exit Sub
hell: Handler Err Resume Next
End Sub
Private Sub Form_Resize() 'Resizes a form according to the screen size, resolution or form resize On Error Resume Next SSTab1.Height = Me.Height - 2500 SSTab1.Width = Me.Width - 400
Line1.X1 = SSTab1.Left Line1.X2 = SSTab1.Left + SSTab1.Width Line1.Y1 = SSTab1.Top + SSTab1.Height + 400 Line1.Y2 = Line1.Y1
DataGrid1.Width = SSTab1.Width - 280 DataGrid1.Height = SSTab1.Height - 580 Frame1.Height = DataGrid1.Height - 100 Frame1.Width = DataGrid1.Width - 200
lnBorder(0).X1 = Frame1.Left lnBorder(0).X2 = Frame1.Width - Frame1.Left - 180 lnBorder(0).Y1 = txtDisp(3).Height + txtDisp(3).Top + 180 lnBorder(0).Y2 = lnBorder(0).Y1
lnBorder(2).X1 = lnBorder(1).X1 lnBorder(2).X2 = lnBorder(1).X2 lnBorder(2).Y1 = txtDisp(6).Height + txtDisp(6).Top + 180 lnBorder(2).Y2 = lnBorder(2).Y1
LineMove Line2, Line1 LineMove lnBorder(1), lnBorder(0) LineMove lnBorder(3), lnBorder(2)
picBox.Left = txtDisp(0).Left + txtDisp(0).Width + 200 picBox.Top = txtDisp(0).Top picBox.Height = Frame1.Height - cmdRetrive.Height - Frame1.Top picBox.Width = Frame1.Width - picBox.Left - picBox.Width + txtDisp(0).Width
cmdRetrive.Left = picBox.Left + picBox.Width - cmdRetrive.Width
pic.Top = Line1.Y1 + 200 Label9.Top = pic.Top Label11.Top = Label9.Top + Label9.Height Label19.Left = picBox.Left Label19.Top = picBox.Top - Label19.Height Image1.Top = pic.Top
fraNavigation.Top = pic.Top fraNavigation.Left = Line1.X2 - fraNavigation.Width
End Sub
Private Sub Form_Unload(Cancel As Integer) 'Destroys variables to free memory Set RS = Nothing Set frmMembers = Nothing
End Sub
Private Sub DataGrid1_KeyUp(KeyCode As Integer, Shift As Integer)
If KeyCode = 38 Or KeyCode = 40 Then DisplayRecords
End Sub
Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
DisplayRecords
End Sub
Private Sub DisplayRecords()
'-Display the current and total number of record
Dim i As Integer
On Error Resume Next
With RS If .RecordCount < 1 Then txtcount.Text = 0 Else txtcount.Text = .AbsolutePosition End If lblmax.Caption = .RecordCount
For i = 0 To 6 txtDisp(i).Text = .Fields(i) Next i
End With
End Sub
Private Sub cmdDelete_Click() 'Deletes a record On Error GoTo hell With RS '-Check if there is no record If .RecordCount < 1 Then MsgBox "No record to delete.", vbExclamation: Exit Sub '-Confirm deletion of record
Dim ans As Integer, pos As Integer ans = MsgBox("Are you sure you want to delete the selected record?", vbCritical + vbYesNo, "Confirm Record Deletion") Screen.MousePointer = vbHourglass If ans = vbYes Then '-Delete the record pos = .AbsolutePosition CN.BeginTrans
.Delete .Requery CN.CommitTrans If pos > .RecordCount Then If Not .EOF Or .BOF Then .MoveFirst Else .AbsolutePosition = pos End If MsgBox "Record has been successfully deleted.", vbInformation, "Confirm" End If Screen.MousePointer = vbDefault End With
Exit Sub
hell: Handler Err CN.RollbackTrans
End Sub
Private Sub cmdNavigate_Click(Index As Integer) ' Navigate Index, RS DisplayRecords
End Sub
Private Sub cmdRefresh_Click()
With RS .Filter = adFilterNone
.Requery End With
End Sub
Private Sub cmdClose_Click()
Unload Me
End Sub
Private Sub cmdAMod_Click(Index As Integer)
On Error Resume Next With frmMembersAE .AddState = Index .OldID = RS.Fields(0) If Index = 0 Then .txtCode.Text = RS(0) .txtFirst.Text = RS(1) .txtM.Text = RS(2) .txtLast.Text = RS(3) .cmbClass.Text = RS(4) .cmbSection = RS(5) .txtRoll = RS(6) End If .Show vbModal End With
cmdRefresh_Click DisplayRecords
End Sub
Add Book Form Option Explicit Private RS As ADODB.RecordSet
Private Sub Form_Load()
'Create recordset and refresh. Link Report icons to ImageList
On Error GoTo hell Set RS = New ADODB.RecordSet RS.CursorLocation = adUseClient RS.Open "SELECT * FROM tblBooks", CN, adOpenDynamic, adLockOptimistic Set DataGrid1.DataSource = RS DisplayRecords With frmMain.ImgList32 cmdReport(1).Picture = .ListImages(6).Picture cmdReport(0).Picture = .ListImages(6).Picture End With
Exit Sub
hell: Handler Err Resume Next
End Sub
Private Sub Form_Resize()
'Resize form to different screen sizes and resolution, also when form is resized
On Error Resume Next SSTab1.Height = Me.Height - 2500 SSTab1.Width = Me.Width - 400
Line2.X1 = SSTab1.Left Line2.X2 = SSTab1.Left + SSTab1.Width Line2.Y1 = SSTab1.Top + SSTab1.Height + 400 Line2.Y2 = Line2.Y1 Line2.ZOrder vbBringToFront
DataGrid1.Width = SSTab1.Width - 280 DataGrid1.Height = SSTab1.Height - 580 Frame1.Height = DataGrid1.Height - 100 Frame1.Width = DataGrid1.Width - 200
Line3.X1 = Frame1.Left Line3.X2 = Frame1.Width - Frame1.Left - 180 Line3.Y1 = txtDisp(6).Height + txtDisp(6).Top + 1000 Line3.Y2 = Line3.Y1
LineMove Line4, Line3 LineMove Line1, Line2
pic.Top = Line1.Y1 + 200 Label9.Top = pic.Top Label11.Top = Label9.Top + Label9.Height
Image1.Top = pic.Top fraNavigation.Top = pic.Top fraNavigation.Left = Line1.X2 - fraNavigation.Width
End Sub
Private Sub Form_Unload(Cancel As Integer)
'Destroy recordset and form to free memory
Set RS = Nothing Set frmBooks = Nothing
End Sub
Private Sub cmdOperations_Click(Index As Integer)
'Create new instances of Search/Sort/Filter forms and display them. Destroy when done with
Dim obj As Form
If Index = 0 Then Set obj = frmSearch If Index = 1 Then Set obj = frmFilter If Index = 2 Then Set obj = frmSort
With obj Set .SourceRs = RS .Show vbModal End With
Set obj = Nothing
End Sub
Private Sub cmdReport_Click(Index As Integer)
'Create dynamic reports
If Index = 0 Then cmdRefresh_Click Set drBookList.DataSource = RS drBookList.Show
End Sub
Private Sub DataGrid1_KeyUp(KeyCode As Integer, Shift As Integer)
'Allow keyboard navigation to display recordnumber
If KeyCode = 38 Or KeyCode = 40 Then DisplayRecords
End Sub
Private Sub DataGrid1_RowColChange(LastRow As Variant, ByVal LastCol As Integer)
'Allow mouse navigation to display recordnumber
DisplayRecords
End Sub
Private Sub DisplayRecords()
'Display the current and total number of record
Dim i As Integer
On Error Resume Next With RS If .RecordCount < 1 Then txtcount.Text = 0 Else txtcount.Text = .AbsolutePosition End If lblmax.Caption = .RecordCount
For i = 0 To 6 txtDisp(i).Text = .Fields(i) Next i End With txtDisp(5).Text = FormatCurrency$(txtDisp(5).Text)
End Sub
Private Sub cmdDelete_Click()
'Deletes a record, undeletable if a book is borrowed.
Dim ans As Integer, pos As Integer
On Error GoTo hell With RS 'Check if there is no record If .RecordCount < 1 Then MsgBox "No record to delete.", vbExclamation: Exit Sub 'Check whether book is borrowed If .Fields("Borrowed") = True Then MsgBox "You cannot delete this book record because it is borrowed by someone" & vbNewLine & "The book must be returned to the library before its record can be deleted.", vbInformation, "Book Borrowed" 'Confirm deletion of record ans = MsgBox("Are you sure you want to delete the selected record?", vbCritical + vbYesNo, "Confirm Record Deletion") Screen.MousePointer = vbHourglass If ans = vbYes Then 'Delete the record pos = .AbsolutePosition CN.BeginTrans .Delete .Requery CN.CommitTrans If pos > .RecordCount Then If Not .EOF Or .BOF Then .MoveFirst Else .AbsolutePosition = pos End If MsgBox "Record has been successfully deleted.", vbInformation, "Confirm" End If Screen.MousePointer = vbDefault End With
Exit Sub
hell: On Error Resume Next Handler Err CN.RollbackTrans
End Sub
Private Sub cmdNavigate_Click(Index As Integer)
'Navigate a recordset through command buttons
Navigate Index, RS DisplayRecords
End Sub
Private Sub cmdRefresh_Click()
'Refresh the recordset
With RS .Filter = adFilterNone .Requery End With DisplayRecords
End Sub
Private Sub cmdClose_Click()
'Close the form
Unload Me
End Sub
Private Sub cmdAMod_Click(Index As Integer)
'Open the add/edit form. Display current record values in form if modifying.
On Error Resume Next With frmBooksAE .AddState = Index .OldID = RS.Fields(0) If Index = 0 Then .msdID.Text = RS.Fields(0) .txtTitle.Text = RS.Fields(1) .txtAuthor.Text = RS.Fields(2) .txtPublisher.Text = RS.Fields(3) .cmbCategory.Text = RS.Fields(4) .txtPrice.Text = RS.Fields(5) .msdISBN.Text = RS.Fields(6) End If .Show vbModal End With cmdRefresh_Click DisplayRecords
End Sub
ISSUE BOOK Form Option Explicit
Private Sub cmdBook_Click()
With frmSelectDg .CommandText = "Select * From tblBooks where Borrowed=False" .DataGrid1.Caption = "Members Table" .Show vbModal If .OKPressed Then Text5.Text = .rRS1 Text2.Text = .rRS2 End If End With
End Sub
Private Sub cmdCancel_Click()
Unload Me
End Sub
Private Sub cmdCode_Click()
Dim A As String, b As String, c As String
With frmSelectDg .CommandText = "Select * From tblMembers" .DataGrid1.Caption = "Members Table" .Show vbModal If .OKPressed Then Text4.Text = .rRS1 A = .rRS2 b = .rRS3 c = .rRS4 Text1.Text = A & " " & b & " " & c End If End With
End Sub
Private Sub cmdIssue_Click()
'Record that the book was taken in two places. In tblTrans, and in 'tblBooks which will set the Borrowed Boolean to True.
Dim RS As ADODB.RecordSet
If Text4.Text = "" Then Text4.SetFocus: Exit Sub If Text5.Text = "" Then Text5.SetFocus: Exit Sub On Error GoTo hell CN.BeginTrans Set RS = New ADODB.RecordSet With RS
.Open "Select * from tblTrans", CN, adOpenDynamic, adLockOptimistic .AddNew .Fields(0) = Text5.Text .Fields(1) = Text4.Text .Fields(2) = Date .Update .Close
.Open "Select [Borrowed] from tblBooks where [Book ID]='" & Text5.Text & "'", CN, adOpenDynamic, adLockOptimistic .MoveFirst .Fields(0) = True .Update .Close Set RS = Nothing End With CN.CommitTrans If MsgBox("The book " & Text5.Text & " has been issued to " & Text4.Text & vbNewLine & "Do you want to create a new issue instance?", vbInformation + vbYesNo) = vbYes Then cmdReset_Click Else Unload Me End If
Exit Sub
hell: Handler Err CN.RollbackTrans
End Sub
Private Sub cmdReset_Click()
Text1.Text = "" Text2.Text = "" Text5.Text = "" Text4.Text = "" Text3.Text = FormatDateTime$(Date, vbLongDate) Text6.Text = FormatDateTime$(Date + frmReturn.MaxDays, vbLongDate)
End Sub
Private Sub Form_Load()
cmdReset_Click With frmMain cmdCode.Picture = .ImgList16.ListImages(1).Picture Me.Icon = .ImgList32.ListImages(7).Picture End With cmdBook.Picture = cmdCode.Picture Image1.Picture = Me.Icon
End Sub
Private Sub Text4_Keypress(Keyascii As Integer)
cmdCode_Click
End Sub
Private Sub Text5_KeyPress(Keyascii As Integer)
cmdBook_Click
End Sub
RETURN BOOK Form Option Explicit
Public MaxDays As Integer Public FineAmnt As Currency
Private Sub cmdCancel_Click()
Unload Me
End Sub
Private Sub cmdReset_Click()
lblLate.Caption = "Select a book first" lblFines.Caption = "Select a book first" lblDate.Caption = "Select a book first" txtFines.Text = "" txtFines.Locked = True Text1.Text = "" Text4.Text = ""
Text2.Text = FormatDateTime$(Date, vbLongDate)
End Sub
Private Sub cmdReturn_Click()
Dim RS As ADODB.RecordSet
If Text4.Text = "" Then Text4.SetFocus On Error GoTo hell Set RS = New ADODB.RecordSet With RS CN.BeginTrans
'Begin a new transaction
.Open "Select [Borrowed] from tblBooks where [Book ID]='" & Text4.Tex t & "'", CN, adOpenDynamic, adLockOptimistic .MoveFirst .Fields(0) = False .Update .Close
.Open "Select [Fines],[Returned] From tblTrans where [Book ID]='" & Text4.Text & "'" & "And [Returned] = False", CN, adOpenDynamic, adLockOptimistic .MoveFirst .Fields("Fines") = CCur(txtFines.Text) .Fields("Returned") = True .Update .Close CN.CommitTrans End With Set RS = Nothing
'If no error was raised then record info
'Show MsgBox if another book needs returning If MsgBox("The book " & Text4.Text & " has been returned from " & Text1.Text & vbNewLine & vbNewLine & "Do you want to create a new return book instance?", vbInformation + vbYesNo) = vbYes Then cmdReset_Click Else Unload Me End If
Exit Sub
hell: Handler Err
On Error Resume Next CN.RollbackTrans
'If an error was raised then rollback 'any transaction so GIGO does not take place
'in the future.
End Sub
Private Sub cmdCode_Click()
Dim RS As ADODB.RecordSet, i As Integer
'The first part of this event procedure will open the frmSelectDg form 'and expect an input from the user. This will ease the selection part 'from the users point-of-view and validation part from the devolopers 'point-of-view.
On Error Resume Next With frmSelectDg
'First show the box .CommandText = "SELECT tblTrans.[Book ID], tblTrans.[Student ID], tblBooks.Title, [First Name] & ' ' & [Middle Initial] & ' ' & [Last Name] AS Borrower, tblTrans.[Date Borrowed] FROM tblMembers INNER JOIN (tblBooks INNER JOIN tblTrans ON tblBooks.[Book ID] = tblTrans.[Book ID]) ON tblMembers.[Student ID] = tblTrans.[Student ID] Where (((tblTrans.Returned) = False)) ORDER BY tblTrans.[Book ID];" .DataGrid1.Caption = "Members Table" .Show vbModal
'Now display the data If .OKPressed Then Text4.Text = .rRS1 Text1.Text = .rRS2 txtFines.Locked = False Else 'If the user did not enter anything then skip the second 'part of the procedure to skip errors that may arise because 'there will be no data (in text4 and text1) and as such 'null errors or record not found errors. Exit Sub End If End With
'The second part will calculate the number of days a book was taken out 'of the library and print it in the txtFines text box.
Set RS = New ADODB.RecordSet RS.Open "Select * from tblTrans Where [Book ID] ='" & Text4.Text & "'", CN, adOpenDynamic, adLockOptimistic lblDate.Caption = CDate(RS(2))
'Just for validation
'Store the difference of the current date and the date returned 'in a variable. It the variable is negative it means that the 'book returned is within the time limit and Fines=i*FineAmnt 'must be 0. So transform i into 0 i = Date - CDate(lblDate.Caption) If i < 0 Then i = 0 If MaxDays < i Then lblLate.Caption = i - MaxDays Else lblLate.Caption = "0"
'Print fines due in a label and a text box lblFines.Caption = CStr(FormatCurrency$(FineAmnt * lblLate))
'Also, use an editable text box so the correct amount a member 'is payed is recorded. Sometimes the member may pay money not 'exactly as required (payable $15 from $15.25 total fines) txtFines.Text = lblFines.Caption Set RS = Nothing
'So, practically all the librarian did was just select a book id through 'a GUI friendly interface and everything will be done by the system
End Sub
Private Sub Command4_Click()
On Error GoTo hell Shell "calc.exe", vbNormalFocus
Exit Sub
hell: MsgBox "The operating system cannot find the system calculator." & vbNewLine & "Please check whether it is properly installed or not", vbCritical, "File not found"
End Sub
Private Sub Form_Load()
Me.Icon = frmMain.ImgList32.ListImages(8).Picture Image1.Picture = Me.Icon cmdReset_Click cmdCode.Picture = frmMain.ImgList16.ListImages(1).Picture
End Sub
Private Sub Text4_Keypress(Keyascii As Integer)
cmdCode_Click
End Sub
Search Form Option Explicit
Public SourceRs
As ADODB.RecordSet
Private AlreadyFilled
As Boolean
Private AlreadySearched Private CurrPos Private oldpos
As Boolean
As Long As Long
Private Sub Combo1_KeyPress(Keyascii As Integer)
Keyascii = 0
End Sub
Private Sub Command1_Click()
On Error GoTo Err If Text1.Text = "" Then Text1.SetFocus: Exit Sub If Combo1.Text = "" Then Combo1.SetFocus: Exit Sub With SourceRs If AlreadySearched = False Then oldpos = .AbsolutePosition .MoveFirst .Find "[" & Combo1.Text & "] like *" & Text1.Text & "*" CurrPos = .AbsolutePosition If .EOF Then MsgBox "Could not find '" & Text1.Text & "' in '" & Combo1.Text & "'.", vbExclamation .AbsolutePosition = oldpos Else AlreadySearched = True Command1.Caption = "Search Next" End If Else oldpos = .AbsolutePosition .MoveNext .Find "[" & Combo1.Text & "] like *" & Text1.Text & "*" CurrPos = .AbsolutePosition If .EOF Then MsgBox "Search completed.", vbInformation: AlreadySearched = False: .AbsolutePosition = oldpos End If End With
Exit Sub
Err: If Err.Number = -2147217881 Then Search_Number: Resume Next If Err.Number = 3265 Then MsgBox "Please select a valid section from the list", vbExclamation: HighLight Text1: Exit Sub Handler Err
End Sub
Private Sub Search_Number()
'For Number data type
On Error GoTo Err SourceRs.Find "[" & Combo1.Text & "] like " & Text1.Text & ""
Exit Sub
Err: Search_DateTime
End Sub
Private Sub Search_DateTime()
'For Date/Time data type
On Error GoTo Err SourceRs.Find "[" & Combo1.Text & "] like #" & Text1.Text & "#"
Exit Sub
Err: MsgBox "Please enter an appropriate value that correspand" & vbCrLf & "where to find it (ex.Search for 10/23/1985 and Look in Date).", vbExclamation
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Form_Load()
FillCombo Combo1, SourceRs, False Me.Icon = Image1.Picture Combo1.ListIndex = 0
End Sub
Private Sub Text1_Change()
AlreadySearched = False
End Sub
Forms (MDI) Form
Add Member Form
Add Book Form
BOOK ISSUE FORM
BOOKS RETURN FORM
REPORTS LIST OF BOOKS REPORT
LIST OF MEMBERS REPORT
LIST OF BOOKS UN RETURNED