Presentation is loading. Please wait.

Presentation is loading. Please wait.

Component 8, Slide 1 CP2030 Visual basic for C++ Programmers, ‘The VB Team’ Copyright © University of Wolverhampton CP2030 Visual Basic For C++ Programmers.

Similar presentations


Presentation on theme: "Component 8, Slide 1 CP2030 Visual basic for C++ Programmers, ‘The VB Team’ Copyright © University of Wolverhampton CP2030 Visual Basic For C++ Programmers."— Presentation transcript:

1 Component 8, Slide 1 CP2030 Visual basic for C++ Programmers, ‘The VB Team’ Copyright © University of Wolverhampton CP2030 Visual Basic For C++ Programmers v Week 8 - Databases continued: v Example using Further Features v Find Method v Reposition and Validate Event v Multiple Data Controls v Queries v Other Topics to Consider v Last Words on Databases

2 Component 8, Slide 2 CP2030 Visual basic for C++ Programmers, ‘The VB Team’ Copyright © University of Wolverhampton Example of Other Features v Below is an example (dental3.mak) which is used to demonstrate further data control functionality – Modifying properties – Refresh method – Referencing fields – Unbound controls – EOF property – IsNull v The example shows the addition of a list box

3 Component 8, Slide 3 CP2030 Visual basic for C++ Programmers, ‘The VB Team’ Copyright © University of Wolverhampton Example - Code v Sub Form_Load () v Data1.DatabaseName = "c:\files\uow\vb_sc_da\dental.mdb" v Data1.RecordSource = "Patients" v Data1.Refresh 'Open database & recordset v Do While Not Data1.Recordset.EOF v If Not IsNull(Data1.Recordset(“Surname”).Value) Then 'If not empty, then v List1.AddItem Data1.Recordset(“Surname”).Value 'add to the list v End If v Data1.Recordset.MoveNext 'Move to next record v Loop v Data1.Refresh 'Rebuild the recordset v End Sub

4 Component 8, Slide 4 CP2030 Visual basic for C++ Programmers, ‘The VB Team’ Copyright © University of Wolverhampton Property Setting v The DatabaseName, RecordSource and Datafield (the field within a database to which a data aware control links) properties can all be set at design and run time v The DataSource property (the data control to which a data aware control links e.g. Data1) can only be set at design time v e.g. in above code Data1.DatabaseName = "c:\files\uow\vb_sc_da\dental.mdb" Data1.RecordSource = "Patients"

5 Component 8, Slide 5 CP2030 Visual basic for C++ Programmers, ‘The VB Team’ Copyright © University of Wolverhampton Refresh Method v Used to open the database and build or reconstruct the dynaset in the controls recordset property at runtime v Has side affect of making the first record current in the recordset e.g. Data1.Refresh 'Open database & recordset v In the code example above it is used twice i. To initially open the database and recordset ii. To refresh the recordset, making the first record current, after the Do... Loop has completed

6 Component 8, Slide 6 CP2030 Visual basic for C++ Programmers, ‘The VB Team’ Copyright © University of Wolverhampton Referencing Fields v Can move through records using MoveNext etc v To select individual fields within a record, need to reference it within the recordsets current record, can use any of the following e.g. v Data1.Recordset(“First Name”).Value Data1.Recordset.Fields(“First Name”) Data1.Recordset.Fields(0).Value Data1.Recordset.Fields(0) Data1.Recordset(“First Name”) v All equivalent since ‘Fields’ is a default collection the recordset and ‘Value’ is default property for a ‘Field’

7 Component 8, Slide 7 CP2030 Visual basic for C++ Programmers, ‘The VB Team’ Copyright © University of Wolverhampton Unbound Controls v To display data in controls other than the 5 data aware controls requires coding to manipulate the data in and out of the control v In the above code the required field is referenced and then added to a list boxes list e.g. List1.AddItem Data1.Recordset(“Surname”).Value 'add to the list v Here we’re adding the second field (Surname) of each record into the list box

8 Component 8, Slide 8 CP2030 Visual basic for C++ Programmers, ‘The VB Team’ Copyright © University of Wolverhampton EOF / BOF / IsNull v EOF is used to check if the end of the recordset has been reached, when EOF becomes true – Do While Not Data1.Recordset.EOF v In the example the code loops while the end of the file has not been reached v BOF is True when at beginning of recordset v IsNull is a Visual Basic command which checks if a variable is a null, here it is used to check the value of the referenced field of the current record v If Not IsNull(Data1.Recordset(1)) Then ‘If not empty, then

9 Component 8, Slide 9 CP2030 Visual basic for C++ Programmers, ‘The VB Team’ Copyright © University of Wolverhampton Example - Code Revisited v Sub Form_Load () v Data1.DatabaseName = "c:\files\uow\vb_sc_da\dental.mdb" v Data1.RecordSource = "Patients" v Data1.Refresh 'Open database & recordset v Do While Not Data1.Recordset.EOF v If Not IsNull(Data1.Recordset(1)) Then 'If not empty, then v List1.AddItem Data1.Recordset(1) 'add to the list v End If v Data1.Recordset.MoveNext 'Move to next record v Loop v Data1.Refresh 'Rebuild the recordset v End Sub

10 Component 8, Slide 10 CP2030 Visual basic for C++ Programmers, ‘The VB Team’ Copyright © University of Wolverhampton Alternative version (using For loop and RecordCount property) Data1.Recordset.MoveLast ‘ sets value of RecordCount Data1.Recordset.MoveFirst For I = 1 to Data1.Recordset.RecordCount If Not IsNull(Data1.Recordset(1)) Then 'If not empty, then List1.AddItem Data1.Recordset(1) 'add to the list End If Data1.Recordset.MoveNext 'Move to next record Next I

