Since you are running in a Desktop (client-server) architecture, the login prompt and buffering are directly tied to how the local Windows environment interacts with your Oracle 11gR2 database.
In a client-server setup, clicking a report launches a completely separate executable (
rwrun60.exe or rwcli60.exe) in the background. Because it is a separate program, it does not inherently know who is logged into the Form (ifrun60.exe).Here is how to resolve the login prompt and the buffering on your desktop clients:
1. The Fix for the Double Login Prompt
You need to explicitly pass the active database connection from the Form to the Report executable using your Form's PL/SQL code.
Update the trigger that fires your report (usually
WHEN-BUTTON-PRESSED) to pass the current session's userid:plsql
DECLARE
v_connect_str VARCHAR2(100);
BEGIN
-- Dynamically fetch the current username/password@database
v_connect_str := Get_Application_Property(CONNECT_STRING);
-- Pass the connection string using the USERID parameter
-- Replace 'my_report' with your actual report filename
Run_Product(REPORTS, 'my_report', SYNCHRONOUS, RUNTIME,
FILESYSTEM, 'USERID='||v_connect_str, NULL);
END;
Use code with caution.
2. The Fix for the "Buffering" / Hanging Issue
In a desktop environment, intermittent hanging or buffering is almost always caused by one of three local Windows client configurations:
- The Default Printer Bug (Most Common): Client-server Oracle Reports 6i strictly queries the Windows default printer to calculate page layouts before rendering the report on the screen. If the user's default printer is a network printer that is offline, sleeping, or slow to respond, the report will buffer or hang indefinitely.
- Fix: Change the user's Windows default printer to a local virtual printer (like "Microsoft Print to PDF" or "Microsoft XPS Document Writer"). If the report opens instantly after doing this, you have found your culprit.
- SQLNET.AUTHENTICATION_SERVICES Conflict: Oracle 11gR2 utilizes newer security protocols than Reports 6i natively expects.
- Fix: On the client desktop machine, open the
sqlnet.orafile (located in your Oracle Client Home\NETWORK\ADMINdirectory). Look for the lineSQLNET.AUTHENTICATION_SERVICES = (NTS)and change it to:textSQLNET.AUTHENTICATION_SERVICES = (NONE)Use code with caution.
- Fix: On the client desktop machine, open the
- TNSNAMES Path Confusion: If the client machine has multiple Oracle Homes (e.g., one for the 11g database client and one for Forms/Reports 6i), the Report engine might be looking at a different
tnsnames.orafile than the Form engine. This causes it to hang while trying to resolve the database alias. - Fix: Make sure the exact same
tnsnames.orafile is copied into the\NET80\ADMIN(or\NETWORK\ADMIN) folder of your Forms/Reports 6i home directory.
Restart the client system.
plsql
-- Change SYNCHRONOUS to ASYNCHRONOUS
Run_Product(REPORTS, 'my_report', ASYNCHRONOUS, RUNTIME,
FILESYSTEM, 'USERID='||v_connect_str, NULL);
Since the network and printer defaults are correct but the issue persists,
the problem is a known compatibility conflict between the 32-bit Oracle 6i
networking layer and the 64-bit Windows OS / 11g Database architecture.