Example 4: DISPLAY ARRAY with structured array
Database table definition:
CREATE TABLE items
(
it_num INTEGER NOT NULL PRIMARY KEY,
it_code CHAR(5) NOT NULL UNIQUE,
it_desc VARCHAR(200) NOT NULL
);
INSERT INTO items VALUES ( 432, "XB345", "Core piece AAC" );
INSERT INTO items VALUES ( 832, "AF445", "Left wheel 2cm" );
INSERT INTO items VALUES ( 833, "AF446", "Right wheel 2cm" );
INSERT INTO items VALUES ( 512, "EE111", "Top cover 123cm" );
INSERT INTO items VALUES ( 513, "EE121", "Top cover 50cm" );
The "shop.sch" schema file:
items^it_num^258^4^1^
items^it_code^256^5^2^
items^it_desc^269^200^3^
Form definition file "itemlist.per":
SCHEMA shop
LAYOUT
TABLE
{
Code Description
[c1 |c2 ]
[c1 |c2 ]
[c1 |c2 ]
}
END
END
TABLES
items
END
ATTRIBUTES
PHANTOM items.it_num;
c1 = items.it_code, IMAGECOLUMN=it_image;
c2 = items.it_desc;
PHANTOM FORMONLY.it_image;
PHANTOM FORMONLY.it_count;
END
INSTRUCTIONS
SCREEN RECORD sr
(
items.it_num,
items.it_code,
items.it_desc,
FORMONLY.it_image,
FORMONLY.it_count
);
END
Program source code:
Note: The
a_items
array is defined with an item_data
sub-record that is defined for a database table.SCHEMA shop
DEFINE a_items DYNAMIC ARRAY OF RECORD
item_data RECORD LIKE items.*,
it_image STRING,
it_count INTEGER
END RECORD
MAIN
DEFINE x INTEGER
DATABASE test1
OPEN FORM f1 FROM "itemlist"
DISPLAY FORM f1
DECLARE c1 CURSOR FOR
SELECT * FROM items ORDER BY it_code
LET x=1
FOREACH c1 INTO a_items[x].item_data.*
LET a_items[x].it_image = "smiley"
LET a_items[x].it_count = x * 5
LET x=x+1
END FOREACH
CALL a_items.deleteElement(x)
DISPLAY ARRAY a_items TO sr.* ATTRIBUTES(UNBUFFERED)
BEFORE ROW
MESSAGE SFMT("Item count: %1",a_items[arr_curr()].it_count)
END DISPLAY
END MAIN