11 Component 8, Slide 11 CP2030 Visual basic for C++ Programmers, ‘The VB Team’ Copyright © University of Wolverhampton Find Instructions v The FindFirst, FindLast, FindNext and FindPrevious instructions are used to locate records in the recordset e.g. Data1.Recordset.FindLast “[First Name] = ‘Jeremy’ ” LocationField toCriteria methodsearchto find v A record which matches the criteria is made the current record, v Criteria can be variables, strings with wildcards Data1.Recordset.FindLast “[Surname] = ‘ “ & NameVar & “ ’ ” Data1.Recordset.FindLast “[First Name] = ‘J*’ ”

12 Component 8, Slide 12 CP2030 Visual basic for C++ Programmers, ‘The VB Team’ Copyright © University of Wolverhampton Reposition Event v A Reposition event occurs after a new record becomes current. v First happens when the Data control loads and makes the first record in the recordset current v Is triggered by ‘Move’ or ‘Find’ method Data Control load New Code (Move / Find)RecordReposition CurrentEvent

13 Component 8, Slide 13 CP2030 Visual basic for C++ Programmers, ‘The VB Team’ Copyright © University of Wolverhampton Validate Event v Allows validation of changes before database updates v A Validate event occurs before a new record becomes current. v It also occurs before an Update, Delete, Unload or Close operation Update/Delete Data Control load Unload/Close Code (Move / Find)ValidateNew EventRecord Current

14 Component 8, Slide 14 CP2030 Visual basic for C++ Programmers, ‘The VB Team’ Copyright © University of Wolverhampton Data Control - Validate event v Private Sub Data1_Validate ( Action as Integer, Save as Integer ) v Action parameter identifies current operation – 1 MoveFirst (includes navigation arrow) – 2 MovePrevious ( “ “ “ ) – 3 MoveNext ( “ “ “ ) – 4 MoveLast ( “ “ “ ) – 5 AddNew – 6 Update – 7 Delete – etc… v Save parameter =True (-1) if any data attached to data control has changed

15 Component 8, Slide 15 CP2030 Visual basic for C++ Programmers, ‘The VB Team’ Copyright © University of Wolverhampton Data Control - Validate event v Validate event can prevent the action from happening v E.g. Private Sub Data1_Validate ( Action as Integer, Save as Integer ) If val(txtAge) < 18 then MsgBox “Too young!” Action = 0 End If End Sub

16 Component 8, Slide 16 CP2030 Visual basic for C++ Programmers, ‘The VB Team’ Copyright © University of Wolverhampton Validate Event v Save - normally True(-1), set False(0) to stop new data being saved v Note. Don’t use methods under the Validate event e.g. MoveNext, as this creates an infinite loop MoveNextValidate Event

17 Component 8, Slide 17 CP2030 Visual basic for C++ Programmers, ‘The VB Team’ Copyright © University of Wolverhampton Multiple Data Controls v Can use two data controls to bring in data from two separate tables v The tables can either be in the same database or in separate databases v Databases could even be different types v But the data under each data control is totally independent of the other data control v The sets of data aware controls update separately; they are dependent on the data control they are attached to

18 Component 8, Slide 18 CP2030 Visual basic for C++ Programmers, ‘The VB Team’ Copyright © University of Wolverhampton Queries v If want to relate the data from two tables together: Tables must be in same database, and have a common field to relate v Use a query to create the relationship v Queries are written using SQL, structured query language v Complex language, but some databases e.g. MSAccess allow you to build queries using blocks, it will then generate the SQL code which can be used by VB to link in a query

19 Component 8, Slide 19 CP2030 Visual basic for C++ Programmers, ‘The VB Team’ Copyright © University of Wolverhampton Query Example v If you had two tables having a common field of Patient category, one table gives patient demographics and the second costing rates and descriptors for each category. v The SQL to use as the RecordSource to relate the patient name to the cost rate would look like Data1.RecordSource = "SELECT Patients.*, [Cost Rate] FROM Patients, Costing, Patients INNER JOIN Costing ON Patients.[Category] = Costing.[Category] Order by [Surname]" v It isn’t simple !!

20 Component 8, Slide 20 CP2030 Visual basic for C++ Programmers, ‘The VB Team’ Copyright © University of Wolverhampton Other Topics To Consider v Transaction Statements - Used to control a series of updates to a database, can be used to allow the ability to undo updates v Error Event - Happens when an error occurs such as an invalid database name being specified v UpdateRecord as for Update except doesn’t trigger a validate event v UpdateControl - reads back values of current record from the recordset into bound controls, means changes to their values can be undone

21 Component 8, Slide 21 CP2030 Visual basic for C++ Programmers, ‘The VB Team’ Copyright © University of Wolverhampton Other Topics To Consider v FieldSize - gives the size of a memo field v GetChunk - gets a 64k chunk of data from a memo field, it has an offset parameter for where to get the chunk v AppendChunk - appends data in 64k chunks to a memo field

22 Component 8, Slide 22 CP2030 Visual basic for C++ Programmers, ‘The VB Team’ Copyright © University of Wolverhampton Last Words on Database v Visual Basic Professional allows greater control over database development with v Ability to create dynaset in code without using a data control v Tools to create new databases and modify existing database structures v Visual Basic uses the MSAccess engine v Visual Basic 3.0 won’t link to MSAccess 2.0 developed database, need to install a fix file COMLAYER.EXE. This gives full compatibility and link ability.


Download ppt "Component 8, Slide 1 CP2030 Visual basic for C++ Programmers, ‘The VB Team’ Copyright © University of Wolverhampton CP2030 Visual Basic For C++ Programmers."

Similar presentations


Ads by Google