Manage() provides data management functionality for your application and/or process.
Below is the code for Manage():
//---------------------------------------------------------------------------
void TForm1::Manage()
{
int iItems;
int iOrders;
int savePoint;
int counter;
iItems = 0;
iOrders = 0;
counter = 0;
StringGrid1->Cells[0][0] = "Customer Num";
StringGrid1->Cells[1][0] = "Order Num";
StringGrid1->Cells[2][0] = "Item Num";
StringGrid1->Cells[3][0] = "Qty";
// populate the tables with data
Add_ItemMaster_Records();
Add_CustomerMaster_Records();
Delete_Records(TabOrderList);
Delete_Records(TabOrderItem);
// Add Transactions, FOR Each order
for (counter = 0; counter < 3; counter++)
{
CtSession1->BeginTransaction();
// insert items associated with an order
TabOrderList->ActiveRecord->Clear();
// populate the record buffer
ShortDateFormat = "mm/dd/yyyy";
TabOrderList->ActiveRecord->SetFieldAsDate(0, StrToDate(ol_data[iOrders][0]));
TabOrderList->ActiveRecord->SetFieldAsDate(1, StrToDate(ol_data[iOrders][1]));
TabOrderList->ActiveRecord->SetFieldAsString(2, AnsiString(ol_data[iOrders][2]));
TabOrderList->ActiveRecord->SetFieldAsString(3, AnsiString(ol_data[iOrders][3]));
// write the orderlist record
TabOrderList->ActiveRecord->Write();
savePoint = TabOrderItem->SetSavePoint();
// process each orderitem while the ordernum matches
while (strcmp(oi_data[iItems][0],ol_data[iOrders][2]) == 0)
{
TabOrderItem->ActiveRecord->Clear();
// populate the record buffer
TabOrderItem->ActiveRecord->SetFieldAsString(0, AnsiString(oi_data[iItems][0]));
TabOrderItem->ActiveRecord->SetFieldAsSigned(1, StrToInt(oi_data[iItems][1]));
TabOrderItem->ActiveRecord->SetFieldAsSigned(2, StrToInt(oi_data[iItems][2]));
TabOrderItem->ActiveRecord->SetFieldAsString(3, AnsiString(oi_data[iItems][3]));
// write the orderitem record
TabOrderItem->ActiveRecord->Write();
// find the itemnum in table itemmaster
TabItemMast->ActiveRecord->Clear();
TabItemMast->ActiveRecord->SetFieldAsString(2, AnsiString(oi_data[iItems][3]));
if (TabItemMast->ActiveRecord->Find(CTFIND_EQ))
savePoint = TabOrderItem->SetSavePoint();
else
TabOrderItem->RestoreSavePoint(savePoint);
iItems += 1;
// On the last order do not go beyond the end of the items
if (iItems > 6)
break;
}
TabCustMast->ActiveRecord->Clear();
TabCustMast->ActiveRecord->SetFieldAsString(0, AnsiString(ol_data[iOrders][3]));
if (TabCustMast->ActiveRecord->Find(CTFIND_EQ))
CtSession1->CommitTransaction();
else
CtSession1->AbortTransaction();
iOrders += 1;
}
Display_Records();
}
//---------------------------------------------------------------------------
void TForm1::Add_ItemMaster_Records()
{
int counter;
try
{
Delete_Records(TabItemMast);
TabItemMast->ActiveRecord->BeginTransaction();
for (counter = 0; counter < 4; counter++)
{
// clear the record buffer
TabItemMast->ActiveRecord->Clear();
// populate the record buffer
TabItemMast->ActiveRecord->SetFieldAsString(0, AnsiString(im_data[counter][0]));
TabItemMast->ActiveRecord->SetFieldAsString(1, AnsiString(im_data[counter][1]));
TabItemMast->ActiveRecord->SetFieldAsString(2, AnsiString(im_data[counter][2]));
TabItemMast->ActiveRecord->SetFieldAsString(3, AnsiString(im_data[counter][3]));
// write the record
TabItemMast->ActiveRecord->Write();
}
TabItemMast->ActiveRecord->CommitTransaction();
}
catch (ECtError& E)
{
Application->ShowException(&E);
}
}
//---------------------------------------------------------------------------
void TForm1::Add_CustomerMaster_Records()
{
int counter = 0;
try
{
Delete_Records(TabCustMast);
TabCustMast->ActiveRecord->BeginTransaction();
for (counter = 0; counter < 4; counter++)
{
// clear the record buffer
TabCustMast->ActiveRecord->Clear();
// populate the record buffer
TabCustMast->ActiveRecord->SetFieldAsString(0, AnsiString(cm_data[counter][0]));
TabCustMast->ActiveRecord->SetFieldAsString(1, AnsiString(cm_data[counter][1]));
TabCustMast->ActiveRecord->SetFieldAsString(2, AnsiString(cm_data[counter][2]));
TabCustMast->ActiveRecord->SetFieldAsString(3, AnsiString(cm_data[counter][3]));
TabCustMast->ActiveRecord->SetFieldAsString(4, AnsiString(cm_data[counter][4]));
TabCustMast->ActiveRecord->SetFieldAsString(5, AnsiString(cm_data[counter][5]));
TabCustMast->ActiveRecord->SetFieldAsString(6, AnsiString(cm_data[counter][6]));
// write the record
TabCustMast->ActiveRecord->Write();
}
TabCustMast->ActiveRecord->CommitTransaction();
}
catch (ECtError& E)
{
Application->ShowException(&E);
}
}
//---------------------------------------------------------------------------
void TForm1::Delete_Records(TCtTable* ATable)
{
try
{
ATable->ActiveRecord->BeginTransaction();
while (ATable->ActiveRecord->First())
ATable->ActiveRecord->Delete();
ATable->ActiveRecord->CommitTransaction();
}
catch (ECtError& E)
{
Application->ShowException(&E);
}
}
//---------------------------------------------------------------------------
void TForm1::Display_Records()
{
String itemnum;
String custnum;
String ordernum;
int counter;
int quantity;
boolean bOrderList;
boolean bOrderItem;
counter = 1;
try
{
bOrderList = TabOrderList->ActiveRecord->First();
while (bOrderList)
{
TabOrderList->ActiveRecord->GetFieldAsString(3, custnum);
TabOrderList->ActiveRecord->GetFieldAsString(2, ordernum);
TabOrderItem->ActiveRecord->SetFieldAsString(0, ordernum);
TabOrderItem->ActiveRecord->RecordSetOn(7);
bOrderItem = TabOrderItem->ActiveRecord->First();
while (bOrderItem)
{
TabOrderItem->ActiveRecord->GetFieldAsString(3, itemnum);
quantity = TabOrderItem->ActiveRecord->GetFieldAsSigned(2);
StringGrid1->Cells[0][counter] = custnum;
StringGrid1->Cells[1][counter] = ordernum;
StringGrid1->Cells[2][counter] = itemnum;
StringGrid1->Cells[3][counter] = IntToStr(quantity);
StringGrid1->RowCount += 1;
counter += 1;
bOrderItem = TabOrderItem->ActiveRecord->Next();
}
bOrderList = TabOrderList->ActiveRecord->Next();
}
}
catch (ECtError& E)
{
Application->ShowException(&E);
}
}