====== 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