105 lines
4.8 KiB
Plaintext
105 lines
4.8 KiB
Plaintext
Compile subroutine Copy_Backlog_Records_To_SQL(VOID)
|
|
#pragma precomp SRP_PreCompiler
|
|
|
|
/*****************************************************************************\
|
|
This is a utility function. For each record found in SQL_BACKLOG, it makes
|
|
sure the identified record is copied to SQL. Then the backlog record is
|
|
removed.
|
|
|
|
History
|
|
-------
|
|
08/10/2010 KRF Original Programmer
|
|
\*****************************************************************************/
|
|
|
|
$Insert APP_INSERTS
|
|
|
|
Declare subroutine Copy_Record_To_SQL, Delete_Record_From_SQL, SRP_TcpClient, Copy_Pending_Records_To_Sql
|
|
Declare function GetTickCount, Database_Services, SRP_TcpClient, Datetime, Environment_Services
|
|
|
|
hSysLists = Database_Services('GetTableHandle', 'SYSLISTS')
|
|
Lock hSysLists, 'Copy_Backlog_Records_To_SQL' then
|
|
|
|
Copy_Pending_Records_To_Sql()
|
|
|
|
CurrDtm = Datetime()
|
|
TablesToSkip = Database_Services('ReadDataRow', 'APP_INFO', 'SQL_TABLES_TO_SKIP')
|
|
NonCriticalTables = Database_Services('ReadDataRow', 'APP_INFO', 'NONCRITICAL_SQL_TABLES')
|
|
|
|
Open "SQL_PENDING" to pTable then
|
|
|
|
Open "SQL_BACKLOG" to hTable then
|
|
ClearSelect
|
|
Select hTable
|
|
Done = 0
|
|
Loop
|
|
ReadNext Key else Done = 1
|
|
Command = ''
|
|
Skip = False$
|
|
Until Done
|
|
Table = Key[1, "*"]
|
|
Locate Table in TablesToSkip by "AL" using "," setting ListPos then
|
|
Delete hTable, Key else null
|
|
end else
|
|
Locate Table in NonCriticalTables using @FM setting Dummy then
|
|
ID = Key[Col2() + 1, Len(Key)]
|
|
|
|
Read Dummy From pTable, Key then
|
|
Skip = True$
|
|
end
|
|
|
|
If Skip EQ False$ then
|
|
Begin Case
|
|
Case ID[-7, 7] EQ "*DELETE"
|
|
ID[-7, 7] = ""
|
|
Command := 'RUN DELETE_RECORD_FROM_SQL ':Quote(Table):', ':Quote(ID):', 1, ':Quote(Key)
|
|
Write CurrDtm to pTable, Key then Delete hTable, Key
|
|
Case ID[-6, 6] EQ "*WRITE"
|
|
ID[-6, 6] = ""
|
|
Command := 'RUN COPY_RECORD_TO_SQL ':Quote(Table):', ':Quote(ID):', 1, ':Quote(Key)
|
|
Write CurrDtm to pTable, Key then Delete hTable, Key
|
|
End Case
|
|
end else
|
|
// This record is already being processed and we don't need to process it multiple times.
|
|
Delete hTable, Key else null
|
|
end
|
|
end else
|
|
TempKey = Key
|
|
TempKey[1, Len(Table) + 1] = ''
|
|
TransTime = TempKey[-1, 'B*']
|
|
TempKey[-1, Neg(Len(TransTime) + 1)] = ''
|
|
TransDate = TempKey[-1, 'B*']
|
|
TempKey[-1, Neg(Len(TransDate) + 1)] = ''
|
|
Process = TempKey[-1, 'B*']
|
|
TempKey[-1, Neg(Len(Process) + 1)] = ''
|
|
ID = TempKey
|
|
If Process EQ 'DELETE' then
|
|
pKey = Key
|
|
Command := 'RUN DELETE_RECORD_FROM_SQL ':Quote(Table):', ':Quote(ID):', 1, ':Quote(pKey)
|
|
Write CurrDtm to pTable, pKey then Delete hTable, Key
|
|
end else
|
|
pKey = Key
|
|
Command := 'RUN COPY_RECORD_TO_SQL ':Quote(Table):', ':Quote(ID):', 1, ':Quote(pKey)
|
|
Write CurrDtm to pTable, pKey then Delete hTable, Key
|
|
end
|
|
end
|
|
|
|
If Skip EQ False$ then
|
|
TcpClientHandle = 0
|
|
ServerIP = Environment_Services('GetApplicationRootIP')
|
|
Convert '\' to '' in ServerIP
|
|
If SRP_TcpClient(TcpClientHandle, 'CONNECT', ServerIP, '20779') then
|
|
SRP_TcpClient(TcpClientHandle, 'SEND_SES', Command)
|
|
SRP_TcpClient(TcpClientHandle, 'CLOSE_SES')
|
|
end
|
|
end
|
|
end
|
|
Repeat
|
|
end
|
|
end
|
|
Unlock hSysLists, 'Copy_Backlog_Records_To_SQL' else Null
|
|
end
|
|
|
|
Return
|
|
|
|
|