The follow is a compendium of Access routines, each separated into its own database. Each database illustrates one or more possible solutions to a single problem. They are not intended to be fully functioning utilities, but rather an illustration of how the problem might be solved and are therefore intended for educational use. These routines are entirely free. You may use them anywhere and in any way you choose, with or without citation. Therefore, you agree to use them at your own risk. There is no warranty implied and I am not responsible for any damages that might result from their use.
Note: Files designated "Access 2000 DAO" use the DAO data model and require a reference to DAO set in Access versions 2000 and 2002 (XP). Files designated "Access 2000 ADO" do not require this reference, but may need a reference to ADOX set. Files designated "Access 2000" do not use a data model.
If you don't understand the above, or are having problems with User Defined Variables, Click Here
- BackUpWithCompact.mdb ( intermediate )
This sample illustrates how to back up a database using the Compact Method. It creates a backup file called "BackUpWithCompact2kXX_XX_XXXX.mdb" with the X's representing the data. It puts this file in the same directory as the database.
- BeginDateEndDateQuery.mdb (beginner)
This sample illustrates how to create a query which displays the BeginDate and EndDate of a range based on a single EffectiveDate stored in the table. It is assumed that the Effective Date range of a record spans the time from the Effective date of the current record and the Effective Date of the NEXT record (minus 1). There are three methods shown here: Using a 1) correlated subquery, 2) DMax domain aggregate function, and 3) LEFT OUTER JOIN.
- BoilerPlate.mdb ( intermediate )
This sample is a useful template for an application.
- BoilerPlate2.mdb ( intermediate )
This sample is a useful template for an application. It is mostly the same as Boilerplate.mdb but with a different MainDataEntry Form.
Books.mdb ( intermediate )
"Books.mdb" and it's companion database "Books_be.mdb", make up a simple personal book inventory database. It uses the "BoilerPlate.mdb" sample to create a complete application.
- CalculateSpec.mdb ( intermediate )
This sample automatically calculates the Start Bit of an ImportSpec by adding the Start Bit and Length of the previous record.
- CascadingComboBoxes.mdb ( beginner )
This sample illustrates how to restrict the value of one combo box based on the value of another.
- CascadingComboInSubform.mdb ( intermediate )
Illustrates how to use Cascading Comboboxes in a continuous subform.
- ChangingColorFields.mdb ( Access 97 Only)
This sample illustrates how to change the color of a control on a form based on information in the form. In this case, if Check 14 checkbox is checked then the values of Desc will be red, otherwise it will be blue. Access 97 ONLY. For higher versions (Access 2000+) see my sample ConditionalFormatting.mdb.
- CharacterScramble.mdb ( intermediate )
This application illustrates to scramble character data WITHIN A FIELD. To Randomize FIELDS WITHING A TABLE, see my sample Datascramble.mdb.
This sample shows how to display all the queries in your database in a listbox and run them with a button.
- ChooseReportFields.mdb ( intermediate )
This sample very roughly illustrates how to create a query programmatically which chooses the FIELDS to be reported on a report based on the selected values of a multi-select list box.
- ChooseReportFieldsRows.mdb ( advanced )
This sample very roughly illustrates how to create a query programmatically which chooses the FIELDS to be reported on a report based on the selected values of a multi-select list box and then allows the user to specify the ROWS to be reported.
- ChooseReportFromList.mdb ( beginner )
These forms illustrate how to create a clean form for launching reports.
- ChooseReportFromList2.mdb ( intermediate )
These forms illustrate some advanced features in a "Report Switchboard". For less complex examples, see "ChooseReportFromList.mdb"
- ChooseReportFromList3.mdb ( intermediate )
This sample shows an alternate way to open reports with a parameter form. It allows the user to select either a report directly or a form in which they can choose a parameter for the report.
- CleanFileHTML.mdb ( intermediate )
This sample removes the HTML tags from an html document and writes it into a separate text file. See Module 1 for the code.
- ComboChoosesRecord.mdb ( beginner )
This illustrates how to have a combo box in which you can choose a value and have that record appear in the form.
- CompactBackEndDB.mdb ( advanced )
Illustrates how to compact a Back-End database from the Front-End.
- CompactDatabase.mdb ( advanced )
This sample illustrates how to compact the current database programmatically. It assumes that the tables reside locally. (To compact a Back-end database, see my sample "CompactBackEndDB.mdb".)
- CompareTwoTables.mdb ( intermediate )
This sample shows how you can programmatically compare two tables and write out the differences to a third table.
- ConditionalFormatting.mdb ( beginner )
This sample illustrates how to change the color of a control on a form based on information in the form. In this case, if Check 14 checkbox is checked then the values of Desc will be red, otherwise it will be blue. This does not work with Access 97 and earlier. For those, see my sample ChangingColorFields.mdb.
- ContinuousFormWithNewRecordOnTop.mdb ( intermediate )
This sample illustrates two ways to have a continous form with the new record on top. The first method uses unbound controls in the header of the form and the second uses a bound subform set to Data Entry.
- ConvertDateTimeToFormattedString.mdb ( intermediate )
This sample shows how to calculate the difference between two times and display the result in 'xx days, xx hours, xx minutes' format.
- ConvertStringStuff.mdb ( intermediate )
Demonstrates how to convert a variety of strings into their numeric equivalents and back.
- CopyObjectsFromBE.mdb ( intermediate )
This sample demonstrates how to copy objects from the Back-End database into the Front-End. In this specific case the objects are queries.
- CreateDescriptionProperty.mdb ( intermediate )
This sample demonstrates how to create and modify the "Description" property of the following Database objects: Tables, Table Fields, Queries, Query Fields, Forms, Reports, Macros, and Modules.
- CreateMultiSelectQuery.mdb ( intermediate )
This database illustrates how to create a query programmatically based on the selected values of a multi-select list box.
- CreateQueries2.mdb ( intermediate )
This database illustrates several examples of programmatically creating queries.
- CreateQueries3.mdb ( intermediate )
This form shows how to create a query programmatically from a form with option boxes.
- CreateQueries4.mdb ( advanced )
This form illustrates how to create a relatively flexible inter-active query facility for an end-user. It allows you to choose the table, then shows the fields available for that table and then values available for the fields.
- CreateQueries5.mdb ( advanced )
This set of samples illustrate how to create a flexible query generator for your users. It is similar to CreateQueries4.mdb, but no longer limits the query to 3 criteria.
- CreateQueryFields.mdb ( intermediate )
This sample illustrates how to programmatically create a query based on a table or another query and select only those fields that you want to see. It also has a form, which shows how to restrict the rows based on a criteria.
- CreateTableFromLinked.mdb ( intermediate )
This sample illustrates how to create a native Access 2000 table from a linked Excel table. This process can be easily modified to do the same thing for linked Text or ODBC tables.
- CrossTabReport.mdb ( intermediate )
The problem with crosstab queries has always been that if you try to make a report based on one, you inevitably have problems with field names when the crosstab changes. This sample demonstrates how you can get around this problem.
- CSVtoFixed.mdb ( intermediate )
This sample reads a CSV file and exports it as a fixed width file. Module 1 (CSVtoFixed) does the entire process in code. For very large records, Module 2 (CSVtoFixed2) uses a table to allow you to create your own Export Spec.
- CurrentTab.mdb ( beginner )
This form illustrates how to programmatically scroll between tabs of a tab control on a form. See the code behind the buttons for details.
- DAO.mdb ( beginner )
This database contains various examples of Data Definition Language (DDL) and Data Manipulation Language (DML) of both DAO and SQL.
- Data Definition Language: SQL vs DAO
This sample (with full documentation) illustrates how to do a variety of DDL (Data Definition Language) operations using both SQL and DAO. DDL operations are those that modify the database structure, ie. tables, fields, indexes, and relationships.
DataEntryMask.mdb ( beginner )
This sample illustrates a way to restrict what kind of characters are input into a textbox without using an input mask. This method checks the characters as they are typed and only allows legal characters.
- DataScramble.mdb ( intermediate )
This application illustrates how to scramble data in a table for confidentiality reasons. To scramble Text data WITHIN A FIELD, see my sample CharacterScramble.mdb.
- DateStuff.mdb ( intermediate )
This example illustrates how to do a variety of date calculations like: First day of Month, Last Day of Month, First Day of Next Month, First Day of Current Week, Last Day of Current Week, First Day of Current Work Week, Last Day of Current Work Week.
- DaysBetweenQuery.mdb ( beginner )
This sample illustrates how to create a "Days Between" query, that is, display the difference between dates in subsquent records of a table.
- DeleteTablesAtStart.mdb ( beginner )
This sample illustrates how to delete ImportError tables at start up. For illustration purposes, the RunMacro button executes the code, but if you rename the macro to AutoExec, it will run each time the database opens.
- Denormalize.mdb ( intermediate )
This example takes data in a normalized table and writes it to another table in denormalized form.
- DirectoryList.mdb ( intermediate )
This sample shows how to "role your own" directory/file list.
- EmailingSpecificReports.mdb ( advanced )
This illustrates how to email the same report with different data to a variety of users.
Not an Access sample, but a useful Powerpoint template for creating ER Diagrams.
- ExportFormattedFixed.MDB ( intermediate )
This shows how to export to a fixed width text file programmatically.
- ExportToExcel_Automation (advanced)
- There are two ways of using Office Automation that I want to discuss:
1. Using a Do…While loop to PUSH data from Access to Excel
2. Using the CopyFromRecordset to PULL data into Excel from Access
This sample demonstrates how to append data from a database to an Excel Spreadsheet.
- The overall process:
- 1) Create macro to export queries
- 2) Convert the macro to VBA code
- 3) Modify the code to loop through a table of table and file names (MyExport)
- Look in the "basExport_TransferSpreadsheet" module for the relevant code.
- ExportToExcel.mdb ( intermediate )
This sample demonstrates how to export data from a database using the TransferSpreadsheet method, but have the data populate a formatted spreadsheet. The trick here is to export the data to a NEW tab in the Excel workbook and link the fields from the new tab into the formatted spreadsheet.
- ExportToExcelCharts.mdb ( intermediate )
Sample with Documentation. This sample demonstrates how to export data from a database using the TransferSpreadsheet method, but have the data populate a Chart. The trick here is to export the data to a NEW tab in the Excel workbook and link the fields from the new tab into the chart.
- ExpressionEvaluation.mdb ( intermediate )
This form illustrates how to make a pop-up dialog to calculate values to put into a field on a form.
- FlatFileDemo.mdb ( beginner )
This example illustrates some of the difficulties inherent in bad (non-normalized) database design and how they can be corrected. It is not a formal tutorial on Normalization, rather it is a series of examples which allow you to demonstrate the kind of trouble that a non-normalized can produce. I use this example in my classes as an introduction to why you would want to normalize a database design.
- FormSubform.mdb ( beginner )
This form illustrates how to use Domain functions to do a variety of tasks in a Form/Subform situation.
- GetPathFileName.mdb ( intermediate )
This form shows how to extract just the Path or just the File name from the db.Name property.
- Greenbar.mdb ( beginner )
This sample illustrates how to make your report a "greenbar" report, that is one that has alternating lines of color. Check behind the individual reports for the relevant code.
- HasContinued.mdb ( intermediate )
This example illustrates two methods of how to work around the 'HasContinued' bug, so that you can get a 'Continued' status for group headers within a report.
- ImplementingM2MRelationship.mdb ( beginner )
This example illustrates two different methods of implementing in a form a Many-to-Many relationship that has been resolved by a linking table.
- ImportHTML.mdb ( intermediate )
This sample illustrates how to use the LineInput statement to import text from a text file in an extremely unconventional format. The file is an HTML file, and the code searchs for the HTML tags to find specific information and puts that in a field.
- ImportLineInput.mdb ( intermediate )
This sample illustrates how to use the LineInput statement to import text from a text file with a mixed format. Each line of the file is a separate record, but is delimited in a variety of ways.
- ImportSpreadsheet.mdb ( intermediate )
This sample illustrates 3 things: 1) How to back up a database using the Compact Method, 2) Create a native Access 2000 table from a linked Excel table 3) Import data to an existing table.
- ImportToTempDatabase.mdb ( intermediate )
This illustrates how to programmatically create a database to hold a temp table for updating.
- ImproveFormPerformance.mdb ( intermediate )
One way to improve the performance of a form that is bound to a LARGE dataset is to split the data into smaller chunks. This form uses the "Phonebook" method to do that. Click one of the 27 buttons at the top and the form will show you only those records in the table that start with the corresponding letter.
- OpenArgs.mdb ( intermediate )
This application illustrates how to use OpenArgs to solve a variety of problems.
- OrderListBox.mdb ( intermediate )
This sample shows how to make a listbox reorder by clicking on the column header. It also shows how to use the same button to sort ASC or DESC
- Ordinals.mdb ( intermediate )
Ordinals are ordered numbers: 1st, 2nd, 3rd, 4th,...etc. This function shows how to add the correct suffix to any positive integer.
- "Other"Problem.mdb ( advanced )
This example shows one method of handling the situation where the user wants a combo box to pick from, but also wants to have an "Other" category where they can add free-text qualifying the "Other".
- OutputText.mdb ( intermediate )
This illustrates a simple way to precisely format data for text output.
- SaveFileToSpecificDirectory.mdb ( intermediate )
This sample shows how to use the Windows API to bring up the OpenSaveFile dialog box and save a file to a directory of your choosing.
- SeekWithLinkedTable.mdb ( intermediate )
It is usually said that the Seek method cannot be used with a linked table. This is true, it cannot. However, it WILL work if you open the table in the remote database explicitly with the OpenDatabase method. This sample illustrates how to do this.
- SelfJoin.mdb ( intermediate )
Demonstrates a number of ways to use a Self-Join in Access 97.
- SetHyperlink.mdb ( intermediate )
This sample allows the user to double-click on a control, browse to a file, and save the filename in a field in a table.
- SetReferenceToDAO.mdb ( intermediate )
This sample programmatically sets a reference to DAO (Microsoft DAO 3.6 Object Library) if it does not exist.
- SettingLabels.mdb ( intermediate )
This form gets the values of the labels from the Description of the Field in the table.
- SigFigs.mdb ( beginner )
This example illustrates how to round a number to a specified number of significant figures.
- Snapshot.mdb (beginner)
It is usually preferable NOT to store OLE objects like snapshots in the table itself. It causes massive database bloat. The usual solution is to store the snapshots as files on the hard drive and store the file name in the table. This sample demonstrates how to to this.
- SQLDAOLoader.mdb ( advanced )
This sample shows how to modify the structure of a Back-End database using SQL DDL (data definition language) statements and DAO code. This sample does much the same as "SQLLoader.mdb", but does not require text files to hold the SQL.
- SQLLoader.mdb ( advanced )
This sample shows how to modify the structure of a Back-End database using SQL DDL (data definition language) statements. The actual code is found in the Back-end database (SQLLoaderBE.mdb).
- StringStuff.mdb ( intermediate )
This sample illustrates a number of useful string functions. See the individual functions for details.
- SubForm3Levels.mdb ( advanced )
Access does not allow more than two levels of subforms. At times, however, your data model indicates the need for more levels. This is one way to implement a third level through the use of a list box.
- SubformInContinuousForm.mdb ( beginner )
The problem is that Access doesn't allow a subform to be embedded on a Continuous Form. The following is one solution.
- SubformReference.mdb ( Beginner )
This sample illustrates how to reference controls on subforms and subsubForms. It also illustrates how to set the focus to these controls.
- SubQuery.mdb ( beginner )
This sample illustrates how to use a Sub Query to return the Maximum value of a group and the values of the other fields associated with it.
- SubQueryInFROM.mdb ( beginner )
Demonstrates how to use a subquery in the FROM clause of a query.
- SynchronizedSubforms.mdb (beginner)
This sample illustrates how to keep two subforms synchronized with each other on a main form. The code that accomplishes this is behind the two subforms.
- YearsMonthsDays.mdb ( intermediate )
A variety of functions created by different developer's to calculate the difference between two dates, which can also be used for Age Calculations. Some work in some situations and not in others. You'll have to decide which is best.
- Zip97.mdb ( intermediate )This sample was created before the advent of WinZip in an attempt to automate the compression process. It uses a DOS version of PKZIP an Zip2Exe. It will also create an self-extracting zip file.