You've already forked lazarus-ccr
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@6512 8e941d3f-bd1b-0410-a28a-d453659cc2b4
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.