
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@5035 8e941d3f-bd1b-0410-a28a-d453659cc2b4
105 lines
3.4 KiB
Plaintext
105 lines
3.4 KiB
Plaintext
This demo shows how a TVpFlexDatastore can link to an Access database using
|
|
ODBC.
|
|
|
|
|
|
Step-by-step instructions for creating a new application
|
|
--------------------------------------------------------
|
|
|
|
- If a suitable Access database is not available from somewhere else
|
|
create an empty Access database containing the VisualPlanit tables and fields.
|
|
The easiest way to do this is by means of the CreateAccessDB application in
|
|
the folder "tools". Use extension .mdb to create an old Access 97/2000 file,
|
|
or use extension .accdb for a new Access 2007+ file.
|
|
|
|
- Create a new form.
|
|
|
|
- Add a TVpFlexDatastore, a TVpControlLink and the visual planner components
|
|
needed.
|
|
|
|
- Add an TODBConnection. Add a TSQLTransationSet
|
|
|
|
- Set these properties of the ODBCConnection:
|
|
- "Driver" ---> "Microsoft Access Driver (*.mdb, *.accdb)"
|
|
- "Params" ---> Add "DBQ=full/path/to/access/file"
|
|
Note: Make sure to use the full path in Params, otherwise the fieldmapper
|
|
in one of the next steps will not find the database.
|
|
- "Transaction --> instance of the SQLTransaction.
|
|
|
|
- Add four TSQLQuery components and set these properties
|
|
- "Database" ---> instance of the ODBCConnection
|
|
- "Options" --> add sqoAutoApplyUpdates, sqoAutoCommit and sqoKeepOpenOnCommit
|
|
- "UsePrimaryKeyAsKey" --> false (VERY IMPORTANT FOR ACCESS FILES!)
|
|
|
|
- Enter these SQL for the queries where <tablename> must be replaced by
|
|
Resources, Contacts, Events and Tasks.
|
|
|
|
SELECT * FROM <tablename>
|
|
|
|
- For the Resources query add this UpdateSQL:
|
|
|
|
UPDATE
|
|
Resources
|
|
SET
|
|
Description = :Description,
|
|
Notes = :Notes,
|
|
ResourceActive = :ResourceActive,
|
|
ImageIndex = :ImageIndex
|
|
WHERE
|
|
ResourceID = :ResourceID
|
|
|
|
- Similarly, add UpdateSQL instructions for the Events, Contacts, and Tasks tables.
|
|
Make sure to include all database fields (except for the AutoInc fields).
|
|
See the demo application.
|
|
|
|
- Add this text to the DeleteSQL property of the Resources SQLDataset
|
|
|
|
DELETE * FROM Resources
|
|
WHERE ResourceID = :ResourceID.
|
|
|
|
- This is the DeleteSQL needed for the Events dataset:
|
|
|
|
DELETE * FROM Events
|
|
WHERE RecordID = :RecordID
|
|
|
|
- Repeat accordingly with the Contacts and Rasks datasets.
|
|
|
|
- Add four TDatasource components. Link each one of them to a TSQLDataset.
|
|
|
|
- Link the datasource components to the matching Datasources of the
|
|
VpFlexDatastore.
|
|
|
|
- In OnCreate of the form set
|
|
VpFlexDatastore.Connected := true
|
|
ODBConnection.Connected := true
|
|
SQLTransaction.Active := true
|
|
|
|
- In OnDestroy set
|
|
ODBCConnection.Connected := false
|
|
|
|
- Double-click on the VpFlexDatastore in Form1 to open the field mapper.
|
|
|
|
- Select "Resources" in the combobox. Click a database field in the left listbox
|
|
and click its corresponding planner field in the right listbox. Click add to
|
|
store this mapping. Repeat with all database fields.
|
|
|
|
- Or, if all database fields have the same name as the corresponding planner
|
|
fields, simply click "Add all" to establish a mapping for all equally names
|
|
fields.
|
|
|
|
- Note: the sample database does not support the User-defined fields of the
|
|
planner. Therefore, these fields will be left without a matching database
|
|
field.
|
|
|
|
- Repeat with the Events, Contacts and Tasks tables.
|
|
|
|
- Close the field mapper.
|
|
|
|
- After the field mappings have been established the absolute database path can
|
|
be removed from the Params of the ODBCConnection and replaced by a relative
|
|
path or can be set at runtime.
|
|
|
|
- Done.
|
|
|
|
|
|
|