Manage() provides data management functionality for your application and/or process.
Below is the code for Manage():
void TForm1::Manage()
{
AnsiString ordernum;
AnsiString custnum;
AnsiString name;
AnsiString msg;
int quantity;
AnsiString itemnum;
double price;
double total_price;
int counter;
counter = 0;
StringGrid1->Cells[0][0] = "Customer";
StringGrid1->Cells[1][counter] = "Amount";
// populate the tables with data
Add_OrderList_Records();
Add_OrderItem_Records();
Add_ItemMaster_Records();
Add_CustomerMaster_Records();
/*========================================================
Perform a query:
List Customer name and total dollar amount per order
name amount
@@@@@@@@@@@@@ $xx.xx
FOR each order in the ORDERLIST
Fetch ordernum
Fetch custnum
Fetch name from CUSTMAST based on custnum index
FOR each ordernum in ORDERITEM
Fetch quantity
Fetch itemnum
Fetch item price from ITEMMASTER
NEXT
NEXT
========================================================*/
// read all records of ORDERLIST
if (TabOrderList->ActiveRecord->First())
do
{
// fetch order number
TabOrderList->ActiveRecord->GetFieldAsString(2, ordernum);
// fetch customer number
TabOrderList->ActiveRecord->GetFieldAsString(3, custnum);
// fetch name from CUSTMAST based on customer number
TabCustMast->ActiveRecord->Clear();
TabCustMast->ActiveRecord->SetFieldAsString(0, custnum);
if (!TabCustMast->ActiveRecord->Find(CTFIND_EQ))
{
msg = "Customer number " + custnum + " not found";
Application->MessageBox(msg.c_str(), "Record not found");
return;
}
TabCustMast->ActiveRecord->GetFieldAsString(4, name);
// create a recordset of items applicable to this ordernum
TabOrderItem->ActiveRecord->Clear();
TabOrderItem->ActiveRecord->SetFieldAsString(0, ordernum);
TabOrderItem->ActiveRecord->RecordSetOn(7);
// scan all records in ORDERITEMS
total_price = 0;
if (TabOrderItem->ActiveRecord->First())
do
{
// fetch quantity
quantity = TabOrderItem->ActiveRecord->GetFieldAsSigned(2);
// fetch item number
TabOrderItem->ActiveRecord->GetFieldAsString(3, itemnum);
// Fetch item price from ITEMMASTER
TabItemMast->ActiveRecord->Clear();
TabItemMast->ActiveRecord->SetFieldAsString(2, itemnum);
if (!TabItemMast->ActiveRecord->Find(CTFIND_EQ))
{
msg = "Item number " + itemnum + " not found";
Application->MessageBox(msg.c_str(), "Record not found");
}
price = TabItemMast->ActiveRecord->GetFieldAsFloat(1);
total_price = total_price + (price * quantity);
}
while (TabOrderItem->ActiveRecord->Next());
TabOrderItem->ActiveRecord->RecordSetOff();
// place results in the grid
if (counter > 0)
StringGrid1->RowCount = StringGrid1->RowCount + 1;
counter += 1;
StringGrid1->Cells[0][counter] = name;
StringGrid1->Cells[1][counter] = "$" + FloatToStr(total_price);
}
while (TabOrderList->ActiveRecord->Next());
}
//---------------------------------------------------------------------------
void TForm1::Add_OrderList_Records()
{
int counter;
AnsiString OldFormat = ShortDateFormat;
try
{
Delete_Records(TabOrderList);
for (counter=0; counter < 2; counter++)
{
// clear the record buffer
TabOrderList->ActiveRecord->Clear();
// populate the record buffer
OldFormat = ShortDateFormat;
ShortDateFormat = "mm/dd/yyyy";
TabOrderList->ActiveRecord->SetFieldAsDate(0, StrToDate(ol_data[counter][0]));
TabOrderList->ActiveRecord->SetFieldAsDate(1, StrToDate(ol_data[counter][1]));
ShortDateFormat = OldFormat;
TabOrderList->ActiveRecord->SetFieldAsString(2, AnsiString(ol_data[counter][2]));
TabOrderList->ActiveRecord->SetFieldAsString(3, AnsiString(ol_data[counter][3]));
// write the record
TabOrderList->ActiveRecord->Write();
}
}
catch (ECtError& E)
{
Application->ShowException(&E);
}
}
//---------------------------------------------------------------------------
void TForm1::Add_OrderItem_Records()
{
int counter;
try
{
Delete_Records(TabOrderItem);
for (counter = 0; counter <4; counter++)
{
// clear the record buffer
TabOrderItem->ActiveRecord->Clear();
// populate the record buffer
TabOrderItem->ActiveRecord->SetFieldAsString(0, AnsiString(oi_data[counter][0]));
TabOrderItem->ActiveRecord->SetFieldAsSigned(1, StrToInt(oi_data[counter][1]));
TabOrderItem->ActiveRecord->SetFieldAsSigned(2, StrToInt(oi_data[counter][2]));
TabOrderItem->ActiveRecord->SetFieldAsString(3, AnsiString(oi_data[counter][3]));
// write the record
TabOrderItem->ActiveRecord->Write();
}
}
catch (ECtError& E)
{
Application->ShowException(&E);
}
}
//---------------------------------------------------------------------------
void TForm1::Add_ItemMaster_Records()
{
int counter;
try
{
Delete_Records(TabItemMast);
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();
}
}
catch (ECtError& E)
{
Application->ShowException(&E);
}
}
//---------------------------------------------------------------------------
void TForm1::Add_CustomerMaster_Records()
{
int counter = 0;
try
{
Delete_Records(TabCustMast);
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();
}
}
catch (ECtError& E)
{
Application->ShowException(&E);
}
}
//---------------------------------------------------------------------------
void TForm1::Delete_Records(TCtTable* ATable)
{
try
{
while (ATable->ActiveRecord->First())
ATable->ActiveRecord->Delete();
}
catch (ECtError& E)
{
Application->ShowException(&E);
}
}