Access 2007-2016
Access 2000-2003
Access Seminars
TechHelp Support
Tips & Tricks
Access Forum
Course Index
Topic Glossary
Insider Circle
Home   News   Tips   Glossary   Templates   Forums   Help   Logon   Order   Contact Us  
Courses - Microsoft Access 323
Description: Advanced Access Recordsets
Running Time: 71 minutes
Pre-Requisites: Access 322 very strongly recommended
Previous Lesson: Access 322
Next Lesson: Access 324
Main Topics: ADO, CursorType, Connection, Student Test Taker, DMIN, NZ, SQL Server Connect
Versions: This course is valid for Access 2000 through 2003. If you are using Access 2007 or 2010, you will still benefit from this course. You will find that the concepts are the same, but there are cosmetic differences between the versions.


Order before 4/22/2019 to get a FREE upgrade to our Access 2010 version!
Click here for details


In today's class, we're going to learn about ADO (ActiveX Data Objects) which is a different way of working with recordsets - ADO is slightly different from DAO, and it has its own uses. We'll talk about those uses in today's class.

We're also going to build a sample project, a Student Test Taker, where we'll do lots more with recordsets, and we'll learn lots of new techniques and functions.

We'll start by going over the available References, and you'll see how to enable ADO (ActiveX Data Objects).


You'll learn how to create an ADO connection, set the CursorType, LockType, and lots more.


We'll go over a lot of the same concepts as DAO recordsets, such as looping through records, adding, editing, and deleting records (and so on). You'll see how both are similar, but each has its own pros and cons. One of the major benefits of ADO is that you can connect to an SQL Server or Oracle Database with it:


Next we'll use our Recordset skills for a little project: we'll build a student test taker (quiz) program. We'll start out with a form/subform for the teacher to input questions and correct answers.


Then we'll build a form where a user has to log on and then take the test. All of his answers will be logged in the database using a Recordset.


Then we'll build a nice report to summarize each student's results.



Access 323 - Course Outline

1. ADO ActiveX Data Objects, Part 1
Benefits of ADO v. DAO
Create a Database Connection
Recordset Types
- adOpenDynamic
- adOpenForwardOnly
- adOpenKeyset
- adOpenStatic
- adOpenUnspecified
Lock Types
- adLockReadOnly
- adLockPessimistic
- adLockOptimistic

2. ADO ActiveX Data Objects, Part 2
Loop Through Records (EOF)
Editing Records
Default is a READ ONLY Lock Type
AddNew to Add a New Record
Delete to Delete a Record
ADO Connection Strings
Connect to SQL Server
Connect to Oracle
Using Both ADO and DAO Together

3. Student Test Taker, Part 1
Question Table
Answer Table
Teacher Q/A Form
Student Table
Response Table

4. Student Test Taker, Part 2
Test Taker Form
Student Combo Box
Question Text Box
Answer List Box
Take Test Button
Disable the Student Combo
Disable the Test Button
Check to Make Sure Student Picked
Auto DropDown the Student Combo
DMin Function to Find Next QuestionID
Nz Function To Return Zero on Null

5. Student Test Taker, Part 3
Load List Box with Answers
RecordSet for Answers
Button to Save Results
Save With RecordSet to ResponseT
Move To Next Question
Lock the Next Button When Test Done

6. Student Test Taker, Part 4
Query To Show All Student Answers
Different Links Give Different Results
How Multiple Relationships Interact
Report Grouped By Student
Grouping Options Button in Wizard
Summary Options Button
Calculate Student Average
Count of Records
Total Correct
Hiding the Detail Section



Student Interaction: Microsoft Access 323

Richard on 1/1/2008:  ADO ActiveX Data Objects, Student Test Taker
BRYAN binkerd on 5/22/2009: time 5:53
set the vb code up and get an error when I put Dim Con As New Connnection I get a compile error stating invalid use of keyword.

Richard Rost on 5/22/2009: Bryan, what version of Access? Did you make sure you have the Reference set up?
bryan binkerd on 5/22/2009: Running access 2003
Dao 3.6 object library
ADO 2.8 2.8 library
ADO Recordset2.8 Library
along with the standard selected references

