Using User Defined Global Functions
Hi,
I am implementing Error Handling in a package. The logic goes like this:
If the call to the first interface fails, KO will call the error proc using which error message is extracted, written to a file and an email notification is sent.
The code given below is written in the procedure.
OdiOutFile -FILE=E:\OraHome_2\oracledi\demo\Assignmnt\ErrorLog.log
ErrMesg:'<%=odiRef.getPrevStepLog("MESSAGE")%>'
Now i need to implement this using a global function which can be used across interfaces to implement error handling.
i want to club the code used above with sending an email notification.
Can anyone pls guide me if i my approach is correct and how this approach can be implemented using Global Function?
Thanks.
Edited by: RitikaS on Dec 18, 2009 2:19 AM
Hi Ritika,
Can i suggest a method?
Build a package, define your interface flow, from the KO (failure) of every interface call OdiSendMail.
In the OdiSendMail define all the parameters like Mail Server,From, To, Subject and in the message body paste the below code,
Previous step <%=odiRef.getPrevStepLog("STEP_NAME")%> with session number <%=odiRef.getPrevStepLog("SESS_NO")%> failed with the error message
*<%=odiRef.getPrevStepLog("MESSAGE")%> .*
Please look into the operator for more details.
So what ODI will do is, it will send a notification to the recipient with the error message ,interface name and session number.
Sample :
Previous step INT_LOAD_AGE with session number 1822124 failed with the error message
17002 : null : java.sql.SQLException: Io exception: The Network Adapter could not establish the connection
java.sql.SQLException: Io exception: The Network Adapter could not establish the connection
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:125)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:162)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:274)
at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:328)
at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:361)
at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:151)
at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:595)
at com.sunopsis.sql.SnpsConnection.u(SnpsConnection.java)
at com.sunopsis.sql.SnpsConnection.c(SnpsConnection.java)
at com.sunopsis.sql.i.run(i.java)
Please look into the operator for more details.
Makes sense?
http://img259.imageshack.us/img259/1704/screenshot003.jpg
P.S: Please do close your threads accordingly assigning points (Helpful/Correct) to make experts to help you eagerly.
Thanks,
Guru
Similar Messages
-
How can I use User-Defined Aggregate Functions in Timesten 11? such as ODCI
Hi
we are using Timesten 11 version and as per the documentation, it doesn't support User-Defined Aggregate Functions.
So we are looking for alternatives to do it. Could you please provide your expert voice on this.
Thanks a lot.
As the following:
create or replace type strcat_type as object (
cat_string varchar2(32767),
static function ODCIAggregateInitialize(cs_ctx In Out strcat_type) return number,
member function ODCIAggregateIterate(self In Out strcat_type,value in varchar2) return number,
member function ODCIAggregateMerge(self In Out strcat_type,ctx2 In Out strcat_type) return number,
member function ODCIAggregateTerminate(self In Out strcat_type,returnValue Out varchar2,flags in number) return
number
How can I use User-Defined Aggregate Functions in Timesten 11? such as ODCIAggregateInitialize ?Dear user6258915,
You absolutely right, TimesTen doesnt support object types (http://docs.oracle.com/cd/E13085_01/doc/timesten.1121/e13076/plsqldiffs.htm) and User-Defined Aggregate Functions.
Is it crucial for your application? Could you rewrite this functionality by using standart SQL or PL/SQL?
Best regards,
Gennady -
Using user defined text functions to generate strings on button.
I am new to java programming and am facing a problem.. It would be great if you could help me resolving it..
The problem is:
Is it possible to use user defined functions to generate the string on a button(button name)?
If it is possible please educate me on it..
Thanks..Yes its possible. What you ask is so vague that it can be interpreted in so many ways there are plenty correct answers
public void userDefinedFunction(String aString)
yourButton.setText(aString);
} -
User defined xquery function with index enabled
If I use user defined xquery function, can the index be applied within the function?
trados.xsd
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2005 rel. 3 U (http://www.altova.com) by () -->
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb" xmlns:tns="http://ecoit.hp.com/ecg/repository/trados" targetNamespace="http://ecoit.hp.com/ecg/repository/trados" elementFormDefault="qualified">
<complexType name="entry">
<sequence>
<element name="base" type="string"/>
<element name="translation" maxOccurs="unbounded">
<complexType>
<simpleContent>
<extension base="string">
<attribute name="lang"/>
</extension>
</simpleContent>
</complexType>
</element>
</sequence>
<attribute name="xpath" type="string" use="required" xdb:SQLName="XPATH"/>
<attribute name="locator" type="string" use="required"/>
</complexType>
<simpleType name="languages">
<list itemType="string"/>
</simpleType>
<element name="trados" xdb:defaultTable="ECG_REP_TRADOS_TAB" xdb:tableProps="VARRAY XMLDATA.ENTRY STORE AS TABLE ECG_REP_TRADOS_ENTRY_TAB ((PRIMARY KEY (NESTED_TABLE_ID, SYS_NC_ARRAY_INDEX$)) ORGANIZATION INDEX OVERFLOW)">
<complexType>
<sequence>
<element name="entry" type="tns:entry" minOccurs="0" maxOccurs="unbounded" xdb:SQLName="ENTRY"/>
</sequence>
<attribute name="cid" type="string"/>
<attribute name="path" type="string"/>
<attribute name="lang" type="string"/>
<attribute name="langs" type="tns:languages"/>
<attribute name="oldversion" type="string"/>
</complexType>
</element>
</schema>
CREATE INDEX ECG_REP_ENTRY_XPATH_IDX ON ECG_REP_TRADOS_ENTRY_TAB ("XPATH", "NESTED_TABLE_ID")
eco_category.xsd
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2008 (http://www.altova.com) by Jan-Erik Pedersen (HEWLETT PACKARD) -->
<!--W3C Schema generated by XMLSpy v2007 (http://www.altova.com) by Scott Dismukes (Hewlett Packard)-->
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb" xmlns:tns="http://ecoit.hp.com/ecg/repository/eco/category" xmlns:cns="http://ecoit.hp.com/ecg/repository/types" targetNamespace="http://ecoit.hp.com/ecg/repository/eco/category" elementFormDefault="qualified">
<import namespace="http://ecoit.hp.com/ecg/repository/types" schemaLocation="../types.xsd"/>
<complexType name="productFamilies">
<sequence>
<element name="productFamily" type="tns:productFamily" minOccurs="0" maxOccurs="unbounded"/>
<element name="product" type="tns:product" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="lang" use="required" xdb:SQLName="LANG">
<simpleType>
<restriction base="string">
<length value="5"/>
</restriction>
</simpleType>
</attribute>
<attribute name="version" use="required" xdb:SQLName="VERSION">
<simpleType>
<restriction base="string">
<maxLength value="100"/>
</restriction>
</simpleType>
</attribute>
</complexType>
<complexType name="productCategory">
<sequence>
<element name="label" type="cns:label"/>
<element name="productCategory" type="tns:productCategory" minOccurs="0" maxOccurs="unbounded" xdb:defaultTable="ECG_REP_ECO_CATALOG_PC_TAB"/>
<element name="product" type="tns:product" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="id" type="cns:id" use="required"/>
</complexType>
<complexType name="productCategories">
<sequence>
<element name="productCategory" type="tns:productCategory" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
</complexType>
<complexType name="column">
<sequence>
<element name="label" type="cns:label"/>
</sequence>
<attribute name="id" type="cns:id" use="required"/>
</complexType>
<complexType name="product">
<sequence>
<element name="label" type="cns:label"/>
<element name="column" type="tns:column" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="id" type="cns:id" use="required"/>
</complexType>
<complexType name="productFamily">
<sequence>
<element name="label" type="cns:label"/>
<element name="image" type="cns:image" minOccurs="0" maxOccurs="unbounded"/>
<element name="link" type="cns:link" minOccurs="0" maxOccurs="unbounded"/>
<element name="column" type="tns:column" minOccurs="0" maxOccurs="unbounded"/>
<element name="productCategories" type="tns:productCategories" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="id" type="cns:id" use="required"/>
</complexType>
<element name="productFamilies" type="tns:productFamilies" xdb:defaultTable="ECG_REP_ECO_CATALOG_TAB"/>
</schema>
xquery
xquery version "1.0";
declare namespace typ = "http://ecoit.hp.com/ecg/repository/types";
declare namespace c = "http://ecoit.hp.com/ecg/repository/eco/category";
declare namespace t = "http://ecoit.hp.com/ecg/repository/trados";
declare variable $c := $res/c:productFamilies;
declare function local:pc($pc as element(c:productCategory), $x as xs:string) as element()
<c:productCategory id="{$pc/@id}">
<c:label>{data($es/t:entry[@xpath eq concat($x, "/label")]/t:translation)}</c:label>
for $p in $pc/c:product
return local:p($p, concat($x, "/product/[@id=", $p/@id, "]"))
for $pcc in $pc/c:productCategory
return local:pc($pcc, concat($x, "/productCategory[@id=", $pcc/@id, "]"))
</c:productCategory>
declare function local:p($p as element(c:product), $x as xs:string) as element()
<c:product id="{$p/@id}">
<c:label>{string($es/t:entry[@xpath eq concat($x, "/label")]/t:translation)}</c:label>
for $col in $p/c:column
return
<c:column id="{$col/@id}">
<c:label>
let $e := $es/t:entry[@xpath eq concat($x, "/column[@id=", $col/@id, "]/label")]
return
if(exists($e)) then string($e/t:translation)
else $col/c:label/text()
</c:label>
</c:column>
</c:product>
<c:productFamiles xsi:schemaLocation="http://ecoit.hp.com/ecg/repository/eco/category http://ecoit.hp.com/ecg/repository/eco/category.xsd http://ecoit.hp.com/ecg/repository/types http://ecoit.hp.com/ecg/repository/types.xsd" lang="{$lang/lang/text()}" version="{$c/@version}">
for $pf in $c/c:productFamily
let $x := concat("/productFamily[@id=", $pf/@id, "]")
return
<c:productFamily id="{$pf/@id}">
(:xpath index can not be applied within function:)
<c:label>{data($es/t:entry[@xpath eq concat($x, "/label")]/t:translation)}</c:label>
for $img in $pf/c:image
return $img
for $link in $pf/c:link
return $link
for $col in $pf/c:column
return
<c:column id="{$col/@id}">
<c:label>{data($es/t:entry[@xpath eq concat($x, "/column[@id=", $col/@id, "]/label")]/t:translation)}</c:label>
</c:column>
for $pcs in $pf/c:productCategories
return
<c:productCategories>
for $pc in $pcs/c:productCategory
return local:pc($pc, concat($x, "/productCategories/productCategory[@id=", $pc/@id, "]"))
</c:productCategories>
</c:productFamily>
for $p in $c/c:product
return local:p($p, concat("/product[@id=", $p/@id, "]"))
</c:productFamiles>
Message was edited by:
John LeeJohn
Am i missing a bit of the Xquery
In 11.1,0.6.0 I get
Elapsed: 00:00:00.04
SQL> set echo on
SQL> spool testcase.log
SQL> --
SQL> connect sys/ as sysdba
Enter password:
Connected.
SQL> set define on
SQL> set timing on
SQL> --
SQL> define USERNAME = HPECO
SQL> --
SQL> def PASSWORD = HPECO
SQL> --
SQL> def USER_TABLESPACE = USERS
SQL> --
SQL> def TEMP_TABLESPACE = TEMP
SQL> --
SQL> drop user &USERNAME cascade
2 /
old 1: drop user &USERNAME cascade
new 1: drop user HPECO cascade
User dropped.
Elapsed: 00:00:18.12
SQL> grant create any directory, drop any directory, connect, resource, alter session, create view to &USERNAME identified by &PASSW
ORD
2 /
old 1: grant create any directory, drop any directory, connect, resource, alter session, create view to &USERNAME identified by &P
ASSWORD
new 1: grant create any directory, drop any directory, connect, resource, alter session, create view to HPECO identified by HPECO
Grant succeeded.
Elapsed: 00:00:00.03
SQL> alter user &USERNAME default tablespace &USER_TABLESPACE temporary tablespace &TEMP_TABLESPACE
2 /
old 1: alter user &USERNAME default tablespace &USER_TABLESPACE temporary tablespace &TEMP_TABLESPACE
new 1: alter user HPECO default tablespace USERS temporary tablespace TEMP
User altered.
Elapsed: 00:00:00.00
SQL> connect &USERNAME/&PASSWORD
Connected.
SQL> --
SQL> alter session set events ='19027 trace name context forever, level 0x800'
2 /
Session altered.
Elapsed: 00:00:00.00
SQL> --
SQL> declare
2 xmlschema xmltype := XMLTYPE(
3 '<?xml version="1.0" encoding="UTF-8"?>
4 <!-- edited with XMLSpy v2008 (http://www.altova.com) by Jan-Erik Pedersen (HEWLETT PACKARD) -->
5 <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb" xmlns:tns="http://ecoit.hp.com/ecg/rep
ository/types" targetNamespace="http://ecoit.hp.com/ecg/repository/types" elementFormDefault="qualified">
6 <complexType name="item">
7 <simpleContent>
8 <extension base="tns:content">
9 <attribute name="id" type="tns:id" use="required"/>
10 </extension>
11 </simpleContent>
12 </complexType>
13 <complexType name="items">
14 <sequence>
15 <element name="item" type="tns:item" maxOccurs="unbounded"/>
16 </sequence>
17 <attribute name="id" type="tns:id" use="required"/>
18 </complexType>
19 <complexType name="mappings">
20 <sequence>
21 <element name="item" type="tns:item" minOccurs="0" maxOccurs="unbounded"/>
22 <element name="items" type="tns:items" minOccurs="0" maxOccurs="unbounded"/>
23 </sequence>
24 </complexType>
25 <complexType name="local">
26 <sequence>
27 <element name="common">
28 <complexType>
29 <sequence>
30 <element name="texts" type="tns:mappings"/>
31 <element name="images" type="tns:mappings" minOccurs="0"/>
32 </sequence>
33 </complexType>
34 </element>
35 <element name="section" minOccurs="0" maxOccurs="unbounded">
36 <complexType>
37 <sequence>
38 <element name="texts" type="tns:mappings"/>
39 <element name="images" type="tns:mappings" minOccurs="0"/>
40 </sequence>
41 <attribute name="id" use="required">
42 <simpleType>
43 <restriction base="string">
44 <maxLength value="32"/>
45 </restriction>
46 </simpleType>
47 </attribute>
48 </complexType>
49 </element>
50 </sequence>
51 <attribute name="lang" use="required" xdb:SQLName="LANG">
52 <simpleType>
53 <restriction base="string">
54 <length value="5"/>
55 </restriction>
56 </simpleType>
57 </attribute>
58 </complexType>
59 <complexType name="link">
60 <sequence>
61 <element name="url" type="tns:url"/>
62 <element name="label" type="tns:label"/>
63 <element name="image" type="tns:image" minOccurs="0"/>
64 </sequence>
65 <attribute name="id" type="tns:id"/>
66 </complexType>
67 <complexType name="image">
68 <sequence>
69 <element name="url" type="string"/>
70 <element name="label" type="tns:label" minOccurs="0"/>
71 </sequence>
72 <attribute name="id" type="tns:id" use="optional"/>
73 </complexType>
74 <simpleType name="id">
75 <restriction base="string">
76 <maxLength value="100"/>
77 </restriction>
78 </simpleType>
79 <simpleType name="label">
80 <restriction base="string">
81 <maxLength value="200"/>
82 </restriction>
83 </simpleType>
84 <simpleType name="content">
85 <restriction base="string">
86 <maxLength value="4000"/>
87 </restriction>
88 </simpleType>
89 <simpleType name="url">
90 <restriction base="string">
91 <maxLength value="256"/>
92 </restriction>
93 </simpleType>
94 </schema>');
95 begin
96 dbms_xmlschema.registerSchema
97 (
98 schemaurl => 'http://ecoit.hp.com/ecg/repository/types.xsd'
99 ,schemadoc => xmlschema
100 ,local => TRUE
101 ,genBean => false
102 ,genTypes => TRUE
103 ,genTables => TRUE
104 ,ENABLEHIERARCHY => DBMS_XMLSCHEMA.ENABLE_HIERARCHY_NONE
105 );
106 end;
107 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:01.35
SQL>
SQL> declare
2 xmlschema xmltype := XMLTYPE(
3 '<?xml version="1.0" encoding="UTF-8"?>
4 <!-- edited with XMLSpy v2005 rel. 3 U (http://www.altova.com) by () -->
5 <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb" xmlns:tns="http://ecoit.hp.com/ecg/rep
ository/trados" targetNamespace="http://ecoit.hp.com/ecg/repository/trados" elementFormDefault="qualified">
6 <complexType name="entry">
7 <sequence>
8 <element name="base" type="string"/>
9 <element name="translation" maxOccurs="unbounded">
10 <complexType>
11 <simpleContent>
12 <extension base="string">
13 <attribute name="lang"/>
14 </extension>
15 </simpleContent>
16 </complexType>
17 </element>
18 </sequence>
19 <attribute name="xpath" type="string" use="required" xdb:SQLName="XPATH"/>
20 <attribute name="locator" type="string" use="required"/>
21 </complexType>
22 <simpleType name="languages">
23 <list itemType="string"/>
24 </simpleType>
25 <element name="trados" xdb:defaultTable="ECG_REP_TRADOS_TAB" xdb:tableProps="VARRAY XMLDATA.ENTRY STORE AS TABLE ECG_REP_TRA
DOS_ENTRY_TAB ((PRIMARY KEY (NESTED_TABLE_ID, SYS_NC_ARRAY_INDEX$)) ORGANIZATION INDEX OVERFLOW)">
26 <complexType>
27 <sequence>
28 <element name="entry" type="tns:entry" minOccurs="0" maxOccurs="unbounded" xdb:SQLName="ENTRY"/>
29 </sequence>
30 <attribute name="cid" type="string"/>
31 <attribute name="path" type="string"/>
32 <attribute name="lang" type="string"/>
33 <attribute name="langs" type="tns:languages"/>
34 <attribute name="oldversion" type="string"/>
35 </complexType>
36 </element>
37 </schema>');
38 begin
39 dbms_xmlschema.registerSchema
40 (
41 schemaurl => 'http://ecoit.hp.com/ecg/repository/trados.xsd'
42 ,schemadoc => xmlschema
43 ,local => TRUE
44 ,genBean => false
45 ,genTypes => TRUE
46 ,genTables => TRUE
47 ,ENABLEHIERARCHY => DBMS_XMLSCHEMA.ENABLE_HIERARCHY_NONE
48 );
49 end;
50 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.68
SQL> declare
2 xmlschema xmltype := XMLTYPE(
3 '<?xml version="1.0" encoding="UTF-8"?>
4 <!-- edited with XMLSpy v2008 (http://www.altova.com) by Jan-Erik Pedersen (HEWLETT PACKARD) -->
5 <!--W3C Schema generated by XMLSpy v2007 (http://www.altova.com) by Scott Dismukes (Hewlett Packard)-->
6 <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb" xmlns:tns="http://ecoit.hp.com/ecg/rep
ository/eco/category" xmlns:cns="http://ecoit.hp.com/ecg/repository/types" targetNamespace="http://ecoit.hp.com/ecg/repository/eco/c
ategory" elementFormDefault="qualified">
7 <import namespace="http://ecoit.hp.com/ecg/repository/types" schemaLocation="http://ecoit.hp.com/ecg/repository/types.xsd"/>
8 <complexType name="productFamilies">
9 <sequence>
10 <element name="productFamily" type="tns:productFamily" minOccurs="0" maxOccurs="unbounded"/>
11 <element name="product" type="tns:product" minOccurs="0" maxOccurs="unbounded"/>
12 </sequence>
13 <attribute name="lang" use="required" xdb:SQLName="LANG">
14 <simpleType>
15 <restriction base="string">
16 <length value="5"/>
17 </restriction>
18 </simpleType>
19 </attribute>
20 <attribute name="version" use="required" xdb:SQLName="VERSION">
21 <simpleType>
22 <restriction base="string">
23 <maxLength value="100"/>
24 </restriction>
25 </simpleType>
26 </attribute>
27 </complexType>
28 <complexType name="productCategory">
29 <sequence>
30 <element name="label" type="cns:label"/>
31 <element name="productCategory" type="tns:productCategory" minOccurs="0" maxOccurs="unbounded" xdb:defaultTa
ble="ECG_REP_ECO_CATALOG_PC_TAB"/>
32 <element name="product" type="tns:product" minOccurs="0" maxOccurs="unbounded"/>
33 </sequence>
34 <attribute name="id" type="cns:id" use="required"/>
35 </complexType>
36 <complexType name="productCategories">
37 <sequence>
38 <element name="productCategory" type="tns:productCategory" minOccurs="0" maxOccurs="unbounded"/>
39 </sequence>
40 </complexType>
41 <complexType name="column">
42 <sequence>
43 <element name="label" type="cns:label"/>
44 </sequence>
45 <attribute name="id" type="cns:id" use="required"/>
46 </complexType>
47 <complexType name="product">
48 <sequence>
49 <element name="label" type="cns:label"/>
50 <element name="column" type="tns:column" minOccurs="0" maxOccurs="unbounded"/>
51 </sequence>
52 <attribute name="id" type="cns:id" use="required"/>
53 </complexType>
54 <complexType name="productFamily">
55 <sequence>
56 <element name="label" type="cns:label"/>
57 <element name="image" type="cns:image" minOccurs="0" maxOccurs="unbounded"/>
58 <element name="link" type="cns:link" minOccurs="0" maxOccurs="unbounded"/>
59 <element name="column" type="tns:column" minOccurs="0" maxOccurs="unbounded"/>
60 <element name="productCategories" type="tns:productCategories" minOccurs="0" maxOccurs="unbounded"/>
61 </sequence>
62 <attribute name="id" type="cns:id" use="required"/>
63 </complexType>
64 <element name="productFamilies" type="tns:productFamilies" xdb:defaultTable="ECG_REP_ECO_CATALOG_TAB"/>
65 </schema>
66 ');
67 begin
68 dbms_xmlschema.registerSchema
69 (
70 schemaurl => 'http://ecoit.hp.com/ecg/repository/eco/category.xsd'
71 ,schemadoc => xmlschema
72 ,local => TRUE
73 ,genBean => false
74 ,genTypes => TRUE
75 ,genTables => TRUE
76 ,ENABLEHIERARCHY => DBMS_XMLSCHEMA.ENABLE_HIERARCHY_NONE
77 );
78 end;
79 /
PL/SQL procedure successfully completed.
Elapsed: 00:00:01.65
SQL> CREATE INDEX ECG_REP_ENTRY_XPATH_IDX ON ECG_REP_TRADOS_ENTRY_TAB ("XPATH", "NESTED_TABLE_ID")
2 /
Index created.
Elapsed: 00:00:00.01
SQL> set pages 0 lines 160
SQL> set long 10000
SQL> --
SQL> set autotrace on explain
SQL> --
SQL> xquery
2 xquery version "1.0";
3
4 declare namespace typ = "http://ecoit.hp.com/ecg/repository/types";
5 declare namespace c = "http://ecoit.hp.com/ecg/repository/eco/category";
6 declare namespace t = "http://ecoit.hp.com/ecg/repository/trados";
7
8 declare variable $c := $res/c:productFamilies;
9
10 declare function local:pc($pc as element(c:productCategory), $x as xs:string) as element() {
11 <c:productCategory id="{$pc/@id}">
12 {
13 <c:label>{data($es/t:entry[@xpath eq concat($x, "/label")]/t:translation)}</c:label>
14 ,
15 for $p in $pc/c:product
16 return local:p($p, concat($x, "/product/[@id=", $p/@id, "]"))
17 ,
18 for $pcc in $pc/c:productCategory
19 return local:pc($pcc, concat($x, "/productCategory[@id=", $pcc/@id, "]"))
20 }
21 </c:productCategory>
22 };
23
24 declare function local:p($p as element(c:product), $x as xs:string) as element() {
25 <c:product id="{$p/@id}">
26 {
27 <c:label>{string($es/t:entry[@xpath eq concat($x, "/label")]/t:translation)}</c:label>
28 ,
29 for $col in $p/c:column
30 return
31 <c:column id="{$col/@id}">
32 <c:label>
33 {
34 let $e := $es/t:entry[@xpath eq concat($x, "/column[@id=", $col/@id, "]/label")]
35 return
36 if(exists($e)) then string($e/t:translation)
37 else $col/c:label/text()
38 }
39 </c:label>
40 </c:column>
41 }
42 </c:product>
43 };
44
45 <c:productFamiles xsi:schemaLocation="http://ecoit.hp.com/ecg/repository/eco/category http://ecoit.hp.com/ecg/repository/eco/ca
tegory.xsd http://ecoit.hp.com/ecg/repository/types http://ecoit.hp.com/ecg/repository/types.xsd" lang="{$lang/lang/text()}" versi
on="{$c/@version}"> {
46 for $pf in $c/c:productFamily
47 let $x := concat("/productFamily[@id=", $pf/@id, "]")
48 return
49 <c:productFamily id="{$pf/@id}">
50 {
51 (:xpath index can not be applied within function:)
52 <c:label>{data($es/t:entry[@xpath eq concat($x, "/label")]/t:translation)}</c:label>
53 ,
54 for $img in $pf/c:image
55 return $img
56 ,
57 for $link in $pf/c:link
58 return $link
59 ,
60 for $col in $pf/c:column
61 return
62 <c:column id="{$col/@id}">
63 <c:label>{data($es/t:entry[@xpath eq concat($x, "/column[@id=", $col/@id, "]/label")]/t:translation)}</c:lab
el>
64 </c:column>
65 ,
66 for $pcs in $pf/c:productCategories
67 return
68 <c:productCategories>
69 {
70 for $pc in $pcs/c:productCategory
71 return local:pc($pc, concat($x, "/productCategories/productCategory[@id=", $pc/@id, "]"))
72 }
73 </c:productCategories>
74 }
75 </c:productFamily>
76 ,
77 for $p in $c/c:product
78 return local:p($p, concat("/product[@id=", $p/@id, "]")) } </c:productFamiles>
79 /
ERROR:
ORA-19228: XPST0008 - undeclared identifier: prefix 'res' local-name ''
Elapsed: 00:00:00.01
SQL> -
Multi mapping question using user defined function
Hi,
I have a message with multiple occuring nodes (i.e. one message with multiple orders (header + detail)) that I need to map to a idoc. I need to filter out of the source based on order type (in header) from creating an idoc.. How do I do it using user defined function + message mappping ?
madAll - Thanks much.. Here is my requirement that is no solved by regular mapping
<Root>
<Recordset>
<Ordheader>
<ord>
<ord_type>
</Ordheader>
<Ord_line>
<ord>
<Linnum>
</Ord_line>
</Recordset>
<Recordset>
<Ordheader>
<ord>
<ord_type>
</Ordheader>
<Ord_line>
<ord>
<Linnum>
</Ord_line>
</Recordset>
<Root>
As you see above, each recordset has order transaction. One Root message can contain multiple of these. So, when I map to the IDOC, I want to filter out any ord_type <> XX.
If I use regular graphical map, it only looks at first recordset and accepts all or rejects all.
I need to use UDF. In the UDF, what comes in as input ? Resultset is output -correct ? Now how do I usse graphical mapping with UDF to generate the correct target info -
Using User Defined Function is SQL
Hi
I did the following test to see how expensive it is to use user defined functions in SQL queries, and found that it is really expensive.
Calling SQRT in SQL costs less than calling a dummy function that just returns
the parameter value; this has to do with context switchings, but how can we have
a decent performance compared to Oracle provided functions?
Any comments are welcome, specially regarding the performance of UDF in sql
and for solutions.
create or replace function f(i in number) return number is
begin
return i;
end;
declare
l_start number;
l_elapsed number;
n number;
begin
select to_char(sysdate, 'sssssss')
into l_start
from dual;
for i in 1 .. 20 loop
select max(rownum)
into n
from t_tdz12_a0090;
end loop;
select to_char(sysdate, 'sssssss') - l_start
into l_elapsed
from dual;
dbms_output.put_line('first: '||l_elapsed);
select to_char(sysdate, 'sssssss')
into l_start
from dual;
for i in 1 .. 20 loop
select max(sqrt(rownum))
into n
from t_tdz12_a0090;
end loop;
select to_char(sysdate, 'sssssss') - l_start
into l_elapsed
from dual;
dbms_output.put_line('second: '||l_elapsed);
select to_char(sysdate, 'sssssss')
into l_start
from dual;
for i in 1 .. 20 loop
select max(f(rownum))
into n
from t_tdz12_a0090;
end loop;
select to_char(sysdate, 'sssssss') - l_start
into l_elapsed
from dual;
dbms_output.put_line('third: '||l_elapsed);
end;
Results:
first: 303
second: 1051
third: 1515
Kind regards
TaoufikI find that inline SQL is bad for performance but
good to simplify SQL. I keep thinking that it should
be possible somehow to use a function to improve
performance but have never seen that happen.inline SQL is only bad for performance if the database design (table structure, indexes etc.) is poor or the way the SQL is written is poor.
Context switching between SQL and PL/SQL for a User defined function is definitely a way to slow down performance.
Obviously built-in Oracle functions are going to be quicker than User-defined functions because they are written into the SQL and PL/SQL engines and are optimized for the internals of those engines.
There are a few things you can do to improve function
performance, shaving microseconds off execution time.
Consider using the NOCOPY hints for your parameters
to use pointers instead of copying values. NOCOPY
is a hint rather than a directive so it may or may
not work. Optimize any SQL in the called function.
Don't do anything in loops that does not have to be
done inside a loop.Well, yes, but it's even better to keep all processing in SQL where possible and only resort to PL/SQL when absolutely necessary.
The on-line documentation has suggested that using a
DETERMINISTIC function can improve performance but I
have not been able to demonstrate this and there are
notes in Metalink suggesting that this does not
happen. My experience is that DETERMINISTIC
functions always get executed. There's supposed to
be a feature in 11g that acually caches function
return values.Deterministic functions will work well if used in conjunction with a function based index. That can improve access times when querying data on the function results.
You can use DBMS_PROFILER to get run-time statistics
for each line of your function as it is executed to
help tune it.Or code it as SQL. ;) -
Problems with After Report trigger Updating using User-defined functions
Hi,
I have a report which uses SQL to select data that uses a user-defined stored function in the WHERE clause.
I use the same SQL in the After Report trigger with and UPDATE statement to flag all records selected as being run.
Data is being selected by the report no problem, but the records are not being updated. In a test, If I remove the conditions using the user functions, the records update as expected. In Live conditions I must have these conditions in the script.
I originally tried putting the UPDATE in a formual column, but that would not fire on records where that page was not paged through (or paged to end) in the Runtime Previewer.
Can anyone advise?In case anyone is interested.
The issue was that the stored functions have roles assigned for security.
PL/SQL for After Report doesn't seem to recognise the roles having been assigned for the report, so the implicit cursor update/select I had wouldn't work.
I changed the SELECT into an explicit CURSOR and introduced a FOR LOOP, keeping the UPDATE as an implicit statement.
I know see this was more of a PL/SQL issues than a report one, but such is life. So if anyone feels the urge to move it to the PL/SQL forum, then feel free!!
Have a problem free afternoon. :-) -
Can I call a User-Defined Mathscript Function using LabVIEW 7.1?
I am trying to use a User-Defined function call in a mathscript node using LabVIEW 7.1 and I cannot seem to make it work.
For example, consider that my mathscript node contains:
clear all;
close all;
x = linspace(1,100,5);
y = mltp(x);
where the labview vi is saved in the same folder as the mathlab script mltp.m that is given by:
function out1 = mltp(in1)
out1 = 5*in1;
Creating an array output of the mathscript node for y yields an empty array.
How can I use User-Defined functions in a mathscript node using LabVIEW 7.1?Hello,
LabVIEW 8.2 did not yet have the MathScript page in Tools >> Options. In this version, you need to set the search path through the MathScript Window. Launch the window from Tools >> MathScript Window. Then go to File >> MathScript Preferences. It sounds like you have done this.
A first guess is that your .m file calls some unsupported functions or uses unsupported syntax. If that were the case, you could put the script in the Script Editor of the MathScript Window and select the "Save and Compile Script" menu item. This will return any errors from compiling the script. However, you said you simplified the problem to a single multiplication. Since this still does not work, I need more information. What are all the directories listed for the path in the MathScript Preferences dialog from the MathScript window? What is the working directory? Where is your .m file located on disk? Can you attach your .m file or paste the contents in your message?
Grant M.
Staff Software Engineer | LabVIEW Math & Signal Processing | National Instruments -
HowTo: Business User defining Planning Functions?
Hi all,
does anybody have experience with allowing Business users Defining Planning Functions (e.g. account A = account B - account C) and could share a rough concept? I basically think about Fox-Formulas, but this includes issues with authorization in productive system.
Are there any solutions with translating free-text-Formulas (e.g. defined in an Attribut or flatfile, see scenario below) into ABAP or FOX Code?
Thanks for sharing your ideas and experiences,
Best regards,
Michael
Our scenario:
- Business users are responsible (and authorized) for specific local Companies.
- Values of the Chart of accounts are typed in into a input-ready query.
- for Dummy accounts (e.g. Z01) of the local companies no planning is allowed in the plan version, but business users should be allowed to define a specific formula, such as:
= + *
- these functions run at the end of the planning process in a separate planning version for translating local data into global accounts
- At best these functions should be maintained as an attribut of the dummy accounts or as free text in a text field next to the account in the plan query, but how to translate the formula into a Fox or ABAP formula without great effort?
- When using FOX, the issue is, that it is a different GUI and there would have to be a function for each company (there will come new companies) and so on....Hi Matthias,
thanks for the post. The problem isnt of keying in the formula isn't that big, this can for example be done in an attribute Char 60 with Flatfile upload for each planning process.
My problem is more
a) if I use FOX Formulas - the usage of fox formulas in productive system for Business User
I still think that using FOX formulas is the easiest thing to implement, but probably the hardest to run and maintain life. Are there any best practises / how tos about authorization and IP architecture for that?
b) if I use formulas as Text - the formula parsing itself and the communication with the planning function
Here you gave me the hint of using customer defined planning functions. That's probably the best thing. I first thought about about a formula parser that is called by fox. Still, parsing free text into structured formulas isn't easy, is it? Are there any how-tows?
best regards,
Michael -
How can I call a stateful webservice from a user-defined XPath function?
I'm calling a stateful webservice from a BPEL process using a PartnerLink which implements Custom Header Handler classes to handle the session state, storing the cookie as a property of the PartnerLink.
I'd also like to call this same stateful webservice, in the same session, from a user-defined XPath function enabling me to call this from an XSL Transformation.
Is this in any way possible? Can I access the cookie and attach it to the webservice call made by the user-defined XPath function?Actually, as long as the servlet returns valid javascript, you can indeed "call it" from the client. It will initiate a request and return the result to the browser.
This example uses Perl, but it could be easily modified to go to a servlet instead.
Note that it is only supported in DOM browsers (IE6+/NN6+/etc)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<title> Test server-side JS </title>
</head>
<body>
<script type="text/javascript">
function checkIt(variable, value)
var newScript = "cgi-bin/validateJS.cgi?"+variable+"="+value;
var body = document.getElementsByTagName('body').item(0)
var scriptTag = document.getElementById('loadScript');
if(scriptTag) body.removeChild(scriptTag);
script = document.createElement('script');
script.src = newScript;
script.type = 'text/javascript';
script.id = 'loadScript';
body.appendChild(script)
</script>
<p>Test.</p>
<form id="f1" action="">
<input type="text" name="t1" id="t1" onChange="checkIt(this.name, this.value)">
</body>
</html>
validateJS.cgi
#!/opt/x11r6/bin/perl
use CGI qw(:all);
my @valArray = split(/=/,$ENV{QUERY_STRING});
print "Content-type: text/javascript\n\n";
# myPass is the password
$myPass = "foobar";
if ("$valArray[1]" eq "$myPass")
print "alert(\"Success!!\")";
else
print "alert(\"Failure!!\")"; -
Using user defined variables in SAP BPC 7.0 NW
Hi,
I am using BPC 7.0 SP2 NW version. I want to do some calculatioins and/or comparision in the script logic by using user defined variables.
For Ex: I want to assign the property TIMEID of TIME dimension to a variable and then use this variable in my IIF statement.
I have tried a lot but not getting any solution.
Can anyone guide me in how to use user defined variables in Script Logic.
Your valuable reply is appreciated.
Thanks & Regards
Manoj DamleHi,
Thanks for the valuable reply.
But i want to define variables in the Script Logic and not in the Data Manager.
The scenario is like this:
I want to check the value of the DUMMYACC1 member of GL_ACCOUNT dimension with a constant and depending on the condition i want to update a user defined variable. This variable will further be used in the *SELECTCASE statement for decision making.
The Code is as follows:
*XDIM_MEMBERSET COMP_CODE = COMP_CODE_1
*XDIM_MEMBERSET BUS_AREA = BUS_AREA_1
*XDIM_MEMBERSET VERSION = VERSION_1
*XDIM_MEMBERSET CURRENCY = AUD
*XDIM_MEMBERSET DATASRC = DATASOURCE_1
*XDIM_MEMBERSET GL_ACCOUNT = SALESREVENUE,PRICE,QUANTITY,DUMMYACC1
*XDIM_MEMBERSET TIME=2009.MAY,2009.JUN
*XDIM_MEMBERSET CUSTOMERCATEGORY = CUSTOMER_CAT_1
*XDIM_MEMBERSET PROFIT_CTR = PROFIT_CTR_1
*XDIM_MEMBERSET SEGMENT = SEGMENT1
*XDIM_MEMBERSET MEASURES = PERIODIC
*FUNCTION PRO(%VAR1%,%VAR2%)
[%VAR1%].CURRENTMEMBER.PROPERTIES("%VAR2%")
*ENDFUNCTION
*FOR %GL_ACC% = DUMMYACC1
*FOR %CV_TIM% = 2009.MAY,2009.JUN
#CUR_MTH = IIF(([GL_ACCOUNT].[%GL_ACC%],[TIME][%CV_TIM%]) = 1.,1,NULL)
*NEXT
*NEXT
*SELECTCASE #CUR_MTH
*CASE 1
#CURRENTMTH = PRO(TIME,TIMEID)
*ENDSELECT
The errors which system gives is:
1. Duplicate formula found
2. Invalid MDX statement
3. #CUR_MTH & #CURRENTMTH is not a valid member
Please give your valuable suggestion.
Thanks and Regards
Manoj Damle -
XSLT Mapping - user defined Extension function
Hi to all,
can somebody helps me, please?
I need an own function, that can be used by the XSL Mapper. First I have only tried the sample given in Path <BPELPM>\integration\orabpel\samples\demos\XSLMapper\ExtensionFunctions
There is a java file with the defined functions and a xml file with the definition of this function for the mapper and last but not least a jar-file with the java class.
I have copied the jar to <JDEV_HOME>\jdev\lib\ext directory and in JDeveloper I have added SampleExtensionFunctions.xml to Tools->Preferences->XSL Map -> "User Defined Extension Functions Config File" field. After a restart of JDeveloper I find 2 new functions in the "User Defined Extension Functions" component palette page when a XSL Map is open. That's fine.
But if I test the mapping I get an error: "Failed to transform source XML.
java.lang.NoSuchMethodException: For extension function, could not find method org.apache.xpath.objects.XNodeSet.replaceChar([ExpressionCotext,]#STRING, #STRING)."
What is wrong?
Thanks in advance of your answer
best regard,
unoOracle XML support Extension function.
For example:
If we would like to import FAQDBUri.class with user-defined java functions, like TranslateDBUri(), we can write XSL file like this:
<xsl:template match="/" xmlns:dburig="http://www.oracle.com/XSL/Transform/java/FAQDBuri">
<xsl:variable name="urladd" select="dburig:TranslateDBUri($url)"/> -
Please help for User defined extension functions
the tutorial given for extension functions doesn't work as well as our new functions
even though i follow all the given steps and see the functions in my user defined extension functions tab in xslt map.
all the target nodes that use the extension function disappear in the resulted target xml.
please help.have you compiled your java file and uploaded the jar file(containg the .class file and the Manifest.MF file) in the <OC4J_HOME>\j2ee\home\applib directory and then restarted the server??
-
Component Palette --- "User Defined Extension Functions" not visible
I added a User-Defined XPath Extension Function in JDeveloper 11.1.1.3.0 --> Tools > Preferences > SOA As given here http://download.oracle.com/docs/cd/E15523_01/integration.1111/e10224/bp_appx_functs.htm#BEIHEBIJ
But I am not able see "User Defined Extension Functions" section itself in the component palette. Do I need to enable anything for see the section.
Can somebody help.
ThanksHi,
I am trying to create user defined extension function in JDeveloper 10.1.3.4 to be used with the Oracle ESB.I have followed the documentation provided by the Oracle to resolve this issue without any success can you please help me in providing me the details how did you resolved this issue.
Anticipating your earliest reply
regards
Narasimha -
User Defined External Function - How to work?
I have defined some external functions in java by following the description in
C:\OraBPELPM_3\integration\orabpel\samples\demos\XSLMapper\ExtensionFunctions
I can use my functions in JDeveloper, but they do not work on the Oracle BPEL engine.
Is it enough just to place the jar-file in <OC4J_HOME>\j2ee\home\applib and add the jar-file in class-path (as described)?
What about the xml-file specifying the functions (called SampleExtentionFunctions.xml in the documentation)?
Should this file be copied to <OC4J_HOME>\... ?
Here is the error message I get by running my service:
XPath expression failed to execute.
Error while processing xpath expression, the expression is "ora:processXSLT("TransformationInput.xsl", bpws:getVariableData("inputVariable", "request"))", the reason is java.lang.NoSuchMethodException: For extension function, could not find method org.apache.xpath.objects.XNodeSet.leadingZeros([ExpressionContext,] #NUMBER)..
Please verify the xpath query.
______________ MY JAVA CODE EXAMPLE: _____________________________
package extentionfunctions;
This is a sample XSL Mapper User Defined Extension Functions implementation class.
public class JavaExtensionFunctionsBpel
* Inserts leading zeros to a text, if this starts with a digit.
* Else the return value will be the same as the given text.
* The return value will have the specified length.
public static String leadingZeros(String text, int len)
{ String retur = text;
char c = (text == ""?'0':text.charAt(0));
if ('0'<=c && c<='0'+9) { // Is first char a digit?
retur = "";
int n = len - (text == ""?0:text.length());
for (int i=0; i<n; i++) { // Insert zeros:
retur = '0' + retur;
retur = retur + text;
return retur;
* Removes leading zeros from a text.
public static String removeLeadingZeros(String text)
{ String retur = text;
int pos = 0;
int len = (text == ""?0:text.length());
for (int i=0; i<len; i++) {
if (text.charAt(i)=='0') { // Is char a digit?
pos++;
return retur;
public static void main(String[] args)
{ // Basic test of functions:
int len = 5;
String s = "1234";
String r;
System.out.println("leadingZeros("+s+","+len+")="+(r=leadingZeros(s,len)));
System.out.println("removeLeadingZeros("+r+")="+removeLeadingZeros(s));
Regards
Flemming AlsFlemming, it looks like somthing is wrong in the xsl that it still goes to org.apache.xpath.objects.XNodeSet package instead of yours ..
I created a sample that illustrates the usage of this functions (even with 2 params, different types).
Java class (com.otn.samples.xslt.CustomXSLTFunctions)
package com.otn.samples.xslt;
public class CustomXSLTFunctions
<function name="extension:multiplyStringAndInt" as="number">
<param name="base" as="String"/>
<param name="multiplier" as="number"/>
</function>
public int multiplyStringAndInt (String pString, int pMultiplier)
int base = Integer.parseInt(pString);
return base * pMultiplier;
XML descriptor:
Note the types (in the java class and the xml descriptor)
for java:base -> string and for xslt:base -> string
for java:multiplier -> int and for xslt:multiplier -> number
<?xml version="1.0" encoding="UTF-8"?>
<extension-functions>
<functions extension:multiplyStringAndInt="http://www.oracle.com/XSL/Transform/java/com.otn.samples.xslt.CustomXSLTFunctions">
<function name="extension:multiplyStringAndInt" as="number">
<param name="base" as="string"/>
<param name="multiplier" as="number"/>
</function>
</functions>
</extension-functions>
Definition of variables in the process:
(as you can see, the base is a string - I do the conversion in my method, and the return value
is converted to a string by the engine)
<!-- Input -->
<element name="CustomXSLTFunctionProcessRequest">
<complexType>
<sequence>
<element name="base" type="string"/>
<element name="multiplier" type="int"/>
</sequence>
</complexType>
</element>
<!-- Output -->
<element name="CustomXSLTFunctionProcessResponse">
<complexType>
<sequence>
<element name="result" type="string"/>
</sequence>
</complexType>
</element>
Using the new function in the XSL transformation:
- watch out for the namespace declaration (xmlns:sample="...")
- and the usage (sample:multiplyStringAndInt)
<xsl:stylesheet version="1.0"
xmlns:ldap="http://schemas.oracle.com/xpath/extension/ldap"
xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20"
xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
xmlns:extension="http://www.oracle.com/XSL/Transform/java/com.otn.samples.xslt.CustomXSLTFunctions"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ora="http://schemas.oracle.com/xpath/extension"
xmlns:ns0="http://www.w3.org/2001/XMLSchema"
xmlns:orcl="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc"
xmlns:client="http://xmlns.oracle.com/CustomXSLTFunction"
exclude-result-prefixes="xsl plnk ns0 client ldap xp20 bpws extension ora orcl">
<xsl:template match="/">
<client:CustomXSLTFunctionProcessResponse>
<client:result>
<xsl:value-of select="extension:multiplyStringAndInt(/client:CustomXSLTFunctionProcessRequest/client:base,/client:CustomXSLTFunctionProcessRequest/client:multiplier)"/>
</client:result>
</client:CustomXSLTFunctionProcessResponse>
</xsl:template>
</xsl:stylesheet>
Then I created a jar file with the class (and for testing the xml descriptor in it)...
and put it into j2ee/home/applib directory
hth clemens
Maybe you are looking for
-
Hardware: Palm Centro Wireless: Sprint PC OS: Windows XP Pro After installing the "Software Update 1.07 (Windows installer) for Centro for Sprint" (Article ID: 6012 - http://kb.palm.com/wps/portal/kb/common/article/6012_en.html) starting from http:/
-
Problem while copying Text from Jtext Area ..
I am trying to copy text from a JtextArea onto any Text Editor .. What happens is that the pasted text in the Text Editor eg : TextPad, JCreator etc .. has extra Carriage Return appended at the end of everyline (line separator to be exact). Eg :- Act
-
Problems installing cs3 on windows 7
Does CS3 install and work normal when installed on a windows 7 system? Some say it installed / worked just fine. Others that they had problems installing or getting it to run. Others that it depens on which windows 7 system you have. Etc. etc. What d
-
Wrong result in multiplication
Hi, everybody! I have a problem with a simple multiplication for which I have not found a solution yet. And I do just hope, that anyone here has encountered and solved it already. The problem is as follows: JW = (long)(Math.floor(SOLZJ*100)); JW is a
-
Can you convert a Windows Quickbooks Pro 2011 file to an Ibank file?
does anyone know if you can you convert a Windows Quickbooks Pro 2011 file to an Ibank file?