Chapter11

advertisement
Structured Query Language

Also known as SQL


Industry standard for accessing relational databases
General format of SQL Select
Select [Distinct] fieldlist From tablenames
[Where search conditions]
[Group By fieldlist]
[Having group criterion]
[Order By fieldlist [ASC|DESC]]

Examples
Select * From Contacts
Select * From Contacts, ContactTypes Where
Contacts.ContactTypeID = ContactTypes.ContactTypeID
Order By LastName
© 1999, by Que Education and Training, Chapter 11, pages 593-625 of
Introduction to Computer Programming with Visual Basic 6: A Problem-Solving Approach
Creating a new Dynaset

Steps to define new dynaset via data control
1) Set data control’s RecordSource property to SQL query
2) Re-open recordset using Refresh method

Example
stSQL = “Select * From Contacts, ContactTypes Where “ _
& “Contacts.ContactTypeID = ContactTypes.ContactTypeID ”
datBooks.RecordSource = stSQL
datBooks.Refresh
© 1999, by Que Education and Training, Chapter 11, pages 593-625 of
Introduction to Computer Programming with Visual Basic 6: A Problem-Solving Approach
Database Objects

Data Access Objects (DAO)


Remote Data Objects (RDO)



Uses Jet DB engine to access databases
Used when developing client/server application
that access remote ODBC database system
Requires Enterprise edition of VB & 32-bit OS
ActiveX Data Objects (ADO)




New model with VB 6.0
Combines best features of DAO and ADO
Not limited to relational DBs
Requires OLE database driver to use with Jet DB
© 1999, by Que Education and Training, Chapter 11, pages 593-625 of
Introduction to Computer Programming with Visual Basic 6: A Problem-Solving Approach
DAO Model
DBEngine
Errors
Workspaces
Groups
Users
Databases
Recordsets
QueryDefs
TableDefs
Relations
Containers
© 1999, by Que Education and Training, Chapter 11, pages 593-625 of
Introduction to Computer Programming with Visual Basic 6: A Problem-Solving Approach
Data Control vs. DAO Notation
Purpose of notation
Notation with data control
Move to first record Call
datEmployee.Recordset.MoveFirst
Notation with DAO
Call
fEmpRS.MoveFirst
Move to last record
Call
datEmployee.Recordset.MoveLast
Call
fEmpRS.MoveLast
Move to next
record
Call
datEmployee.Recordset.MoveNext
Call
fEmpRS.MoveNext
Move to previous
record
Call
datEmployee.Recordset.MovePrevious
Call
fEmpRS.MovePrevious
Condition to check datEmployee.Recordset.BOF
if before the start of
the Recordset
FEmpRS.BOF
datEmployee.Recordset.EOF
fEmpRS.EOF
Condition to check
if after the end of
the Recordset
Retrieve contents of datName.Recordset!FieldName
or
a specific field
datName.Recordset("FieldName")
or
datName.Recordset![FieldName]
fEmpRS!FieldName
or
fEmpRS("FieldName")
or
fEmpRS![FieldName]
© 1999, by Que Education and Training, Chapter 11, pages 593-625 of
Introduction to Computer Programming with Visual Basic 6: A Problem-Solving Approach
Options with SQL Select

Like operator


Relational operator used to find similar matches
Expression being compared is surrounded by
single quotes and normally contains * wildcard
 FirstName
Like ‘A*’
– returns all records whose FirstName values start with A

Aggregate Queries



Used to get summary-type information
Define new field to hold the result from an
aggregate function
Inner Joins
© 1999, by Que Education and Training, Chapter 11, pages 593-625 of
Introduction to Computer Programming with Visual Basic 6: A Problem-Solving Approach
Aggregate Queries
SELECT AggFunction(fieldname) As newdbfield
FROM tablename
[WHERE searchcriteria]
Function
AVG
COUNT
SUM
MAX
MIN
Purpose
Returns the average of the values in the selected field
Returns the number of records in the selected fields.
Returns the sum of all the values in the selected field.
Returns the highest value in the selected field.
Returns the smallest value in the selected field.
© 1999, by Que Education and Training, Chapter 11, pages 593-625 of
Introduction to Computer Programming with Visual Basic 6: A Problem-Solving Approach
Inner Joins for Multiple Tables
SELECT [DISTINCT] fieldlist
FROM table1 INNER JOIN table2 ON table1.field1 = table2.field2
[WHERE searchcriteria]
[ORDER BY fieldname]