Richard Rost on 5/26/2009: Bryan, I just set it up and tested it again on two machines and it worked fine for me. Without looking at your computer I can't tell what the problem is. Make sure the DAO reference has a higher priority than the ADO one. Try it in a different (blank) database? Maybe there's something corrupt in that one.
bryan binkerd on 6/5/2009: OK Rick, Got it going. Head space and timing error on my part on 6/27/2010: Dear Richard;
I do thank you for the efforts you put in Access seminars and I found it very helpful and informative but frankly I'm a little bit confused when listening to your Access seminar 320 for you mentioned that DAO is GOOD and ADO is BAD (lesson 1. Recordset Basic, in frame time 13:12) whereas I've read a book titled ACCESS 2007 FOR DUMMIES (Chapter 5: Using SQL and Recordsets, section Recordsets and Object Model page 665) saying the contrary, below is the quote from the book:

"Because Access offers two different object models for the purpose of working with recordsets, you may find recordsets confusing. One is DAO (Data Access Objects); the other is ADO (ActiveX Data Objects). The DAO model is the older of the two. DAO works only with Access tables. ADO, the newer of the two, works either with Access tables or external data sources, such as Oracle and Microsoft SQL Server.
At first glance you may think, “Well, I’ll never use external data sources, so I’ll stick with the DAO object model.” Picking an object model, though, isn’t that easy. The newer ADO model is currently favored by Microsoft, meaning that ADO will continue to grow and get better while DAO remains in maintenance mode, which generally spells doom for a technology. If a technology is in maintenance mode today that pretty much guarantees that it won’t exist at all in the not-too-distant future.
Given the bias of Microsoft, we stick with ADO in this book."

For me, I understand that DAO is used for Access only and ADO is more generic as you mentioned in Access 323 but I need to hear your opinion in this issue, which one is the best DAO or ADO take into consideration Access 2007 and 2010?

Thank you

Reply from Richard Rost:

I go into much more detail in my seminars and lessons, but basically DAO is a model that is more specific to Access and gives you more control over Access - including design of the tables. ADO is more generic, applies to other database types, and can be used in online databases (like I show in my ASP classes). Both are just fine for basic use. I actually mix and match between them a lot. Microsoft is actually focusing on DAO for the future even though it is the older of the two standards. I personally say it can't hurt to learn them BOTH.

Lilly Nguyen on 10/13/2010: Hi,

I would like to download Access Student Data files. What is the password?? thanks

Reply from Richard Rost:

The databases were all moved here:

The passwords for the advanced databases are the same as your installation password for the course. See that page for more info.

Kenny Nelson on 12/8/2015: We use SQL Server for our file handling so I use the ADO model in Access. Is it OK to use ADO to handle our true Access tables also? Are there any ill effects from using ADO over DAO for this?

Reply from Alex Hedley:

It's more person preference, there are benefits for an against.

Richard Stockstill on 4/25/2018: I bought/viewed 320 thru 323 in lieu of Dev-8, etc.

It would be interesting to see how to have the test taker randomly pick 10 questions from a Table of 50 questions but without picking the same question more than once per testing instance. Thoughts ?

Hope all is well & till later,
Rick S.
San Antonio, TX

Reply from Alex Hedley:

Have you taken Expert 26? Random is covered in that which could be a starting block.


You may want to read these articles from the 599CD News:


Visual Basicindex
Account Login
Online Theater
Lost Password
Free Upgrades
Insider Circle
Student Databases
Change Email
Latest News
New Releases
User Forums
Topic Glossary
Tips & Tricks
Search Our Site
Waiting List
Production Schedule
Collapse Menus
Live Chat
Customer Support
WalkThru Tutorials
Consulting Services
About Us
Affiliate Program
Richard Rost
Free Lessons
Mailing List
Video Tutorials
MYOLP Memberships
Idiot's Guide to Excel
Volume Discounts
Payment Info
Terms of Sale
Gift CDs
Live Chat
General Info
Support Policy
Contact Form
Email Us
Mailing Address
Phone Number
Fax Number
Course Survey
Facebook    Twitter

Google Plus    LinkedIn

Blog RSS Feed    YouTube Channel
Richard Rost Microsoft MVP