JDAPI problem
HI Frank,Grant,Duncan
Scaning forms modules using JDAPI,
I've just noticed that when using Item.isDatabaseItem() on a push_button returns true.
Is that normal behaviour?
Using Forms9i patch 3 on XP.
Thanks
Whenever you create an item in Forms, the default value for Database Item is yes. In the Forms Builder you don't see this because that field is not exposed in the Property Palette for Buttons. But with the Java API, you have access to all properties, even if it's not relevant for that item.
There are lots of different item types, and for some item types this property is relevant, and not for others. However when exposing properties to the API, they are exposed based on an Object type (e.g. Item or Canvas) not based on what flavour of Object you have (e.g. Text item or Push button, both of which are of type Item).
All possible properties for any item will be exposed. Whether it makes sense to use those different combinations is up to the user.
For example, isInsertAllowed() for the push button item returns true. This isn't sensible for push buttons, but it's the default value.
The API allows you to look at all settings, including ones that aren't shown in the Builder (because the Builder knows they're not relevant). But the API is not constrained by that in any way, and it will show you what you've asked for. You have to know if it makes sense. :)
I hope that answers your question.
Regards,
Robin Zimmermann.
Similar Messages
-
JDAPI problem with java 1.6 SR9 in AIX
Hi,
i install Oracle Forms 11g R2 in AIX. My AIX server use IBM java 1.6 SR9.
When i run JDAPI, i face this problem: *oracle.forms.jdapi.JdapiStatusException: jniinitialize: Failed to create new forms context*.
but when i use java 1.6 SR8 or SR7 . it's OK.
Anyone face the problem when run jdapi with java 1.6 SR9 ?
Thank in advance.
hoangdiseAfter having a closer look at metalink it seems to be obvious, that Forms 6i (8.0.6.) only supports user exits generated with the 8.0.6. precompiler.
If this is the case new questions follow:
Is there a way to get a 8.0.6. precompiler?
Is it possible to connect to a 8.1.5. database with such a user exit? Does anybody have corresponding experiences?
Our customer uses a 8.1.7. database. What about connecting to that database with the user exit?
/Ralph -
Oracle Developer 11.1.1.3.0 JDAPI problem
Hi all,
I compiled a class in Oracle Jdeveloper (11.1.1.3.0) which using c:/Oracle/Middleware/as_1/jlib/frmjdapi.jar as a library.
I run the jdapi with a bat file like this:
set oracle_home=C:\Oracle\Middleware\as_1
set classpath=%oracle_home%\jlib\frmjdapi.jar;.
for %%f in (myForm.fmb) do %oracle_home%\jdk\bin\java myJdapiClass %%f username/password@databasename myObjectLibrary.olb
when I use these steps for myForm.fmb (created in oracle forms (11.1.1.3.0) ) the forms items type changes.
For example
text items turns to radio groups
push buttons turns to list item etc..,
how can I allow items type changes?
Any Suggestion?Hi vansul,
Thanks for your reply.
I removed the olb file from the .bat file but nothing changed. The same error occured. -
JDAPI problem with Developer 10g10.1.2.3
Hi,
I am trying to make some automatic changes to some forms using JDAPI. The process run smooth when using instalations of Developer 9.0.4 and Developer 10g10.1.2.0.2. When using Developer 10g10.1.2.3 I get a "Can´t open file" and "Unable to create new form context" error. My customer only has Develper 10g10.1.2.3.
Any suggestions?
Thanks in advance.Helllo,
Yes, I think I did. I have tried, with that version, in Windows 2000, in Linux and in Unix with the same result in all the cases. -
We are having problems getting the JDAPI samples provided with FormsBuilder9i working correctly. There are a couple of problems that occur.
1) When running GetFormName/GetModuleName the name of the form retrieved with the FormModule.getName() method always returns blank.
2) When running Traverse the following error occurs:
oracle.forms.jdapi.JdapiException: jniget_obj_prop failed
at oracle.forms.jdapi.BaseAPI._jni_get_obj_prop(Native Method)
at oracle.forms.jdapi.BaseFormsObject.getObjProp(Unknown Source)
at oracle.forms.jdapi.BaseFormsObject.getChildObjectProperty(Unknown Source)
at oracle.forms.jdapi.demo.Traverse.recurseObject(Traverse.java:110)
at oracle.forms.jdapi.demo.Traverse.<init>(Traverse.java:63)
at oracle.forms.jdapi.demo.Traverse.main(Traverse.java:162)
and
oracle.forms.jdapi.JdapiException: jniget_obj_prop failed
at oracle.forms.jdapi.BaseAPI._jni_get_obj_prop(Native Method)
at oracle.forms.jdapi.JdapiObjectListIterator.hasNext(Unknown Source)
at oracle.forms.jdapi.demo.Traverse.recurseObject(Traverse.java:117)
at oracle.forms.jdapi.demo.Traverse.<init>(Traverse.java:63)
at oracle.forms.jdapi.demo.Traverse.main(Traverse.java:162)
These errors occur with every form that we attempt to run them with.
The only changes made to the samples is to provide a full stack trace when the error is thrown, otherwise they are unchnaged from the distributed versions.
Any help resolving these problems would be appreciated.
Thanks.check whether frmjapi.dll (in case of Windows) or frmjapi.so can be reconginsed by Java ClassLoader. The problem here is when Jdapi calls it epects JNI layer dll be found by class loader which is a glue between Jdapi and underlying capi.
-
Jdapi attaching uppercase library problem
Am attempting to use Jdapi to re-attach libraries into my forms modules and force the attachments to be in uppercase.
AttachedLibrary newLib = new AttachedLibrary((FormModule)attachedLibrary.getOwner(), "DOC");This is producing a java NullPointerException.
java.lang.NullPointerException
at oracle.forms.jdapi.BaseAPI._jni_attach_lib(Native Method)
at oracle.forms.jdapi.AttachedLibrary.<init>(Unknown Source)Running on Windows 2k; have ensured the PLL is available and in the correct case already. Changing the "DOC" to "doc" works fine.
Attempting to load the library manually using:
JdapiModule modLib = JdapiModule.openModule("DOC.PLL"); works fine,
Seems to only have a problem trying to attach the PLL to the form if it is uppercase - if I then use that modLib variable in the attachment code
AttachedLibrary newLib = new AttachedLibrary((FormModule)attachedLibrary.getOwner(), modLib.getName());also fails with a NullPointerException.
Has anyone else tried (and succeeded) to attach an uppercase PLL to a Form using Jdapi? Could there be something wrong with my working environment?
Cheers,
Marc.I found a work-around for the problem I encountered.
Instead of detaching then re-attaching the required PLL, I am now simply setting the LibraryLocation property with an uppercase setting:
attachedLibrary.setStringProperty(JdapiTypes.LIBRARY_LOCATION_PTID,attachedLibrary.getName().toUpperCase());Cheers,
Marc. -
Library path problem using JDAPI
HI,
Under Windows XP, I am trying to attach library to forms using JDAPI. But the path also gets hardcoded in this case. When I move the forms to Linux and try to open the forms, it says library not found.
Can anyone help me in this regard ?
I would highly appreciate immediate help.
Thanks & Regds,
NandakumarIts home directory does not contain files .profile,.bashrc,.bash_historySo feel free to create it manually.
I have added LD_PATH_LIBRARY in file /etc/init.d/oracle-xe This not much well but all work. Of course it didn't help. Because you set it for root (again) and this setting is ignored because su command (in that script) uses oracle's enviroment settings.
So create .bash_profile in /home/oracle (oracle's home) and set the enviroment in that file. -
Hi,
I've been working with JDAPI for a while to migrate some forms modules from 6i version to 10g version, this is worlking fine, but now i want to do some changes to these 10g forms modules programmatically using JDAPI, so i develop the application and now when i'm running the process which has JDAPI functionality the application execution gets freeze.
After a while i realize this only happens with 10g modules, if i use a 6i module the application works fine, so this mean i can not use the JDAPI to manage 10g modules ??
I use the JDAPI from a 11g installation and the application execution gets freeze too.
Thanks and Regards
CarlosHmm - maybe I am misreading...
Are you trying to use the JDAPI that is included in Forms 10 to make changes in your v10 and v6 modules? Or are you using the v6 JDAPI to alter v10 modules? The latter will not work. Each new installation has an updated version of JDAPI. You must use this version to work with modules of the same or older versions. You cannot use it with newer versions. If you think you are already doing it correctly, look carefully at your PATH and CLASSPATH setting to ensure that what you "think" is actually what is occurring. -
JDAPI Error: ORA-04020: deadlock detected while trying to lock object
I have written a JDAPI program to perform read-only impact analysis and report any problems.
The following error is occurring:
"A deadlock among DDL and parse locks is detected.
This deadlock is usually due to user errors in the design of an application or from issuing a set of concurrent statements which can cause a deadlock.
ORA-04020: deadlock detected while trying to lock object /NSPC6/CHECK_FOR_FORM_CHANGE"
The error refers to a procedure in a PL/SQL library.
In one case the error occurred after my final "end of processing" message, which is followed only by a call to "Jdapi.shutdown()".
Any ideas?
Thanks,
Neville Sweet.I have written a JDAPI program to perform read-only impact analysis and report any problems.
The following error is occurring:
"A deadlock among DDL and parse locks is detected.
This deadlock is usually due to user errors in the design of an application or from issuing a set of concurrent statements which can cause a deadlock.
ORA-04020: deadlock detected while trying to lock object /NSPC6/CHECK_FOR_FORM_CHANGE"
The error refers to a procedure in a PL/SQL library.
In one case the error occurred after my final "end of processing" message, which is followed only by a call to "Jdapi.shutdown()".
Any ideas?
Thanks,
Neville Sweet. -
My purpose is to convert "windows-developed" .fmb files to run on an AIX box (ie case-sensitive issues).
I was advised (by Oracle) to avoid using DETACH() with the iterator current, so I copied the details and then re-visted them. Although I am able to attach libraries, I am unable to detach some.
I'm no C expert, but I was also lead to believe that this problem exist in the C API too. Nevertheless, a working API to workaround case-sensitive issues remains my gaol.
I have documented out -> detachId.detach();
With detach() put back in, I get the error :-
Connecting to un/pwd@dbase_aliasConnected to un/pwd@dbase_alias
Processing form form1.fmbForm Name module is FORM1
Examining menuAttached Menu needs changing=FO_MENU
Examining librariesAttached Library requires no change=d2kwutil
Attached Library name to be changed=allpack
Attached Library requires no change=allproc
Attached Library name to be changed=allshare
Attached Library requires no change=webutil
Detachingd2kwutil
ALLPACK
allproc
ALLSHARE
Exception in thread main
webutil
Attachingoracle.forms.jdapi.JdapiIllegalStateException: Null d2fob pointer at oracle.forms.jdapi.BaseFormsObject.getStringProperty(Unknown Source)
at oracle.forms.jdapi.AttachedLibrary.getName(Unknown Source)
at fixForm.main(fixForm.java:146)
Process exited with exit code 1.
import java.io.*;
import oracle.forms.jdapi.*;
public class fixForm
static FormModule fmb;
public static void main(String[] args)
String debug="";
String formName="";
String menuName="";
String libName="";
String connString="";
String pad=" ";
String line="------------------------------------------------------------------------------";
boolean menuIsChanged = false;
boolean libIsChanged = false;
AttachedLibrary[] arrayOfLibs = new AttachedLibrary[15];
AttachedLibrary attachId;
AttachedLibrary detachId;
int noOfLibs = 0;
if (args.length != 3)
System.out.println("");
System.out.println(line);
System.out.println("Usage: java fixForm <module name> <user/password@connectString> <Debug>");
System.out.println(" eg java fixForm form1.fmb un/pwd@dbase_alias Y");
System.out.println(line);
//System.exit(0);
formName = "form1.fmb";
connString = "un/pwd@dbase_alias";
debug = "Y";
else
formName = args[0];
connString = args[1];
debug = args[2];
// Connect to the database
if (debug.equals("Y")) {System.out.println(">>> Connecting to " + connString);}
Jdapi.connectToDatabase(connString);
if (debug.equals("Y")) {System.out.println(pad+"Connected to " + connString);}
// Identify the form.
if (debug.equals("Y")) {System.out.println(">>> Processing form " + formName);}
fmb = FormModule.open(formName);
if (debug.equals("Y")) {System.out.println(pad+"Form Name module is " + fmb.getName());}
// Identify the menu, if applicable.
if (debug.equals("Y")) {System.out.println(">>> Examining menu");}
menuName = fmb.getMenuModule();
// See if set.
if ( (menuName.length() == 0) | (menuName.toUpperCase() == "DEFAULT") )
if (debug.equals("Y")) {System.out.println(pad+"Menu is blank, or default");}
else
// Check case sensitivity is lower case.
if (menuName == menuName.toLowerCase())
if (debug.equals("Y")) {System.out.println(pad+"Attached Menu is fine=" + menuName);}
// Otherwise, re-attach with correct case sensitivity.
else
if (debug.equals("Y")) {System.out.println(pad+"Attached Menu needs changing=" + menuName);}
menuIsChanged = true;
try
fmb.setMenuModule(menuName.toLowerCase());
catch(Exception e1)
System.out.println(line);
System.out.println("Error: "
+ formName
+ " could not re-attach menu "
+ menuName.toLowerCase());
System.out.println(line);
System.exit(0);
// Identify all associated libraries.
JdapiIterator all_libs = fmb.getAttachedLibraries();
// Process the above list of attached libraries
if (debug.equals("Y")) {System.out.println(">>> Examining libraries");}
while (all_libs.hasNext())
noOfLibs++;
// Identify each library name.
AttachedLibrary lib = (AttachedLibrary)all_libs.next();
arrayOfLibs[noOfLibs] = lib;
libName = lib.getLibraryLocation();
// See if it's not all lower case
if (libName == libName.toLowerCase())
if (debug.equals("Y")) {System.out.println(pad+"Attached Library requires no change=" + libName);}
else
libIsChanged = true;
libName = libName.toLowerCase();
if (debug.equals("Y")) {System.out.println(pad+"Attached Library name to be changed=" + libName);}
// If their are case-sensitive libs, then re-build the attachments accordingly.
if (libIsChanged = true)
// Now we have the list, de-attach all libraries.
if (debug.equals("Y")) {System.out.println(">>> Detaching");}
for (int j = 1; j <= noOfLibs; j++)
detachId = arrayOfLibs[j];
libName = detachId.getLibraryLocation();
if (debug.equals("Y")) {System.out.println(pad+libName);}
try
//detachId.detach();
catch(Exception e2)
System.out.println(line);
System.out.println("Error: "
+ formName
+ " could not detach library "
+ libName);
System.out.println(line);
System.exit(0);
// Now that no libs are attached, re-attach, based on list.
if (debug.equals("Y")) {System.out.println(">>> Attaching");}
for (int k = 1; k <= noOfLibs; k++)
attachId = arrayOfLibs[k];
libName = attachId.getName().toLowerCase();
if (debug.equals("Y")) {System.out.println(pad+libName);}
try
AttachedLibrary new_lib = new AttachedLibrary(fmb,libName);
catch(Exception e3)
System.out.println(line);
System.out.println("Error: "
+ formName
+ " could not attach library "
+ libName);
System.out.println(line);
System.exit(0);
// If the form has been changed, then compile and save.
if (menuIsChanged | libIsChanged)
// Compile the form to create a fmx.
if (debug.equals("Y")) {System.out.println(">>> Compiling");}
try
fmb.compile();
catch(Exception e4)
System.out.println(line);
System.out.println("Error: "
+ formName
+ " could not recompile");
System.out.println(line);
System.exit(0);
// Save the form.
if (debug.equals("Y")) {System.out.println(">>> Saving");}
try
fmb.save(formName);
catch(Exception e5)
System.out.println(line);
System.out.println("Error: "
+ formName
+ " could not save");
System.out.println(line);
// Free the underlying native object
fmb.destroy();
// Shutsdown the Jdapi instance
Jdapi.shutdown();
if (debug.equals("Y")) {System.out.println(">>> Quiting");}
I would be very grateful if you are able to offer me some advice here.
Rgds,
Mark . Spooner @ Investmaster . ComMy purpose is to convert "windows-developed" .fmb files to run on an AIX box (ie case-sensitive issues).
I was advised (by Oracle) to avoid using DETACH() with the iterator current, so I copied the details and then re-visted them. Although I am able to attach libraries, I am unable to detach some.
I'm no C expert, but I was also lead to believe that this problem exist in the C API too. Nevertheless, a working API to workaround case-sensitive issues remains my gaol.
I have documented out -> detachId.detach();
With detach() put back in, I get the error :-
Connecting to un/pwd@dbase_aliasConnected to un/pwd@dbase_alias
Processing form form1.fmbForm Name module is FORM1
Examining menuAttached Menu needs changing=FO_MENU
Examining librariesAttached Library requires no change=d2kwutil
Attached Library name to be changed=allpack
Attached Library requires no change=allproc
Attached Library name to be changed=allshare
Attached Library requires no change=webutil
Detachingd2kwutil
ALLPACK
allproc
ALLSHARE
Exception in thread main
webutil
Attachingoracle.forms.jdapi.JdapiIllegalStateException: Null d2fob pointer at oracle.forms.jdapi.BaseFormsObject.getStringProperty(Unknown Source)
at oracle.forms.jdapi.AttachedLibrary.getName(Unknown Source)
at fixForm.main(fixForm.java:146)
Process exited with exit code 1.
import java.io.*;
import oracle.forms.jdapi.*;
public class fixForm
static FormModule fmb;
public static void main(String[] args)
String debug="";
String formName="";
String menuName="";
String libName="";
String connString="";
String pad=" ";
String line="------------------------------------------------------------------------------";
boolean menuIsChanged = false;
boolean libIsChanged = false;
AttachedLibrary[] arrayOfLibs = new AttachedLibrary[15];
AttachedLibrary attachId;
AttachedLibrary detachId;
int noOfLibs = 0;
if (args.length != 3)
System.out.println("");
System.out.println(line);
System.out.println("Usage: java fixForm <module name> <user/password@connectString> <Debug>");
System.out.println(" eg java fixForm form1.fmb un/pwd@dbase_alias Y");
System.out.println(line);
//System.exit(0);
formName = "form1.fmb";
connString = "un/pwd@dbase_alias";
debug = "Y";
else
formName = args[0];
connString = args[1];
debug = args[2];
// Connect to the database
if (debug.equals("Y")) {System.out.println(">>> Connecting to " + connString);}
Jdapi.connectToDatabase(connString);
if (debug.equals("Y")) {System.out.println(pad+"Connected to " + connString);}
// Identify the form.
if (debug.equals("Y")) {System.out.println(">>> Processing form " + formName);}
fmb = FormModule.open(formName);
if (debug.equals("Y")) {System.out.println(pad+"Form Name module is " + fmb.getName());}
// Identify the menu, if applicable.
if (debug.equals("Y")) {System.out.println(">>> Examining menu");}
menuName = fmb.getMenuModule();
// See if set.
if ( (menuName.length() == 0) | (menuName.toUpperCase() == "DEFAULT") )
if (debug.equals("Y")) {System.out.println(pad+"Menu is blank, or default");}
else
// Check case sensitivity is lower case.
if (menuName == menuName.toLowerCase())
if (debug.equals("Y")) {System.out.println(pad+"Attached Menu is fine=" + menuName);}
// Otherwise, re-attach with correct case sensitivity.
else
if (debug.equals("Y")) {System.out.println(pad+"Attached Menu needs changing=" + menuName);}
menuIsChanged = true;
try
fmb.setMenuModule(menuName.toLowerCase());
catch(Exception e1)
System.out.println(line);
System.out.println("Error: "
+ formName
+ " could not re-attach menu "
+ menuName.toLowerCase());
System.out.println(line);
System.exit(0);
// Identify all associated libraries.
JdapiIterator all_libs = fmb.getAttachedLibraries();
// Process the above list of attached libraries
if (debug.equals("Y")) {System.out.println(">>> Examining libraries");}
while (all_libs.hasNext())
noOfLibs++;
// Identify each library name.
AttachedLibrary lib = (AttachedLibrary)all_libs.next();
arrayOfLibs[noOfLibs] = lib;
libName = lib.getLibraryLocation();
// See if it's not all lower case
if (libName == libName.toLowerCase())
if (debug.equals("Y")) {System.out.println(pad+"Attached Library requires no change=" + libName);}
else
libIsChanged = true;
libName = libName.toLowerCase();
if (debug.equals("Y")) {System.out.println(pad+"Attached Library name to be changed=" + libName);}
// If their are case-sensitive libs, then re-build the attachments accordingly.
if (libIsChanged = true)
// Now we have the list, de-attach all libraries.
if (debug.equals("Y")) {System.out.println(">>> Detaching");}
for (int j = 1; j <= noOfLibs; j++)
detachId = arrayOfLibs[j];
libName = detachId.getLibraryLocation();
if (debug.equals("Y")) {System.out.println(pad+libName);}
try
//detachId.detach();
catch(Exception e2)
System.out.println(line);
System.out.println("Error: "
+ formName
+ " could not detach library "
+ libName);
System.out.println(line);
System.exit(0);
// Now that no libs are attached, re-attach, based on list.
if (debug.equals("Y")) {System.out.println(">>> Attaching");}
for (int k = 1; k <= noOfLibs; k++)
attachId = arrayOfLibs[k];
libName = attachId.getName().toLowerCase();
if (debug.equals("Y")) {System.out.println(pad+libName);}
try
AttachedLibrary new_lib = new AttachedLibrary(fmb,libName);
catch(Exception e3)
System.out.println(line);
System.out.println("Error: "
+ formName
+ " could not attach library "
+ libName);
System.out.println(line);
System.exit(0);
// If the form has been changed, then compile and save.
if (menuIsChanged | libIsChanged)
// Compile the form to create a fmx.
if (debug.equals("Y")) {System.out.println(">>> Compiling");}
try
fmb.compile();
catch(Exception e4)
System.out.println(line);
System.out.println("Error: "
+ formName
+ " could not recompile");
System.out.println(line);
System.exit(0);
// Save the form.
if (debug.equals("Y")) {System.out.println(">>> Saving");}
try
fmb.save(formName);
catch(Exception e5)
System.out.println(line);
System.out.println("Error: "
+ formName
+ " could not save");
System.out.println(line);
// Free the underlying native object
fmb.destroy();
// Shutsdown the Jdapi instance
Jdapi.shutdown();
if (debug.equals("Y")) {System.out.println(">>> Quiting");}
I would be very grateful if you are able to offer me some advice here.
Rgds,
Mark . Spooner @ Investmaster . Com -
Get the form module version using JDAPI program
Hi
I have one problem to find the verison of form module using java (JDAPI) programming.
To the JDAPI program i am just passing the form name. by reading the form it has to say the form version.
Is there any method to get this...
Thanks in advance.
MadhavaI solved my problem...
first of all.
Versioning was enabled for the folder but apparently it didnt work so i disabled it and enabled it again. Then I got the correct reource instead of null.
second thing
later in mycode I used this to get the path of the resource
resource.getRID().getPath();
but this gives the path to where the version of the document can be found... something like /documents/~System/xx/xxxxx/xxxx
where x is numbers
after doing a little debugging I found out that
resource.getAccessRID().getPath()
returns the path to where in CM the resource is stored.
I hope My experience here can help others.
I am glad that I solved my problem, but I find it extremely worrying that some settings in CM apparently stops working without any apparent reason.
We have experienced this with other properties like Manual Ordering, Approval process, have any one else had these problems and found the cause then I would like to hear about it -
Using JDAPI to manipulate record group
Hi.
I am doing a migration from oracle forms 4.5 to 10g. For now I was able to manage/fix everyting using JDAPI interface. Now I am stuck with the following problem. In forms 4.5 it was perfectly legal to use a value of record group column larger than data length of that column. From forms 6+ there is a runtime error generated when this situation is met. What I wanted to do is to change/truncate record group value to the length of that column using JDAPI. No matter how I search I cant find proper metod to do the job. That is to change the value of record group column. Did anybody had a similar situation and was able to solve it.
Best regards.Hi.
I am doing a migration from oracle forms 4.5 to 10g. For now I was able to manage/fix everyting using JDAPI interface. Now I am stuck with the following problem. In forms 4.5 it was perfectly legal to use a value of record group column larger than data length of that column. From forms 6+ there is a runtime error generated when this situation is met. What I wanted to do is to change/truncate record group value to the length of that column using JDAPI. No matter how I search I cant find proper metod to do the job. That is to change the value of record group column. Did anybody had a similar situation and was able to solve it.
Best regards. -
Using JDAPI to reattach PLL Library/Libraries
Hi
I am attempting to change the libraries attached to some forms, to convert the names to lowercase as part of a Unix deployment project.
I am using the standard code posted on Metalink. The Forms were Designer-generated as Forms 4.5 originally and have been upgraded to Forms 9.0.4.0.19. I am using the JDK in the Developer Suite Oracle Home. The Forms are in a different directory to the Libraries, but all the directories are in the FORMS90_PATH set both in the Registry and as a cmd.exe environment variable.
I have two problems:
1) If I attempt to just list the libraries attached to the Form, with something like:
FormModule fmd;
fmd=FormModule.open(args[0]);
System.out.println("Processing module " + fmd.getName() + "...");
JdapiIterator all_libs = fmd.getAttachedLibraries();
while (all_libs.hasNext())
AttachedLibrary lib = (AttachedLibrary)all_libs.next();
System.out.println("Attached Library = " + lib.getName());
fmd.destroy();
This returns:
Processing module MODULE...
Attached Library = OFG4TEL
Attached Library = OFG4MES
Attached Library = OFG4BSL
Attached Library = OFGMES
Unfortunately, I know that there are more libraries than this. The Form is attached to a single module library (called MODULE.pll), which is attached to an application-level library, which is then attached to the Designer-libraries (OFG4*).
Does anyone know why this code lists the Designer libraries, but not the others?
If you convert the FMB to XML, it also has only the Designer-libraries, but opening the Form in Form Builder shows the full list.
2) I attempted to remove all the libraries from the Form by adding a lib.destroy(); into the loop above and a fmd.save(args[0]); after it. When I run this the loop terminates after the first iteration. It doesn't report any errors, but it doesn't actually remove the module library either. It is doing something though, because if you reopen the Form in Form Builder the module and application library attachments have been lost and just the Designer ones remain?
I don't really want to update all the modules by hand, and any assistance would be greatly appreciated.
FWIW I also tried converting the FMBs to XML using the IFF2XML90 batch file, and then doing a search & replace on the XML file before converting back into a Form using IFXML2F90.bat. This doesn't work either because it also loses the module and application library attachments as described above, possibly because these batch files are using JDAPI internally and JDAPI doesn't like my Forms!
Thanks
RogerI sincerely hope that you have found a solution by now....
It is a strange situation that you describe.
I think you might have found that the OFG-libraries are actually in a different directory from where you expected them to be found by JDAPI. Have you used lib.getLibraryLocation()?
The next step would have entail trying to find out where this different path was set, and why JDAPI uses that setting, instead of the settings in registry and batchfile.
Just some thoughts.
Greetings!
Remco -
Problem building dependencies for pll
Hi all,
What may be the cause of the problem like this when building dependencies for pll module:
Failed to load lib
oracle.forms.jdapi.JdapiException: Failed to load lib
at oracle.forms.jdapi.BaseAPI._jni_load_plsqllib(Native Method)
at oracle.forms.jdapi.PlsqlModule.open(Unknown Source)
at oracle.forms.jdapi.PlsqlModule.open(Unknown Source)
at oracle.des.ia.parser.library.PLLParser.parse(PLLParser.java:77)
at oracle.des.ia.AnalysisTool.executeParser(AnalysisTool.java:1745)
at oracle.des.ia.AnalysisTool.process(AnalysisTool.java:1319)
at oracle.des.ia.AnalysisTool.process(AnalysisTool.java:992)
at oracle.repos.tools.dependency.manager.framework.DependencyAnalyzer.parseObject(DependencyAnalyzer.java:527)
at oracle.repos.tools.dependency.manager.framework.DependencyAnalyzer.analyzeUsing(DependencyAnalyzer.java:383)
at oracle.repos.tools.dependency.manager.framework.DependencyAnalyzer.analyzeUsing(DependencyAnalyzer.java:306)
at oracle.repos.tools.dependency.manager.framework.DependencyAnalyzer.analyze(DependencyAnalyzer.java:278)
at oracle.repos.tools.dependency.manager.dialog.AnalyzeDialog$4.runImpl(AnalyzeDialog.java:652)
at oracle.repos.tools.dependency.manager.adapter.RunnableErrAdapter.run(RunnableErrAdapter.java:17)
at java.lang.Thread.run(Thread.java:536)
I'm using Oracle Repository 6.5.95.4.10Goto the following link:
http://www.oracle.com/technology/documentation/forms/902docs/9021comp_rn_u_forms.pdf
see section: 4.11.3 -
Problem with display after forms migration
We are in the process of migrating forms 6i to forms 9i.
We notice once the forms are in 9i, some of the text have lines overlapping each other.
Anyone know how of fix this?
We have thousands of forms, so manually changing it is not an option.
Thanks
CharlesWe also have this problem.
Boilerplate text requires more space above it, and sometimes gets pushed down by another object. This is particularly evident when boilerplate is split over multiple lines, such as would be used for a column heading.
Apparently this is a Java text rendering issue and "not a bug". Nothing good comes easy...
There is a server solution you could try. It involves setting mapFonts="yes" in the basejinin.htm file.
Setting mapFonts causes all fonts to appear smaller, with less vertical space between text.
The alternative is to use JDAPI, which is the Oracle-supplied Java Design-time API, to modify all your Forms. Have a look at ChangeColors.java in the Forms Demos.
I have thus far used JDAPI only for impact analysis (eg. to find LOVs that display too low on the screen because we were catering for a bug that is now fixed).
Maybe you are looking for
-
I'm trying to get a MS Flex Grid to work in my Form. I put the ActiveX Control in the form, and set the OLE Class to "MSFlexGridLib.MSFlexGrid.1". I then right-clicked the control, selected "Insert Object" picked the flex grid from the list and click
-
I am away from PC and want to upgrade to IOS 5 to view Olympics videos. How can I do this?
-
W32time source showing as Local CMOS clock
I have 3 virtual servers, all on different hosts, which are currently showing the wrong time. All other machines on the Domain get their time from the Domain Controller. I have only been making changes on 1 server to ensure that this works. Originall
-
Locked folder I can't get rid of.
I was burning a data-DVD of some photos when I hit a snag navigating in Finder, and so I control-clicked on Finder and told it to relaunch. But by doing that, it interrupted the DVD burn. Now, I have a folder on my desktop that is called Untitled DVD
-
10g EM Creating User-Defined Metrics
I am trying to create some user-defined metrics to get a threshold for our ASM disk group used space percentage, archiving used space percentage, and so on. I have read the article 'System Monitoring Using Oracle Enterprise Manager 10g Release 2' on