Getting and storing the data from a DataWindow data expression – PB Docs 126

Getting and storing the data from a DataWindow data expression

A DataWindow data expression can return a large amount of

Data structures for data

Single row and column

When your data expression refers to a single row and column,
you can assign the data to a variable whose data matches the column’s
datatype. When the expression refers to a single column but can
refer to multiple rows, you must specify an array of the appropriate

More than one column

When the expression refers to more than one column, you can
get or set the data with a structure or user object. When you create
the definition, you must assign datatypes to the fields (in a structure)
or instance variables (in a user object) that match the datatypes
of the columns. When your expression refers to multiple rows, you
get an array of the structure or user object.

Likewise, if you want to set data in the DataWindow control,
you will set up the data in structures or user objects whose elements
match the columns referred to in the expression. An array of those
structures or user objects will provide data for multiple rows.


For matching purposes, the datatypes should be appropriate
to the data—for example, any numeric datatype matches any
other numeric type.

Examples of data structures

The following table presents some examples of data specified
by an expression and the type of data structures you might define
for storing the data:

Table 4-2: Types of storage for data specified by an expression

Type of selection

Sample data storage

A single item

A single variable of the appropriate

A column of values

An array of the appropriate datatype.

A row

A structure whose elements have datatypes
that match the DataWindow object’s columns.

A user object whose instance variables match the DataWindow
object’s columns.

Selected rows or all rows

An array of the structure or user object
defined for a row.

A block of values

An array of structures or user objects
whose elements or instance variables match the columns included
in the selected range.

Assigning data to arrays

When a data expression is assigned to an array, values are
assigned beginning with array element 1 regardless of the starting
row number. If the array is larger than the number of rows accessed,
elements beyond that number are unchanged. If it is smaller, a variable-size
array will grow to hold the new values. However, a fixed-size array
that is too small for the number of rows will cause an execution

note.png Two ways to instantiate user objects

A user object needs to be instantiated before it is used.

One way is to use the CREATE statement
after you declare the user object. If you declare an array of the
user object, you must use CREATE for each array element.

The second way is to select the Autoinstantiate box for the
user object in the User Object painter. When you declare the user
object in a script, the user object will be automatically instantiated,
like a structure.

Any datatype and data expressions

The actual datatype of a DataWindow data expression is Any,
which allows the compiler to process the expression even though
the final datatype is unknown. When data is accessed at runtime,
you can assign the result to another Any variable or to a variable,
structure, or user object whose datatype matches the real data.


A single value

This example gets a value from column 2, whose datatype is string:

A structure that matches DataWindow columns

In this example, a DataWindow object has four columns:

  • An ID (number)

  • A name (string)

  • A retired status (boolean)

  • A birth date (date)

A structure to hold these values has been defined in the Structure
painter. It is named str_empdata and has four elements
whose datatypes are integer, string, boolean, and date. To store
the values of an expression that accesses some or all the rows,
you need an array of str_empdata structures to hold the

After this example executes, the upper bound of the array
of structures, which is variable-size, is equal to the number of
rows in the DataWindow control.

A user object that matches DataWindow columns

If the preceding example involved a user object instead of
a structure, then a user object defined in the User Object painter,
called uo_empdata, would have four instance variables,
defined in the same order as the DataWindow columns:

Before accessing three rows, three array elements of the user
object have been created (you could use a FOR NEXT loop
for this). The user object was not defined with Autoinstantiate

Document get from Powerbuilder help
Thank you for watching.
Was this article helpful?
Notify of
Inline Feedbacks
View all comments
Would love your thoughts, please comment.x