You can find the MSAccess sample project at:
- Start | Programs | Embarcadero RAD Studio Alexandria | Samples and then navigate to:
Object Pascal\Database\FireDAC\Samples\Getting Started\MSAccess
- Subversion Repository:
- You can find Delphi code samples in GitHub Repositories. Search by name into the samples repositories according to your RAD Studio version.
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
- 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.
|File in Delphi||Contains|
The project itself.
The main form.
The sample implements the following features:
Creating 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.
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.
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]);
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.
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;
- Defining Connection (FireDAC)
- Connect to Microsoft Access Database (FireDAC)
- Master-Detail Relationship (M/D)
- Mobile Tutorial: Using FireDAC and SQLite
- MS Access Questions (FireDAC)