You can find the MSAccess sample project at:
- Start | Programs | Appmethod 1.16 | Samples and then navigate to:
Object Pascal\Database\FireDAC\Samples\Getting Started\MSAccess
- Subversion Repository:
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
- Select the iOS platform in the Project Manager.
- 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 Object Pascal||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 (FireDAC)
- Mobile Tutorial: Using FireDAC and SQLite
- MS Access Questions (FireDAC)