Database visualization with variable quantity of columns

This forum is for eXpress++ general support.
Post Reply
Message
Author
User avatar
Eugene Lutsenko
Posts: 1649
Joined: Sat Feb 04, 2012 2:23 am
Location: Russia, Southern federal district, city of Krasnodar
Contact:

Database visualization with variable quantity of columns

#1 Post by Eugene Lutsenko »

How by means of DCBROWSECOL to display a database with quantity of columns which isn't known during development of the program, and it should be defined during program execution? I tried to make so:

Code: Select all

/* ----- Create browse-1 ----- */

bScale := {|| Rsp_it->(DC_SetScope(0,Int_krit->KOD_IntKr)), ;
              Rsp_it->(DC_SetScope(1,Int_krit->KOD_IntKr)), ;
              Rsp_it->(DC_DbGoTop()),                       ;
              oBrowRsoIt:refreshAll() }

@ 1, 0 DCBROWSE oBrowIntKr ALIAS 'Int_krit' SIZE 41.5,3.4 ;
       PRESENTATION DC_BrowPres()                         ;       // Только просмотр БД
       NOSOFTTRACK ;
       SCOPE ;
       NOHSCROLL NOVSCROLL ;       // Убрать горизонтальную и вертикальную полосы прокрутки
       ITEMMARKED {|| Eval(bScale), ;
                      DC_GetRefresh(GetList,, ;
                      DCGETREFRESH_TYPE_EXCLUDE,{GETLIST_BROWSE}) }

DCSETPARENT oBrowIntKr
DCBROWSECOL FIELD Int_krit->KOD_IntKr  HEADER 'Код'                   PARENT oBrowIntKr WIDTH 1
DCBROWSECOL FIELD Int_krit->NAME_IntKr HEADER 'Интегральный критерий' PARENT oBrowIntKr WIDTH 21


/* ----- Create browse-2 ----- */

SET TAG TO COMMAND
aSaveRspIt := DC_DataSave()   // Сохранение вычислительной среды (открытые и текущие БД и индексы)

PRIVATE aHeadName[8+N_Cls]
aHeadName[1] = "Код"
aHeadName[2] = "Наименование объекта;распознаваемой выборки"
aHeadName[3] = "MAX;уровень;сходства"     
aHeadName[4] = "Код;класса;с MAX;ур.сход."
aHeadName[5] = "MIN;уровень;сходства"     
aHeadName[6] = "Код;класса;с MIN;ур.сход."
aHeadName[7] = "Досто-;вер-;ность"        
SELECT Classes
FOR j=1 TO N_Cls
    DBGOTO(j)
    aHeadName[7+j] = ALLTRIM(STR(j,15))+". "+STRTRAN(ALLTRIM((Name_cls))," ",";")  // Переносы на каждом слове
NEXT
*aHeadName[8+N_cls] = "Инт.;крит."        

PRIVATE aFieldName[8+N_Cls]
SELECT Rsp_it
FOR j=1 TO 7+N_Cls
    aFieldName[j] = "Rsp_it->"+ALLTRIM(FIELDNAME(j))
NEXT
*DC_DebugQout( aFieldName )

DC_DataRest( aSaveRspIt ) // Восстановление вычислительной среды (открытые и текущие БД и индексы)

DCSETPARENT TO

@ 5, 0 DCBROWSE oBrowRsoIt ALIAS 'Rsp_it' SIZE 132,22 ;
       PRESENTATION DC_BrowPres() ;           // Только просмотр БД
       NOSOFTTRACK ;
       HEADLINES 4 ;                          // Кол-во строк в заголовке (перенос строки - ";")
       SCOPE ;
       ITEMMARKED bItems

// MAX - красным, MIN - синим

*DCSETFONT TO "9.Courier"

