Product Documentation

VCL/CLX Developers Guide

Previous Topic

Next Topic

Manage

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);

}

}

TOCIndex