Focal Point Banner


As of December 1, 2020, Focal Point is retired and repurposed as a reference repository. We value the wealth of knowledge that's been shared here over the years. You'll continue to have access to this treasure trove of knowledge, for search purposes only.

Join the TIBCO Community
TIBCO Community is a collaborative space for users to share knowledge and support one another in making the best use of TIBCO products and services. There are several TIBCO WebFOCUS resources in the community.

  • From the Home page, select Predict: WebFOCUS to view articles, questions, and trending articles.
  • Select Products from the top navigation bar, scroll, and then select the TIBCO WebFOCUS product page to view product overview, articles, and discussions.
  • Request access to the private WebFOCUS User Group (login required) to network with fellow members.

Former myibi community members should have received an email on 8/3/22 to activate their user accounts to join the community. Check your Spam folder for the email. Please get in touch with us at community@tibco.com for further assistance. Reference the community FAQ to learn more about the community.


Focal Point    Focal Point Forums  Hop To Forum Categories  WebFOCUS/FOCUS Forum on Focal Point     [CASE OPENED] DB_LOOKUP QUESTION

Read-Only Read-Only Topic
Go
Search
Notify
Tools
[CASE OPENED] DB_LOOKUP QUESTION
 Login/Join
 
Gold member
posted
Can anyone explain why the "FRANCE_MAX_RTL_COST2" defined field does not generate properly when you try to specify a value?

 


TABLE FILE CAR
SUM MAX.RETAIL_COST AS MAX_RETAIL_COST
    MIN.RETAIL_COST AS MIN_RETAIL_COST
    MAX.DEALER_COST AS MAX_DEALER_COST
    MIN.DEALER_COST AS MIN_DEALER_COST
    RETAIL_COST     AS SUM_RETAIL_COST
BY COUNTRY
ON TABLE SET ASNAMES ON
ON TABLE HOLD AS HCNTRYSUM
END

-RUN
TABLE FILE HCNTRYSUM
PRINT *
END

DEFINE FUNCTION MAX_RETAIL_COST (CNTRY/A10)
MAX_RETAIL_COST/D20.2 =  DB_LOOKUP(HCNTRYSUM, CNTRY, COUNTRY, MAX_RETAIL_COST);
END

DEFINE FILE CAR
LOOKUP/A10 = 'FRANCE';
FRANCE_MAX_RTL_COST2/D20.1 = MAX_RETAIL_COST (LOOKUP);
MAX_RTL_COST/D20.1 = MAX_RETAIL_COST (COUNTRY);
END

TABLE FILE CAR
PRINT CAR
      MODEL
      COUNTRY
      MAX_RTL_COST
	  FRANCE_MAX_RTL_COST2
BY COUNTRY
END

DEFINE FILE CAR CLEAR
 

This message has been edited. Last edited by: Joey Sandoval,




Prod/Dev: WebFOCUS 8.0.08 on Windows Server 2008/Tomcat , WebFOCUS DevStudio 8.0.08 on Windows 7 Pro


 
Posts: 94 | Location: Austin, TX | Registered: August 08, 2012Report This Post
Expert
posted Hide Post
Joey, it looks like the constant "virtual column" LOOKUP needs to be associated with a real column, so adding WITH COUNTRY makes it work:

TABLE FILE CAR
SUM MAX.RETAIL_COST AS MAX_RETAIL_COST
    MIN.RETAIL_COST AS MIN_RETAIL_COST
    MAX.DEALER_COST AS MAX_DEALER_COST
    MIN.DEALER_COST AS MIN_DEALER_COST
    RETAIL_COST     AS SUM_RETAIL_COST
BY COUNTRY
ON TABLE SET ASNAMES ON
ON TABLE HOLD AS HCNTRYSUM
END

-RUN
TABLE FILE HCNTRYSUM
PRINT *
END

DEFINE FUNCTION MAX_RETAIL_COST (CNTRY/A10)
MAX_RETAIL_COST/D20.2 =  DB_LOOKUP(HCNTRYSUM, CNTRY, COUNTRY, MAX_RETAIL_COST);
END

DEFINE FILE CAR
LOOKUP/A10 WITH COUNTRY = 'FRANCE';
FRANCE_MAX_RTL_COST2/D20.1 = MAX_RETAIL_COST (LOOKUP);
MAX_RTL_COST/D20.1 = MAX_RETAIL_COST (COUNTRY);
END

TABLE FILE CAR
PRINT CAR
      MODEL
      COUNTRY
      MAX_RTL_COST
	  FRANCE_MAX_RTL_COST2
BY COUNTRY
END


Francis


Give me code, or give me retirement. In FOCUS since 1991

Production: WF 7.7.05M, Dev Studio, BID, MRE, WebSphere, DB2 / Test: WF 8.1.05M, App Studio, BI Portal, Report Caster, jQuery, HighCharts, Apache Tomcat, MS SQL Server
 
Posts: 10577 | Location: Toronto, Ontario, Canada | Registered: April 27, 2005Report This Post
Gold member
posted Hide Post
Shouldn't the output be 5,610 for France for every row though?




Prod/Dev: WebFOCUS 8.0.08 on Windows Server 2008/Tomcat , WebFOCUS DevStudio 8.0.08 on Windows 7 Pro


 
Posts: 94 | Location: Austin, TX | Registered: August 08, 2012Report This Post
Expert
posted Hide Post
Yup, you're right, I cannot get this to work. In the example below, only the last COMPUTE works:

TABLE FILE CAR
SUM
MAX.RETAIL_COST AS MAX_RETAIL_COST
MIN.RETAIL_COST AS MIN_RETAIL_COST
MAX.DEALER_COST AS MAX_DEALER_COST
MIN.DEALER_COST AS MIN_DEALER_COST
RETAIL_COST     AS SUM_RETAIL_COST

BY COUNTRY

ON TABLE SET ASNAMES ON
ON TABLE HOLD AS HCNTRYSUM
END

DEFINE FUNCTION MAX_RETAIL_COST_OUT(COUNTRY_IN/A10)
MAX_RETAIL_COST_OUT/D20.2 =  DB_LOOKUP(HCNTRYSUM, COUNTRY_IN, COUNTRY, MAX_RETAIL_COST);
END

TABLE FILE HCNTRYSUM
PRINT *
END

DEFINE FILE CAR
LOOKUP1/A10 WITH CAR = 'FRANCE';
MAX_RTL_COST/D20.2 = MAX_RETAIL_COST_OUT(COUNTRY);
FRANCE_MAX_RTL_COST2/D20.2 = MAX_RETAIL_COST_OUT(LOOKUP1);
END

TABLE FILE CAR
PRINT
COUNTRY
CAR
MODEL

MAX_RTL_COST
FRANCE_MAX_RTL_COST2

COMPUTE FRANCE_MAX_RTL_COST3/D20.2 = MAX_RETAIL_COST_OUT(LOOKUP1);

COMPUTE FRANCE_MAX_RTL_COST4/D20.2 =  DB_LOOKUP(HCNTRYSUM, LOOKUP1, COUNTRY, MAX_RETAIL_COST);
END


Francis


Give me code, or give me retirement. In FOCUS since 1991

Production: WF 7.7.05M, Dev Studio, BID, MRE, WebSphere, DB2 / Test: WF 8.1.05M, App Studio, BI Portal, Report Caster, jQuery, HighCharts, Apache Tomcat, MS SQL Server
 
Posts: 10577 | Location: Toronto, Ontario, Canada | Registered: April 27, 2005Report This Post
Expert
posted Hide Post
I would open a case with IBI Tech Support, attaching this program. They may have an explanation why DB_LOOKUP does not work in a DEFINE FUNCTION.


Francis


Give me code, or give me retirement. In FOCUS since 1991

Production: WF 7.7.05M, Dev Studio, BID, MRE, WebSphere, DB2 / Test: WF 8.1.05M, App Studio, BI Portal, Report Caster, jQuery, HighCharts, Apache Tomcat, MS SQL Server
 
Posts: 10577 | Location: Toronto, Ontario, Canada | Registered: April 27, 2005Report This Post
Virtuoso
posted Hide Post
quote:
DEFINE FUNCTION MAX_RETAIL_COST (CNTRY/A10)
MAX_RETAIL_COST/D20.2 = DB_LOOKUP(HCNTRYSUM, CNTRY, COUNTRY, MAX_RETAIL_COST);
END


In the DEFINE FUNCTION context, CNTRY is a formal argument, not a database variable. I don't think that conforms to the syntax requirements of DB_LOKUP.
 
Posts: 1925 | Location: NYC | In FOCUS since 1983 | Registered: January 11, 2005Report This Post
Expert
posted Hide Post
Jack,

Yes, I think you're right. DB_LOOKUP doc:


Syntax: How to Retrieve a Value From a Lookup Data Source
DB_LOOKUP(look_mf, srcfld1, lookfld1, srcfld2, lookfld2, ..., returnfld);
where:

look_mf
Is the lookup Master File.

srcfld1, srcfld2 ...
Are fields from the source file used to locate a matching record in the lookup file.

lookfld1, lookfld2 ...
Are columns from the lookup file that share values with the source fields. Only columns in the table or file can be used; columns created with DEFINE cannot be used. For multi-segment synonyms, only columns in the top segment can be used.

returnfld
Is the name of a column in the lookup file whose value is returned from the matching lookup record. Only columns in the table or file can be used; columns created with DEFINE cannot be used.


Francis


Give me code, or give me retirement. In FOCUS since 1991

Production: WF 7.7.05M, Dev Studio, BID, MRE, WebSphere, DB2 / Test: WF 8.1.05M, App Studio, BI Portal, Report Caster, jQuery, HighCharts, Apache Tomcat, MS SQL Server
 
Posts: 10577 | Location: Toronto, Ontario, Canada | Registered: April 27, 2005Report This Post
Expert
posted Hide Post
That how I understood it to be as well. Has to be DB fields.


Waz...

Prod:WebFOCUS 7.6.10/8.1.04Upgrade:WebFOCUS 8.2.07OS:LinuxOutputs:HTML, PDF, Excel, PPT
In Focus since 1984
Pity the lost knowledge of an old programmer!

 
Posts: 6347 | Location: 33°49'23.0"S, 151°11'41.0"E | Registered: October 31, 2006Report This Post
  Powered by Social Strata  

Read-Only Read-Only Topic

Focal Point    Focal Point Forums  Hop To Forum Categories  WebFOCUS/FOCUS Forum on Focal Point     [CASE OPENED] DB_LOOKUP QUESTION

Copyright © 1996-2020 Information Builders