Example
Select * From Contacts INNER JOIN ContactTypes On
Contacts.ContactTypeID = ContactTypes.ContactTypeID Order
By LastName
© 1999, by Que Education and Training, Chapter 11, pages 593-625 of
Introduction to Computer Programming with Visual Basic 6: A Problem-Solving Approach
Modifying DB Records

Define action query




INSERT INTO
UPDATE
DELETE
Use Execute method

Call DBObject.Execute(stSQL)
© 1999, by Que Education and Training, Chapter 11, pages 593-625 of
Introduction to Computer Programming with Visual Basic 6: A Problem-Solving Approach
Example: Add a new record
Private Sub WriteToDB()
Dim SQL As String
SQL = "INSERT INTO Employee "
SQL = SQL & "(EmpName, BirthDate, PayRate, Manager)"
SQL = SQL & " VALUES ("
SQL = SQL & DBTextFmt(txtEmpName.Text) & ", "
SQL = SQL & CStr(DBDateFmt(txtBirthdate)) & ", "
SQL = SQL & txtPayRate.Text & ", "
SQL = SQL & txtMgr.Text & ")"
Call fEmpDB.Execute(SQL)
' Enable navigation buttons
cmdFirst.Enabled = True
cmdLast.Enabled = True
cmdNext.Enabled = True
cmdPrevious.Enabled = True
End Sub
© 1999, by Que Education and Training, Chapter 11, pages 593-625 of
Introduction to Computer Programming with Visual Basic 6: A Problem-Solving Approach
Example: Delete a record
Private Sub cmdDelete_Click()
Dim SQL As String
SQL = "DELETE FROM Employee Where EmpID = " & _
fEmpRS("EmpID")
Call fEmpDB.Execute(SQL)
Call fEmpRS.Close
Call fEmpDB.Close
Call ReOpenDB
End Sub
© 1999, by Que Education and Training, Chapter 11, pages 593-625 of
Introduction to Computer Programming with Visual Basic 6: A Problem-Solving Approach
Example: Create New Database
Option Explicit
Private fUserWS As Workspace
Private fNewDB As Database
Private Sub CreateDB()
Dim FileName As String
Set fUserWS = DBEngine.Workspace(0)
FileName = AppendFileToPath(App.Path, “NewTestDB.mdb”)
If FileExists(FileName) Then
If MsgBox(“The database exists. Do you want to replace it?”, _
vbYesNo + vbQuestion) = vbYes Then
Kill FileName
Else
Exit Sub
' Do not create the DB-already exists
End If
End If
Set fNewDB = fUserWS.CreateDatabase(FileName, dbLangGeneral)
End Sub
© 1999, by Que Education and Training, Chapter 11, pages 593-625 of
Introduction to Computer Programming with Visual Basic 6: A Problem-Solving Approach
Example: Create Database Table
‘
‘
Create table
SQL = "CREATE TABLE Employee (" & _
"EmpID
COUNTER, " & _
"EmpName
TEXT(30), " & _
"BirthDate DATETIME, " & _
"PayRate
CURRENCY, " & _
"Manager
BIT)"
Call fNewDB.Execute(SQL)
Create index to improve performance
SQL = "CREATE UNIQUE INDEX indEmpPrimary"
SQL = SQL & " ON Employee (EmpID)"
SQL = SQL & " WITH PRIMARY"
Call fDBPaychecks.Execute(SQL)
© 1999, by Que Education and Training, Chapter 11, pages 593-625 of
Introduction to Computer Programming with Visual Basic 6: A Problem-Solving Approach
Download