FireDAC.MSAccess Sample
This sample demonstrates how to use FireDAC to work with MS Access databases.
Contents
Location
You can find the MSAccess sample project at:
- Start | Programs | Embarcadero RAD Studio 10 Seattle | Samples and then navigate to:
Object Pascal\Database\FireDAC\Samples\Getting Started\MSAccess
- Subversion Repository:
Description
The MSAccess getting started sample shows how to use FireDAC with MS Access databases. This application sample provides the following features to the user:
- Temporary connection definition at run time.
- Master-details relationship between datasets using TFDQuery.
- Management of MS Access databases, such as: creating and compacting a database.
How to Use the Sample
- Navigate to the location given above and open
GettingStarted.dproj
. - Press F9 or choose Run > Run.
- Click on the Connection combo box and select
<Open database…>
. Open the following database: C:\Users\Public\Documents\Embarcadero\Studio\17.0\Samples\data\FDDemo.mdb. - Interact with the sample.
Files
File in Delphi | Contains |
---|---|
|
The project itself. |
|
The main form. |
Implementation
The sample implements the following features:
Creating Temporary Connection Definition
The simplest way to configure connection to MS Access database at run time is to build a temporary connection definition:
with dbMain do begin
Close;
// create temporary connection definition
with Params do begin
Clear;
Add('DriverID=MSAcc');
Add('Database=x:\path_to_db\db.fdb');
end;
Open;
end;
In the sample, the temporary definition is created when the <Open database…>
item is selected in the Connection combo box.
Master Details
In the demo database, the Categories and Products tables have one-to-many relation by CategoryID
field. The qryCategories.SQL property is set up as follows:
select * from Categories
In addition, the qryProducts.SQL property is set up as follows:
select * from Products
where CategoryID = :CategoryID
Finally, the qryProducts.MasterSource property is set to dsCategories
, while the MasterFields property is set to CategoryID
. This creates a master-details relationship between the datasets.
Executing Queries
Simple queries execution is demonstrated via ExecSQL method of TFDConnection.
Inserting a record providing parameters of various types:
dbMain.ExecSQL('insert into Categories(CategoryName, Description, Picture) ' +
'values(:N, :D, :P)', ['New category', 'New descr', $0334]);
Updating records:
dbMain.ExecSQL('update Products set UnitPrice = UnitPrice * :P1 + :P2 ' +
'where ProductID < 3', [Random(5), Random(3)]);
Deleting a record:
dbMain.ExecSQL('delete from Categories where CategoryName like :N', ['New category']);
Getting a scalar value from the database:
iID := dbMain.ExecSQLScalar('select MAX(CategoryID) from Categories');
Management of MS Access database
The management of databases, such as: creating, dropping, compacting/repairing, and setting a password is done using TFDMSAccessService component.
This demo demonstrates how to create and compact the user database:
with accService do begin
Password := 'p@ssword';
Database := 'x:\path_to_database\db.mdb';
CreateDB;
end;
…
with accService do begin
Password := 'p@ssword';
Database := 'x:\path_to_database\db.mdb';
Compact;
end;
Uses
See Also
- Defining Connection (FireDAC)
- Connect to Microsoft Access Database (FireDAC)
- Master-Detail Relationship (FireDAC)
- Mobile Tutorial: Using FireDAC and SQLite
- MS Access Questions (FireDAC)
Samples
- FireDAC InterBase sample
- FireDAC MS SQL sample
- FireDAC MySQL sample
- FireDAC SQLite sample
- FireDAC Firebird sample