Page 1 of 1
How to use user defined function in XBrowse?
Posted: Thu Aug 29, 2019 3:18 pm
by Max HK
In Listbox, I can call user defined function like Get_name( field->Customer_code ).
How to do similar thing in XBrowse? like COLUMNS "DOC_DATE", "Get_name( Customer_code )", but it does not work
Thanks in advance.
Re: How to use user defined function in XBrowse?
Posted: Thu Aug 29, 2019 8:03 pm
by Marcelo Via Giglio
Hola,
try to use code block COLUMNS "DOC_DATE", {|| Get_name( Customer_code ) }
regards
Marcelo
Re: How to use user defined function in XBrowse?
Posted: Fri Aug 30, 2019 12:37 am
by Max HK
Thanks for your reply. But it does not work.
XBrowse can call build-in function like "DOW(DOC_DATE)", but I do not know how to call my user defined function.
Marcelo Via Giglio wrote:Hola,
try to use code block COLUMNS "DOC_DATE", {|| Get_name( Customer_code ) }
regards
Marcelo
Re: How to use user defined function in XBrowse?
Posted: Fri Aug 30, 2019 1:55 am
by nageswaragunupudi
Code: Select all
COLUMNS "DOC_DATE", "Get_name( Customer_code )"
works if Get_name is a public function, i.e., it is not a "static" function.
Code: Select all
COLUMNS "DOC_DATE", {|| Get_name( Customer_code ) }
works whether Get_name is a public function or static function.
Please make sure that the function itself is working correctly and that XBrowse knows the values of parameters used.
This is a test program:
Code: Select all
#include "fivewin.ch"
static aStates
function Main()
USE STATES SHARED
aStates := FW_DbfToArray()
CLOSE STATES
USE CUSTOMER NEW SHARED
XBROWSER "CUSTOMER" COLUMNS "State", "StateName(STATE)", { || StateName(FIELD->STATE) } ;
SETUP oBrw:cHeaders := { "State", "Name1", "Name2" }
return nil
function StateName( cCode )
local nAt := AScan( aStates, { |a| a[ 1 ] == cCode } )
return If( nAt == 0, Space( 20 ), aStates[ nAt, 2 ] )
Re: How to use user defined function in XBrowse?
Posted: Fri Aug 30, 2019 12:14 pm
by Max HK
Mr Rao,
Thanks for your suggestion. But it still not work in Code Block.
Please notice that I use XBrowse, not XBrowser.
From wiki.fivetechsoft.com, I find the following explanation:
========================================
Difference between COLUMNS and FIELDS
COLUMNS CLAUSE is a list of column names of the Alias assigned to the browse. FIELDS clause is for any expressions. FIELDS clause is to be used for data from other related Aliases or any complext expressions.
When both COLUMNS and FIELDS clauses are speicified, XBrowse places the columns first and then the fields. We can later rearrange the sequence of xbrowse columns.
========================================
I have used FIELDS but still failed to call my functions.
Thanks & Regards.
Re: How to use user defined function in XBrowse?
Posted: Fri Aug 30, 2019 12:38 pm
by nageswaragunupudi
[quote]
Please notice that I use XBrowse, not XBrowser.
[/code]
I posted the sample using XBrowser, because I know for sure that the behavour is the same whether it is xbrowse or xbrowser.
Please let us know:
1) What is the version of FWH you are using. If your version is not too old, whatever I said above SHOULD work.
2) Did you build and test the sample I posted above? Does the sample as it is work for you or not? Please test and let us know first. Then we can advise you better.
Please copy the sample to \fwh\samples folder and build it with buildh.bat or buildx.bat
Re: How to use user defined function in XBrowse?
Posted: Sat Aug 31, 2019 3:17 am
by Max HK
I found the solution. The Code Block syntax is correct.
But since I use TDatabase to open DBF, the syntax is {|| Get_name( odbf:Customer_code ) }, instead of using "FIELD->".