Browse database in relation

This forum is for eXpress++ general support.
Post Reply
Message
Author
Victorio
Posts: 631
Joined: Sun Jan 18, 2015 11:43 am
Location: Slovakia

Browse database in relation

#1 Post by Victorio »

Please, help me, where I have mistake.
I want connect more than 2 tables with one field,
I make two databases so as in example xdemo "one to many" Xsample 130, it work fine with 2 tables-
But I want to do this for other 2-3 tables to viewing and listing in some window.
I have some error in source code ?, please look somebody to this, thaks very much.

here is source code :
1st database is CPARCELY
2nd VLASTNICI
3rd STAVBY

I mean , error is in EVAL .... (red color)


Local GetList := {}
Local GetOptions,oToolBar1,oToolBar2
Local oBrowsepa,oBrowsevl,oBrovsecs

Local bVLA,bSTA

* relácie - zadanie väzieb CPA/VLA
bVLA:={||VLASTNICI->(DC_SetScope(0,CPARCELY->KN_CLV)), ;
VLASTNICI->(DC_SetScope(1,CPARCELY->KN_CLV)), ;
VLASTNICI->(DC_DbGoTop()), ;
oBrowsevl:refreshAll()}

* relácie - zadanie väzieb CPA/STA
bSTA:={||STAVBY->(DC_SetScope(0,CPARCELY->KN_CLV)), ;
STAVBY->(DC_SetScope(1,CPARCELY->KN_CLV)), ;
STAVBY->(DC_DbGoTop()), ;
oBrowsecs:refreshAll()}

* First database ALIAS CPARCELY
@pozypa,pozxpa DCBROWSE oBrowsepa ALIAS "CPARCELY" ;
SIZE rozxpa,rozypa PIXEL ;
NOSOFTTRACK ;
SCOPE ;
NOHSCROLL ;
ITEMMARKED {||Eval(bVLA),Eval(bSTA),;
DC_GetRefresh(GetList,, ;
DCGETREFRESH_TYPE_EXCLUDE,(GETLIST_BROWSE))} ;
CURSORMODE XBPBRW_CURSOR_ROW

DCSETPARENT oBrowsepa

DCBROWSECOL FIELD CPARCELY->CPAU WIDTH 80;
HEADER "Parcela "

... etc

DCSETPARENT TO

* Second database ALIAS VLASTNICI
@pozyvl,pozxvl DCBROWSE oBrowsevl ALIAS "VLASTNICI" ;
SIZE rozxvl,rozyvl PIXEL ;
NOSOFTTRACK ;
SCOPE ;
CURSORMODE XBPBRW_CURSOR_ROW ;
ITEMMARKED bSTA

DCSETPARENT oBrowsevl

DCBROWSECOL FIELD VLASTNICI->KN_CLV ;
HEADER "KN_CLV"

... etc

* Third database ALIAS STAVBY
@pozycs,pozxcs DCBROWSE oBrowsecs ALIAS "STAVBY" ;
SIZE rozxcs,rozycs PIXEL ;
NOSOFTTRACK ;
SCOPE ;
CURSORMODE XBPBRW_CURSOR_ROW

DCSETPARENT oBrowsecs

DCBROWSECOL FIELD STAVBY->KN_CLV ;
HEADER "KN_CLV"

... etc

* some toolbar
DCSETPARENT oToolbar1

@ pozypa+30,pozxpa+rozxpa DCTOOLBAR oToolbar1 PIXEL SIZE 80,300 ;
ALIGN DCGUI_ALIGN_LEFT ;
BUTTONSIZE 60,25 ;
FIT ;
SPACE 5 ;
RESIZE DCGUI_RESIZE_REPOSONLY_X

DCADDBUTTON CAPTION 'Náhľad' PARENT oToolbar1 ;
TOOLTIP "Prezeranie záznamu" ;
ACTION {||tone(1000,1),fic(1),oBrowse:RefreshAll()}
...etc

DCGETOPTIONS PIXEL ;
TABSTOP AUTORESIZE

* OPTIONS GeoOptions asi nastavi predvolené parametre ako sú v DCGETOPTIONS
DCREAD GUI ;
OPTIONS GetOptions ;
TITLE "[ PARCELY REGISTRA C ] - [ "+nazku+" ] - [ "+nazovdbf1+" ]" ;
MODAL ;
FIT ;
EVAL {|o|SetAppFocus(oBrowsepa:GetColumn(1))}

close all
DC_GetDestroy(GetList)
DC_ClearEvents()


return(0)

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

Re: Browse database in relation

#2 Post by rdonnay »

This is from XDEMO.EXE

Run XDEMO.EXE - Sample Group 4 - OneToMany 2

Code: Select all

FUNCTION XSample_130()

/* This example shows how to create a 3-tiered, one-to-many
  browse of three relational databases in one dialog window. */