DCSETPARENT oBrowRsoIt
DCBROWSECOL DATA {|x|x:=Rsp_it->Kod_Obj,  IIF(Empty(x),'',Str(x,15))}  HEADER "Код"                       PARENT oBrowRsoIt WIDTH 5
DCBROWSECOL FIELD       Rsp_it->Name_Obj                               HEADER "Наименование объекта;распознаваемой выборки" PARENT oBrowRsoIt WIDTH 24
DCBROWSECOL DATA {|x|x:=Rsp_it->Max_Value,IIF(Empty(x),'',Str(x,8,3))} HEADER "MAX;уровень;сходства"      PARENT oBrowRsoIt COLOR GRA_CLR_RED  FONT "9.Courier"
DCBROWSECOL DATA {|x|x:=Rsp_it->KodC_MaxV,IIF(Empty(x),'',Str(x,15))}  HEADER "Код;класса;с MAX;ур.сход." PARENT oBrowRsoIt WIDTH 5 COLOR GRA_CLR_RED
DCBROWSECOL DATA {|x|x:=Rsp_it->Min_Value,IIF(Empty(x),'',Str(x,8,3))} HEADER "MIN;уровень;сходства"      PARENT oBrowRsoIt COLOR GRA_CLR_BLUE FONT "9.Courier"
DCBROWSECOL DATA {|x|x:=Rsp_it->KodC_MinV,IIF(Empty(x),'',Str(x,15))}  HEADER "Код;класса;с MIN;ур.сход." PARENT oBrowRsoIt WIDTH 5 COLOR GRA_CLR_BLUE
DCBROWSECOL DATA {|x|x:=Rsp_it->Dost,     IIF(Empty(x),'',Str(x,8,3))} HEADER "Досто-;вер-;ность"         PARENT oBrowRsoIt FONT "9.Courier"

*FOR j=1 TO N_Cls
*    DCBROWSECOL DATA {|x|x:=FIELDGET(7+j), IIF(Empty(x),'',Str(x,8,3))} HEADER aHeadName[7+j] PARENT oBrowRsoIt FONT "9.Courier"
*NEXT
DCBROWSECOL DATA {|x|x:=FIELDGET(7+1), IIF(Empty(x),'',Str(x,8,3))}  HEADER aHeadName[7+1] PARENT oBrowRsoIt FONT "9.Courier"
DCBROWSECOL DATA {|x|x:=FIELDGET(7+2), IIF(Empty(x),'',Str(x,8,3))}  HEADER aHeadName[7+2] PARENT oBrowRsoIt FONT "9.Courier"

*DCBROWSECOL DATA {|x|x:=Rsp_it->Cls1, IIF(Empty(x),'',Str(x,8,3))}  HEADER aHeadName[8] FONT "9.Courier"
*DCBROWSECOL DATA {|x|x:=Rsp_it->Cls2, IIF(Empty(x),'',Str(x,8,3))}  HEADER aHeadName[9] FONT "9.Courier"


DCGETOPTIONS SAYFONT '10.Helv Bold' TABSTOP AUTORESIZE

cTitle = '4.1.3.5. Подробная сжатая форма результатов распознавания'+'. Текущая модель: "'+UPPER(Ar_Model[M_CurrInf])+'"'

DCREAD GUI ;
   FIT ;
   OPTIONS GetOptions ;
   MODAL ;
   TITLE cTitle ;
   EVAL {|o|SetAppFocus(oBrowIntKr:GetColumn(1))}
In the fragment of the program given below everything works normally but if instead of sequence of DCBROWSECOL to use a cycle (which is issued as the comment) then works incorrectly (in both columns: 8, 9 contents of the 10th column) are displayed

Code: Select all

*FOR j=1 TO N_Cls
*    DCBROWSECOL DATA {|x|x:=FIELDGET(7+j), IIF(Empty(x),'',Str(x,8,3))} HEADER aHeadName[7+j] PARENT oBrowRsoIt FONT "9.Courier"
*NEXT
DCBROWSECOL DATA {|x|x:=FIELDGET(7+1), IIF(Empty(x),'',Str(x,8,3))}  HEADER aHeadName[7+1] FONT "9.Courier"
DCBROWSECOL DATA {|x|x:=FIELDGET(7+2), IIF(Empty(x),'',Str(x,8,3))}  HEADER aHeadName[7+2] FONT "9.Courier"
What to do?

User avatar
rdonnay
Site Admin
Posts: 4813
Joined: Wed Jan 27, 2010 6:58 pm
Location: Boise, Idaho USA
Contact:

Re: Database visualization with variable quantity of columns

#2 Post by rdonnay »

This is an example where you need a codeblock to anchor each value of j.

Code: Select all

FOR j=1 TO N_Cls
    DCBROWSECOL DATA FieldAnchor(j) HEADER aHeadName[7+j] PARENT oBrowRsoIt FONT "9.Courier"
NEXT

STATIC FUNCTION FieldAnchor( j )

RETURN {|x|x:=FIELDGET(7+j), IIF(Empty(x),'',Str(x,8,3))}
The eXpress train is coming - and it has more cars.

User avatar
Eugene Lutsenko
Posts: 1649
Joined: Sat Feb 04, 2012 2:23 am
Location: Russia, Southern federal district, city of Krasnodar
Contact:

Re: Database visualization with variable quantity of columns

#3 Post by Eugene Lutsenko »

Thanks, Roger! As after all it is good that is at whom to ask such things. I for anything didn't guess, at least in the current state... Works as it is necessary.

Post Reply