====== Concept ======
As the need for users to have applications (as well as SQL stored procedures and triggers) that modify Control data, it has become necessary to have a mechanism to notify Control of records that have changed.
To handle this, Chapi now monitors the data for refresh notifications.
===== Stored Procedures =====
There are SQL stored procedures in the Control data for adding records to the refresh monitor queue.
To update a single record, use the stored procedure called sp_RefreshRecord.
Its parameters are:
||~ Parameter Name ||~ Data Type ||~ Required? ||
|| @ID || INT || Yes ||
|| @ClassTypeID || INT || Yes ||
|| @SeqID || INT || No. The default is -1 ||
|| @IsDeleted || BIT || No. The default is 0 ||
To update a multiple records at one time, use the stored procedure called sp_RefreshRecords. \\ **Warning:** sp_RefreshRecords is not available if you are using SQL Server 2005.
It has a single table parameter of type RefreshRecordsTableType. RefreshRecordsTableType has the following fields:
||~ Field Name ||~ Data Type ||~ Notes ||
|| ID || INT || PRIMARY KEY ||
|| ClassTypeID || INT || NOT NULL ||
|| SeqID || INT || ||
|| IsDeleted || BIT || ||
==== Examples ====
**sp_RefreshRecord**
-- This psuedo example would refresh the last order in the database.
-- The ClassTypeID for orders is 10000
DECLARE @ID INT = ( SELECT MAX(ID) FROM TransHeader WHERE TransactionType IN (1,6) );
EXEC sp_RefreshRecord @ID, 10000;
**sp_RefreshRecords**
-- This psuedo example would refresh the last 10 odd numbered orders in the database.
-- The ClassTypeID for orders is 10000
DECLARE @t RefreshRecordsTableType
;
INSERT INTO @t (ID, ClassTypeID)
SELECT TOP 10 ID, 10000
FROM TransHeader
WHERE (ID % 2) <> 0
ORDER BY ID DESC
;
EXEC sp_RefreshRecords @t
==== Notes ====
* If SeqID is -1 (not set), then Control will force a refresh of all objects with the given ID and ClassTypeID. Otherwise, only objects that are out of sync will be refreshed.
* Chapi processes changes once every 60 seconds. Hence, it may take up to a minute for the refresh to be seen on all clients.
* Post multiple updates on the same record with different sequence IDs will only generate one refresh (which is all that is needed).
==== Source ====
Contributor: Greg Schroeder, Cyrious
Date:06/04/2015
Version: Control 5.6T