LOCAL GetList := {}, GetOptions, oBrowCust, oBrowInv, oBrowItems, ;
      bInv, bItems

dbeSetDefault('FOXCDX')

USE ..\data\CUSTOMER INDEX ..\data\CUSTOMER
USE ..\data\INVOICE INDEX ..\data\INVOICE NEW
USE ..\data\INVITEMS INDEX ..\data\INVITEMS NEW

bInv := {|| INVOICE->(DC_SetScope(0,CUSTOMER->cust_nmbr)), ;
            INVOICE->(DC_SetScope(1,CUSTOMER->cust_nmbr)), ;
            INVOICE->(DC_DbGoTop()), ;
            oBrowInv:refreshAll() }

bItems := {|| INVITEMS->(DC_SetScope(0,INVOICE->inv_nmbr)), ;
              INVITEMS->(DC_SetScope(1,INVOICE->inv_nmbr)), ;
              INVITEMS->(DC_DbGoTop()), ;
              oBrowItems:refreshAll() }


@ 1,0 DCBROWSE oBrowCust ALIAS 'CUSTOMER' SIZE 40,10 ;
      PRESENTATION DC_BrowPres() ;
      NOSOFTTRACK ;
      SCOPE ;
      NOHSCROLL ;
      ITEMMARKED {|| Eval(bInv), ;
                     Eval(bItems), ;
                     DC_GetRefresh(GetList,, ;
                      DCGETREFRESH_TYPE_EXCLUDE,{GETLIST_BROWSE}) }

DCSETPARENT oBrowCust
DCBROWSECOL FIELD CUSTOMER->cust_nmbr HEADER 'Cust #' WIDTH 4
DCBROWSECOL FIELD CUSTOMER->bill_name HEADER 'Billing Name' WIDTH 18

DCSETPARENT TO
@ 1,42 DCSAY {||CUSTOMER->bill_name} COLOR GRA_CLR_BLUE SIZE 45
@ 2,42 DCSAY {||CUSTOMER->bill_strt} COLOR GRA_CLR_BLUE SIZE 45
@ 3,42 DCSAY {||CUSTOMER->bill_city} COLOR GRA_CLR_BLUE SIZE 45
@ 4,42 DCSAY {||CUSTOMER->bill_state} COLOR GRA_CLR_BLUE SIZE 5
@ 4,53 DCSAY {||CUSTOMER->bill_zip} COLOR GRA_CLR_BLUE SIZE 25
@ 5,42 DCSAY {||CUSTOMER->phone} COLOR GRA_CLR_BLUE SIZE 25
@ 6,42 DCSAY {||CUSTOMER->fax} COLOR GRA_CLR_BLUE SIZE 25
@ 7,42 DCSAY {||CUSTOMER->contact} COLOR GRA_CLR_BLUE SIZE 35

@12,0 DCBROWSE oBrowInv ALIAS 'INVOICE' SIZE 40,10 ;
      PRESENTATION DC_BrowPres() ;
      NOSOFTTRACK ;
      SCOPE ;
      ITEMMARKED bItems

DCSETPARENT oBrowInv
DCBROWSECOL FIELD INVOICE->inv_nmbr HEADER 'Invoice #' WIDTH 4
DCBROWSECOL FIELD INVOICE->ship_date HEADER 'Inv Date' WIDTH 8
DCBROWSECOL FIELD INVOICE->balance HEADER 'Balance' WIDTH 8

DCSETPARENT TO
@12,42 DCBROWSE oBrowItems ALIAS 'INVITEMS' SIZE 40,10 ;
      PRESENTATION DC_BrowPres() ;
      NOSOFTTRACK ;
      SCOPE

DCSETPARENT oBrowItems
DCBROWSECOL FIELD INVITEMS->part_nmbr HEADER 'Part Nmbr' WIDTH 10
DCBROWSECOL FIELD INVITEMS->desc HEADER 'Description' WIDTH 10
DCBROWSECOL FIELD INVITEMS->qty_ord HEADER 'Ord' WIDTH 4
DCBROWSECOL FIELD INVITEMS->qty_shp HEADER 'Ship' WIDTH 4

DCGETOPTIONS SAYFONT '10.Helv Bold' TABSTOP AUTORESIZE
DCREAD GUI ;
   FIT ;
   ADDBUTTONS ;
   OPTIONS GetOptions ;
   MODAL ;
   TITLE 'Customer/Invoice/Items Browse' ;
   EVAL {|o|SetAppFocus(oBrowCust:GetColumn(1))}

RETURN nil
The eXpress train is coming - and it has more cars.

Victorio
Posts: 631
Joined: Sun Jan 18, 2015 11:43 am
Location: Slovakia

Re: Browse database in relation

#3 Post by Victorio »

oh yes, I forgot one line DCSETPARENT TO befor 3rt DCBROWSE line,
now it is ok, thanks

Post Reply