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

{

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

}

}

TOCIndex