// read child classes and their props; build query and get children
// get all child classes
__CREATE_QUERY(
"SELECT child_class_name FROM co_%s_%s WHERE tree_name='%s' AND parent_class_name='%s'",
par_area, par_class, tree_name, parent_class_name)
__SQL_GET_VRESULT(classes_corec)
// keep it!
nTuples = cor_GetTupleCount(cnx, classes_corec);
out_corec = cor_CreateEmpty(cnx);
// for each child class name
for (n=0; n<nTuples; n++) {
child_class_name = cor_GetValue(cnx, classes_corec,
n, 0);
// get parent (related) prop name and child prop name
__CREATE_QUERY(
"SELECT parent_prop_name, child_prop_name FROM co_%s_%s "
"WHERE tree_name='%s' AND parent_class_name='%s' "
"AND child_class_name='%s'",
par_area, par_class,
tree_name, parent_class_name,
child_class_name)
__SQL_GET_RESULT
parent_prop_name = cor_GetCopyOfValue(cnx, corec,
0, 0);
child_prop_name = cor_GetCopyOfValue(cnx, corec,
0, 1);
__CLEAR_RESULT
if (*parent_prop_name) // not empty - select children
{
// get parent related prop value - just getProp
__SQL_GET_STRING(parent_prop_val,
"SELECT \"%s\" FROM co_%s_%s WHERE id=%d",
parent_prop_name, par_area, parent_class_name, parent_id)
// get related children from class: child_class_name
__CREATE_QUERY(
"SELECT id, '%s' as class, name FROM cov_%s_%s WHERE \"%s\"='%s' ORDER BY name",
child_class_name, par_area, child_class_name, child_prop_name, parent_prop_val)
}
else // empty parent_prop_name: get all children from their class
{
__CREATE_QUERY(
"SELECT id, '%s' as class, name FROM cov_%s_%s ORDER BY name",
child_class_name, par_area, child_class_name)
}
/* too much copying: */
__SQL_GET_RESULT
cor_AppendRecordset(cnx, out_corec, corec);
__CLEAR_RESULT
/* Should be more efficient, but Why out_corec is empty?
                __SQL_APPEND_VRESULT(out_corec)
                */
} // for each child_class_name
cor_Clear(cnx, classes_corec);
if (!cor_IsEmpty(cnx, out_corec)) {
__CREATE_JS_FROM(out_corec)
}
__RETURN_RECORDSET(out_corec)