Previous Topic

Next Topic

Define

The Define() step is where specific data definitions are established by your application and/or process. This involves defining columns/fields and creating the tables/files with optional indices.

Below is the code for Define():

procedure TForm1.Define();
begin
    // open or create the tables
    Create_CustomerMaster_Table;
    Create_CustomerOrders_Table;
    Create_OrderItems_Table;
    Create_ItemMaster_Table;
end;

procedure TForm1.Create_CustomerMaster_Table;
begin
    try
        SQLConnection1.StartTransaction(td);
        // create table
        SQLConnection1.ExecuteDirect('CREATE TABLE custmast (' +
            'cm_custnumb CHAR(4),' +
            'cm_custzipc CHAR(9),' +
            'cm_custstat CHAR(2),' +
            'cm_custrtng CHAR(1),' +
            'cm_custname VARCHAR(47),' +
            'cm_custaddr VARCHAR(47),' +
            'cm_custcity VARCHAR(47))');
        SQLConnection1.Commit(td);
    except on E: Exception do Handle_Exception(E);
    end;

    try
        SQLConnection1.StartTransaction(td);
        SQLConnection1.ExecuteDirect('CREATE UNIQUE INDEX cm_custnumb_idx ON custmast (cm_custnumb)');
        SQLConnection1.Commit(td);
    except on E: Exception do Handle_Exception(E);
    end;
end;


procedure TForm1.Create_CustomerOrders_Table;
begin
    try
        SQLConnection1.StartTransaction(td);
        // create table
        SQLConnection1.ExecuteDirect('CREATE TABLE custordr (' +
            'co_ordrdate DATE,' +
            'co_promdate DATE,' +
            'co_ordrnumb CHAR(6),' +
            'co_custnumb CHAR(4))');
        SQLConnection1.Commit(td);
    except on E: Exception do Handle_Exception(E);
    end;

    try
        SQLConnection1.StartTransaction(td);
        SQLConnection1.ExecuteDirect('CREATE UNIQUE INDEX co_ordrnumb_idx ON custordr (co_ordrnumb)');
        SQLConnection1.ExecuteDirect('CREATE INDEX co_custnumb_idx ON custordr (co_custnumb)');
        SQLConnection1.Commit(td);
    except on E: Exception do Handle_Exception(E);
    end;
end;


procedure TForm1.Create_OrderItems_Table;
begin
    try
        SQLConnection1.StartTransaction(td);
        // create table
        SQLConnection1.ExecuteDirect('CREATE TABLE ordritem (' +
            'oi_sequnumb SMALLINT,' +
            'oi_quantity SMALLINT,' +
            'oi_ordrnumb CHAR(6),' +
            'oi_itemnumb CHAR(5))');
        SQLConnection1.Commit(td);
    except on E: Exception do Handle_Exception(E);
    end;

    try
        SQLConnection1.StartTransaction(td);
        SQLConnection1.ExecuteDirect('CREATE UNIQUE INDEX oi_ordrnumb_idx ON ordritem (oi_ordrnumb, oi_sequnumb)');
        SQLConnection1.ExecuteDirect('CREATE INDEX oi_itemnumb_idx ON ordritem (oi_itemnumb)');
        SQLConnection1.Commit(td);
    except on E: Exception do Handle_Exception(E);
    end;
end;

procedure TForm1.Create_ItemMaster_Table;
begin
    try
        SQLConnection1.StartTransaction(td);
        // create table
        SQLConnection1.ExecuteDirect('CREATE TABLE itemmast (' +
            'im_itemwght INTEGER,' +
            'im_itempric MONEY,' +
            'im_itemnumb CHAR(5),' +
            'im_itemdesc VARCHAR(47))');
        SQLConnection1.Commit(td);
    except on E: Exception do Handle_Exception(E);
    end;

    try
        SQLConnection1.StartTransaction(td);
        SQLConnection1.ExecuteDirect('CREATE INDEX im_itemnumb_idx ON itemmast (im_itemnumb)');
        SQLConnection1.Commit(td);
    except on E: Exception do Handle_Exception(E);
    end;
end;