Você está na página 1de 51

Submitted To:

Submitted By:

Index
S No. Topics 1 Acknowledgment 2 Tools/ Platform/ Language used & Hardware And Software 3 4 5 6 Requirements Project coding Forms Reports Bibliography 5 19 27 Page 3 4

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 hackneyed by showing us a new way and 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 for liberally offering the facility to 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 language, 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.Text & "'", 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 'If an error was raised then rollback CN.RollbackTrans '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 'any transaction so GIGO does not take place

'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 Private AlreadyFilled Private AlreadySearched Private CurrPos Private oldpos As ADODB.RecordSet As Boolean 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

Bibliography
1. Evangels Petrotsos Mastering Visual Basic 6, BPB Publications 2. Content Development Group Visual Basic 6.0 Programming Tata McGraw Hill 3. Siler Spotls Special Edition Using Visual Basic 6 Prentice-Hall India 4. Visual Basic Programming Bible Wiley Sons India Ltd. 5. Complete reference to MS-ACCESS Tata McGraw Hill 6. Silberschatz , Karth & Sudarshann Database System Concepts Tata McGraw Hill 7. Elmasri, Navathe Fundamentals of Database System Low Price Edition.

Você também pode gostar