Display parameter values in separate sheet in Crystal Reports 2008

Dear all,
I am using CR 2008 SP6 and I want to provide/display the values of the parameters which the user has entered before executing the Crystal report.
Is there any way to display this values, maybe on a separate sheet or area within the report?
Any idea would be great.
Best regards,
Stefanos from Munich/Germany

For single-value parameters, simply drag them to the report canvas to display them.  For more complext cases, see Printing Parameter Selections for Multiple or RangeValues in Crystal Reports</title></head><body><!…

Similar Messages

  • Can we create Multi Tabbed excel Sheet using Crystal Reports 2008

    Hi,
      We want to create a Crystal Report which will export the output as multiple Tab's ( we can use sub reports).  Can we create a Multi Tabbed excel Sheet using Crystal Reports 2008 ( not  Crystal reports Basic 2008). Please share any information/links on how to do that.
    Also if it is not supported please let us know which version supports it.
    Thanks,
    Vasu

    At least one of the 3rd-party Crystal Reports Desktop Scheduling tools listed at: http://www.kenhamady.com/bookmarks.html provides that functionality.  It allows you to burst a single report so that each Group at level 1 becomes a separate tab.  You can control the tab names (and tab colors) via fields/formulas inside the report.
    You can also automate the process of exporting to (and also replacing or appending to) specified tabs inside existing workbooks.

  • Display problem when reading Traditional Chinese in Crystal Report 2008

    Hi All,
    I have tried to connect MS SQL 6.5 to build up a report. However, I encounter a problem when read Traditional Chinese. all chinese characters turn into adnormal characters. I wonder it is problem of SQL Server or some setting that I may not know. In addition, I can able to read chinese in the application program , ISQL / Query Analyzer. Please help to give idea and suggestion to fix this. Thanks
    SQL Server: MS SQL Server  6.5
    Client OS: Window XP ( Traditional Chinese Version)
    Server OS: Window NT and Window Server 2000
    Stsyou

    Hi
    If you are using a Chinese language build database, Crystal Reports English build might not display the characters properly as non english databases include one byte characters as ASCII code character and double-byte characters as their own language code character.
    Traditional Chinese, Simplified Chinese, Japanese (Kanji, Hiranga, and Katakana), Korean and Vietnamese use double-byte characters.
    However, a possible workaround to this issue is to verify that the encoding on the database client is configured according to the examples below. Also, you will need to install the language pack in the English environment.
    CONFIGURATION EXAMPLES:
    Shift-JIS for a Japanese database
    Big5 for a Traditional Chinese database
    GB2312 for a Simplified Chinese database
    iso-2022-kr for a Korean database
    Windows 1258 for a Vietnamese database
    EXAMPLE SCENARIO:
    An Oracle database saves non-English language data such as Japanese.
    The Windows operating system is English.
    STEP TO CONFIGURE THE CHARACTER CODE IN THE ENVIRONMENT SETTING
    (This step is based on the details of the EXAMPLE SCENARIO.)
    1. Configure the system environment on the database client side to 'Shift-JIS' as the character code set in the Environment Setting.
    This results in the NLS_LANG variable set to Japanese_Japan.JA16SJIS under the registry HKEY_Local_Machine\Software\Oracle\Homeo.
    STEPS TO INSTALL LANGUAGE PACK IN AN ENGLISH ENVIRONMENT
    (These steps are based on the details of the EXAMPLE SCENARIO.)
    1. Add languages to the computer system by clicking:
    Control Panel > Regional Options > General
    2. Select the check box for 'Traditional Chinese', 'Simplified Chinese', 'Japanese', 'Korean' or 'Vietnamese'.
    3. Click 'Apply'.
    4. When you are prompted, insert the Windows CD-ROM to install the language pack.
    5. Restart the computer.
    Upon completing these steps, you are able to display the languages characters in the Crystal Reports Designer in a Windows English environment.
    ==========
    NOTE:
    If the database table and field names use non-English language characters, Data Explorer in CR will not correctly display these names. However, when you preview the report, the non-English data displays correctly.
    ==========
    Configuring the database client according to the examples and installing the language pack will display the characters successfully. However, there are cases when this workaround does not resolve the issue.
    For further information about CR and double-byte languages, refer to knowledge base articles, c2008083 and c2008349.
    Hope this helps!!!
    Regards
    Sourashree

  • Crystal reports 2008 Set optional parameter value

    Hi,
    I'm working with .net Visual Studio 2008 C# and Crystal reports 2008 (Crystal.Decisions) and when I try to set a parameter to optional and set its value to no value, it returns the error: "Invalid parameter name", here is my code:
    foreach (CrystalDecisions.Shared.ParameterField param in Report.ParameterFields)
                            if (!param.HasCurrentValue &&
                                !Report.DataDefinition.ParameterFields[param.Name].IsLinked())
                                switch (param.ParameterValueType)
                                    case ParameterValueKind.NumberParameter:                                  
                                        param.IsOptionalPrompt = true;
                                        param.CurrentValues.IsNoValue = true;                                  
                                        break;
    I'm doing this because some of the parameters can be left null, and in this case I don't want to show the parameter prompt.
    In past versions of Crystal (such as Crystal Reports 11.5) we had the chance to left the parameter value null and did not showed the parameter prompt dialog, and this behavior repeats in a lot of reports.
    thanks in advanced

    Please don't post the same question more than once. This is a public forum so be patient.
    Install SP4 and test again.
    Try these samples:
    http://wiki.sdn.sap.com/wiki/display/BOBJ/CrystalReportsSDKSampleApplications
    Don

  • Crystal Reports 2008 SP3 Additional parameter values are needed

    I recently upgraded to Crystal Reports 2008 SP3, and now when I try an export a report from the Crystal Reports Designer, I get the error "Additional parameter values are needed before this report can be saved or viewed with data.  Click 'Ok' to enter the missing values or 'Cancel' to proceed without data".  I am trying to export the report to Crystal Reports format.  The report is getting data from a MS SQL 2005 stored proc. I tried building a new simple report (just took all the fields in the result set and put them in the details section) using the same stored proc, and get the same error when I try to export.  
    FYI, before I try to export I always preview the data in the report, so the parameters are defiantly set correctly.
    This was working correctly in Crystal Reports 2008 SP2.

    Please re-post if this is still an issue or purchase a case and have a dedicated support engineer work with you directly:
    http://store.businessobjects.com/store/bobjamer/DisplayProductByTypePage&parentCategoryID=&categoryID=11522300?resid=-Z5tUwoHAiwAAA8@NLgAAAAS&rests=1254701640551

  • Need Help: Dynamically displaying parameter values for a procedure.

    Problem Statement: Generic Code should display the parameter values dynamically by taking "package name" and "procedure name" as inputs and the values needs to be obtained from the parameters of the wrapper procedure.
    Example:
    a) Let us assume that there is an application package called customer.
    create or replace package spec customer
    as
    begin
    TYPE cust_in_rec_type IS RECORD
    cust_id NUMBER,
    ,cust_name VARCHAR2(25) );
    TYPE cust_role_rec_type IS RECORD
    (cust_id NUMBER,
    role_type VARCHAR2(20)
    TYPE role_tbl_type IS TABLE OF cust_role_rec_type INDEX BY BINARY_INTEGER;
    Procedure create_customer
    p_code in varchar2
    ,p_cust_rec cust_in_rec_type
    ,p_cust_roles role_tbl_type
    end;
    b) Let us assume that we need to test the create customer procedure in the package.For that various test cases needs to be executed.
    c) We have created a testing package as mentioned below.
    create or replace package body customer_test
    as
    begin
    -- signature of this wrapper is exactly same as create_customer procedure.
    procedure create_customer_wrapper
    p_code in varchar2
    ,p_cust_rec customer.cust_in_rec_type
    ,p_cust_roles customer.role_tbl_type
    as
    begin
    //<<<<<---Need to display parameter values dynamically for each test case-->>>>>
    Since the signature of this wrapper procedure is similar to actual app procedure, we can get all the parameter definition for this procedure using ALL_ARGUMENTS table as mentioned below.
    //<<
    select * from ALL_ARGUMENTS where package_name = CUSTOMER' and object_name = 'CREATE_CUSTOMER'
    but the problem is there are other procedures exists inside customer package like update_customer, add_address so need to have generalized code that is independent of each procedure inside the package.
    Is there any way to achieve this.
    Any help is appreciated.
    // >>>>
    create_customer
    p_code => p_code
    ,p_cust_rec => p_cust_rec
    ,p_cust_roles => p_cust_roles
    end;
    procedure testcase1
    as
    l_cust_rec customer.cust_in_rec_type ;
    l_cust_roles customer.role_tbl_type;
    begin
    l_cust_rec.cust_id := 1;
    l_cust_rec.cust_name := 'ABC';
    l_cust_roles(1).cust_id := 1;
    l_cust_roles(1).role_type := 'Role1';
    create_customer_wrapper
    p_code => 'code1'
    ,p_cust_rec => l_cust_rec
    ,p_cust_roles => l_cust_role
    end;
    procedure testcase2
    as
    l_cust_rec customer.cust_in_rec_type ;
    l_cust_roles customer.role_tbl_type;
    begin
    l_cust_rec.cust_id := 2;
    l_cust_rec.cust_name := 'DEF';
    l_cust_roles(1).cust_id := 2;
    l_cust_roles(1).role_type := 'Role2';
    create_customer_wrapper
    p_code => 'code2'
    ,p_cust_rec => l_cust_rec
    ,p_cust_roles => l_cust_role
    end;
    end;

    Not possible to dynamically in a procedure, deal with the parameter values passed by a caller. There is no struct or interface that a procedure can use to ask the run-time to give it the value of the 1st or 2nd or n parameter.
    There could perhaps be some undocumented/unsupported method - as debugging code (<i>DBMS_DEBUG</i>) is able to dynamically reference a variable (see Get_Value() function). But debugging requires a primary session (the debug session) and the target session (session being debugged).
    So easy answer is no - the complex answer is.. well, complex as the basic functionality for this do exists in Oracle in its DBMS_DEBUG feature, but only from a special debug session.
    The easiest way would be to generate the wrapper itself, dynamically. This allows your to generate code that displays the parameter values and add whatever other code needed into the wrapper. The following example demonstrates the basics of this approach:
    SQL> -- // our application proc called FooProc
    SQL> create or replace procedure FooProc( d date, n number, s varchar2 ) is
      2  begin
      3          -- // do some stuff
      4          null;
      5  end;
      6  /
    Procedure created.
    SQL>
    SQL> create or replace type TArgument is object(
      2          name            varchar2(30),
      3          datatype        varchar2(30)
      4  );
      5  /
    Type created.
    SQL>
    SQL> create or replace type TArgumentList is table of TArgument;
      2  /
    Type created.
    SQL>
    SQL> -- // create a proc that creates wrappers dynamically
    SQL> create or replace procedure GenerateWrapper( procName varchar2 ) is
      2          procCode        varchar2(32767);
      3          argList         TArgumentList;
      4  begin
      5          select
      6                  TArgument( argument_name, data_type )
      7                          bulk collect into
      8                  argList
      9          from    user_arguments
    10          where   object_name = upper(procName)
    11          order by position;
    12 
    13          procCode := 'create or replace procedure Test'||procName||'( ';
    14          for i in 1..argList.Count
    15          loop
    16                  procCode := procCode||argList(i).name||' '||argList(i).datatype;
    17                  if i < argList.Count then
    18                          procCode := procCode||', ';
    19                  end if;
    20          end loop;
    21 
    22          procCode := procCode||') as begin ';
    23          procCode := procCode||'DBMS_OUTPUT.put_line( '''||procName||''' ); ';
    24 
    25          for i in 1..argList.Count
    26          loop
    27                  procCode := procCode||'DBMS_OUTPUT.put_line( '''||argList(i).name||'=''||'||argList(i).name||' ); ';
    28          end loop;
    29 
    30          -- // similarly, a call to the real proc can be added into the test wrapper
    31          procCode := procCode||'end;';
    32 
    33          execute immediate procCode;
    34  end;
    35  /
    Procedure created.
    SQL>
    SQL> -- // generate a wrapper for a FooProc
    SQL> exec GenerateWrapper( 'FooProc' );
    PL/SQL procedure successfully completed.
    SQL>
    SQL> -- // call the FooProc wrapper
    SQL> exec TestFooProc( sysdate, 100, 'Hello World' )
    FooProc
    D=2011-01-07 13:11:32
    N=100
    S=Hello World
    PL/SQL procedure successfully completed.
    SQL>

  • How to set Default DateTime values in Crystal Reports 2008

    Hi All,
    I'm using Crystal Reports 2008. I have two fields FromDate and ToDate in reports. While running report, FromDate field should be displayed with CurrentDate + 00:00:00 in the UI and for ToDate it should be displayed with CurrentDate + 23:59:59 format.
    I have tried the below things, But still I want to set CurrentDate + 00:00:00 time in DateTime field.
    "In CR 2008 you would set the time portion to 00:00:00 in this way:
    1) Edit the date/time parameter and look for the 'Default Value' option; it would be blank
    2) Set this to 00:00:00
    This would default the calendar to 12/30/1899 00:00:00. The only worry here is, when you click on the calendar icon you would be presented with the calendar for the year 1899 and it is painstaking to scroll all the way to the current year."
    I found one solution in SAP forum and I have added the below lines in Record Selection formula,
    {@FromDate} = date(@CurrentDate)+time(00,00,00)
    {@ToDate} = date(@CurrentDate)+time(23,59,59)
    When I run the report, I still getting the empty values in the input parameters screen.
    Am I missing anything? Kindly help
    Thanks,
    Ramesh Kumar G.

    See the following for samples:
    Java (Crystal Reports for Eclipse) SDK - Business Intelligence (BusinessObjects) - SCN Wiki
    BusinessObjects Enterprise / SAP BusinessObjects Business Intelligence Platform 4.x Java SDK Applications
    Business Objects / BI Unmanaged Java RAS SDK Sample Applications
    Developer Help Files:
    Crystal Reports SDK
    - Ludek
    Senior Support Engineer AGS Product Support, Global Support Center Canada
    Follow us on Twitter

  • Crystal Reports 2008 parameter panel

    Hello,
    I'm using Crystal Reports 2008 stand-alone application to design reports. I'm wondering is there a possibility to change information display on parameter panel?
    The problem is that I've created a parameter with option "prompt with description only" set to true. This parameter has value and description. When it's prompting for parameter everything goes fine, it prompts with description only, but in parameter panel it's only values (not descriptions) displayed. This is confusing for report users as the value is key (int type) and description is name (string that actually says something to user).
    Maybe there is something to be set in Crystal Reports Viewer component properties?
    Thanks in advance.

    Hello Gemi,
    I recommend to post this query to the [Crystal Reports Design|SAP Crystal Reports; forum.
    This forum is dedicated to topics related to the creation and design of Crystal Report documents. This includes topics such as database connectivity, parameters and parameter prompting, report formulas, record selection formulas, charting, sorting, grouping, totaling, printing, and exporting but also installation and registering.
    It is monitored by qualified technicians and you will get a faster response there.
    Also, all Crystal Reports Design queries remain in one place and thus can be easily searched in one place.
    Best regards,
    Falk

  • Dynamic Parameter only showing 1000 records when Crystal report is run.

    I have created a crystal report using ODBC access to a table that has 3000 records.  I created a dynamic parameter to pull a list of all the Customer ID's in a customer table and the parameter will only show the 1st 1000 records.  In addition I cannot type in the customer ID that I would like.  Version of Crystal - Crystal 11.

    Oh, darn. So sorry. Looks like I hyperlinked the wrong URL (You'd think I got that down by now...). Anyhow here is the correct link:
    1218588 - How to increase the number of values in a dynamic parameter list in Crystal Reports?
    And in case the link does not work, or I goofed again, here is a copy of the resolution:
    Resolution
    CAUTION
    The following resolution involves editing the registry. Using the Registry Editor incorrectly can cause serious problems that may require you to reinstall the Microsoft Windows operating system. Use the Registry Editor at your own risk. For information on how to edit the registry key, view the 'Changing Keys and Values' online Help topic in the Registry Editor (Regedit.exe). It is strongly recommended that you make a backup copy of the registry files before you edit the registry.
    To increase the maximum number of values available in a dynamic parameter list of values, set the registry key: MaxRowsetRecords, to a value greater than 1,000.
    Open the Microsoft Registry Editor, and navigate to the path corresponding to the version of Crystal Reports used:
    Crystal Reports XI:
    -  HKEY_LOCAL_MACHINE\SOFTWARE\Business Objects\Suite 11.0\Crystal Reports\DatabaseOptions\LOV
    Crystal Reports XI R2:
    -  HKEY_LOCAL_MACHINE\SOFTWARE\Business Objects\Suite 11.5\Crystal Reports\DatabaseOptions\LOV
    Crystal Reports 2008:
    -  HKEY_LOCAL_MACHINE\SOFTWARE\Business Objects\Suite 12.0\Crystal Reports\DatabaseOptions\LOV
    Crystal Reports 2011:
    -  HKEY_LOCAL_MACHINE\SOFTWARE\SAP BusinessObjects\Suite XI 4.0\Crystal Reports\DatabaseOptions\LOV
    Crystal Reports 2013:
    -  HKEY_LOCAL_MACHINE\SOFTWARE\SAP BusinessObjects\Suite XI 4.0\Crystal Reports\DatabaseOptions\LOV
    Crystal Reports for Visual Studio 2010:
    -  HKEY_LOCAL_MACHINE\SOFTWARE\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Crystal Reports\DatabaseOptions\LOV
    NOTES:
    -  Add the key: LOV, if it is not present.
    -  For 64 bit version of Microsoft Windows, the registry path will be slightly different, it will start with:
          HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\...
       But the rest of the registry path is the same.
    Add the String value: MaxRowsetRecords
    Set the value of: MaxRowsetRecords to the maximum number of values to display in the List of Values.
    For example, a value of 2000 will return up to 2000 values in the lowest level of a dynamic cascading parameter.
    IMPRTANT NOTES:
    - The higher the number of values is, the longer it will take the see the dynamic parameter prompt screen. In brief, it impact the performance.
    - The value 0 (Unlimited) will not work with BusinessObjects Enterprise XI or Crystal Reports Server XI, you must specify another value.
    After making changes to the registry, close and reopen Crystal Reports, or restart the Crystal Reports services for the BusinessObjects platforms.
    - Ludek

  • How to get Description of parameter filed in Crystal report 2008

    Hi expert,
    I am creating a crystal report from Query ,which is created in BEX    Query designer 7.
    In query designer i have some selection variable.
    The requirement from clint is that they want to see what value is selected for all  variable.
    when i tried to put all parameter field in crystal report it is showing only Technical name of value selected not  description and also it show only for variable which is single value variable  not for the range value variable and multiple selection variable.
    can any one help me How to get description of value in report and can it is possible to show Range value and multiple value for a particular variable .
    i am using Crystal report 2008 SP3 version.
    Thanks and regards
    devendra

    Moved to BEx forum

  • Crystal Reports 2008 parameter panel discrepancy.

    Hi,
    I have a report designed using Crystal Reports 2008. The report has a dynamic parameter called Location which is populated from a table. It is a Value - Description pair so it is:
    Value = LocID
    Descripition = LocationName.
    The Show on Viewer(Panel) attribute is set to Editable.
    The Prompt with Description Only attribute is set to true.
    In the Crystal Reports stand-alone Designer everything works fine. It prompts with the Description. After making a selection, the Parameter Panel shows the selected items(the Description, NOT the value) correctly. This is the desired behavior.
    But  when the report is viewed in the Crystal Reports Viewer that comes with .NET 2008 the Parameter panel shows the Value, which is LocID and not the description which is LocationName. This is NOT very useful.
    I have tried other third party Crystal Reports viewers as well. They all exhbit the same discrepancy.
    How can this be resolved?
    Any help is greatly appreciated.
    Thanks in advance.
    - Rajan.

    Hi Don,
    Thank you for your response. The assemblies and their versions are as follows;
    CrystalDecisions.CrystalReports.Engine - 12.0.2000.0
    CrystalDecisions.Enterprise.Framework - 12.0.1100.0
    CrystalDecisions.Shared                         - 12.0.2000.0
    CrystalDecisions.Windows.Forms          - 12.0.2000.0
    Thanks,
    - Rajan.

  • Crystal Reports 2008 - passing a parameter in the Command Object

    Hi,
    I am using Crystal Reports 2008. I have 4 Command Objects where I have the following queries.
    select emrace, count(empl_id) cntFCiv  from emmain where emtype='CIV' and emsex ='F' and emdateterm is null group by emrace
    select emrace, count(empl_id) cntFSw  from emmain where emtype='SWOR' and emsex ='F' and emdateterm is null group by emrace
    select emrace, count(empl_id) cntMCiv from emmain where emtype='CIV' and emsex = 'M' and emdateterm is null  group by  emrace
    select emrace,count(empl_id) cntMSw from emmain where emtype='SWOR' and emsex = 'M' and emdateterm is null  group by emrace
    I want to pass a parameter  to all these command objects. I want the user to select a parameter from a list of values. So, I created a parameter object, Bureau. (I get the values for the parameter with this command object: select code_agcy, descriptn from systab1 where code_key = 'UNIT'). I want the user to be able to get the counts for each bureau.
    How do I pass the parameter that the user picked to those command objects. I tried doing this:
    select emrace, count(empl_id) cntFCiv  from emmain where emtype='CIV' and emsex ='F' and emdateterm is null
    and emunit = '{?Bureau}' group by emrace
    But it did not work. Any help will be greatly appreciated.
    Thanks.

    Hi,
    I am using Crystal Reports 2008. I have 4 Command Objects where I have the following queries.
    select emrace, count(empl_id) cntFCiv  from emmain where emtype='CIV' and emsex ='F' and emdateterm is null group by emrace
    select emrace, count(empl_id) cntFSw  from emmain where emtype='SWOR' and emsex ='F' and emdateterm is null group by emrace
    select emrace, count(empl_id) cntMCiv from emmain where emtype='CIV' and emsex = 'M' and emdateterm is null  group by  emrace
    select emrace,count(empl_id) cntMSw from emmain where emtype='SWOR' and emsex = 'M' and emdateterm is null  group by emrace
    I want to pass a parameter  to all these command objects. I want the user to select a parameter from a list of values. So, I created a parameter object, Bureau. (I get the values for the parameter with this command object: select code_agcy, descriptn from systab1 where code_key = 'UNIT'). I want the user to be able to get the counts for each bureau.
    How do I pass the parameter that the user picked to those command objects. I tried doing this:
    select emrace, count(empl_id) cntFCiv  from emmain where emtype='CIV' and emsex ='F' and emdateterm is null
    and emunit = '{?Bureau}' group by emrace
    But it did not work. Any help will be greatly appreciated.
    Thanks.

  • Crystal Reports 2008 sql image field stretches in report display

    i have the full version of Crystal reports 2008 i run through a .net web form to display the reports. i have need to display logos which in resize mid stream before saving to the sq table. My problem is when i got to retrieve the images it looks like crystal is stretching them to fit. I can have horizontal or vertical images and i resize them to fit the smallest determined in the report. Another issue is the background turns black. The images appear to be "normal" outside of the report. Am i doing something wrong? Is there a setting i'm missing i need to config or something? I'm kind of lost i assumed as long as i stored the images in teh proper size they would diplay correctly. Any help is greatly appreciated.

    Are you seeing this behavior in the CR designer or in a .NET app?
    Ludek
    Follow us on Twitter
    http://twitter.com/SAPCRNetSup

  • How to set a new value for formula field in crystal reports xi?

    <p>How to set a new value for formula field in crystal reports xi?</p><p>//formula</p><p>{@description}</p><p> </p><p>exemplo in VB6</p><p>crxSubreport.FormulaFields.Item(1).Text =  "&#39;Subreport Formula&#39;"  or</p><p>crxSubreport.FormulaFields.Item("description").Text =  "&#39;Subreport Formula&#39;"</p><p>How to in JRC?</p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p><p> </p>

    Hi,
    This functionality is known to be very important and is a key part of the next major release of the JRC planned for the first half of 2008.
    Regards,
    <p>Blair Wheadon</p>
    <p>Product Manager, Crystal Reports</p>

  • Export from Crystal Reports 2008 viewer fails if run on separate thread

    I have a windows desktop application written in Visual Basic using Visual Studio 2008.  I have installed and am trying Crystal Reports 2008 to run a report.  Everything seems to work well except that when I preview a report (using the viewer control) and click the export button found in the upper left corner of that control, I get the following message:
    Error 5: Current thread must be set to single thread apartment (STA) mode before OLE calls can be made.  Ensure that your Main function has STAThreadAttribute marked on it.  This exception is only raised if a debugger is attached to the process.
    I am a little confused on what to do exactly.  Is the problem because I am running in the Visual Studio 2008 IDE?  It says this exception is only raise if a debugger is attached to the process.  No, I tried running it outside the IDE.  The exception wasn't generated but the application hung when the button was clicked.
    It says the current thread must be set to single thread apartment (STA) mode.  If the report is run on its own thread, is the "current" thread the thread the report is running on or is the main application's UI thread?  I don't think I want to set my main application to single thread apartment mode because it is a multi-threaded application (although I really don't know for sure because I am new to multi-threaded programming). 
    My objective is to allow reports to run asynchronously so that the user can do other things while it is being generated.  Here is the code I use to do this:
        ' Previews the report using a new thread (asynchronously)
        Public Sub PreviewReportAsynch(ByVal sourceDatabase As clsMainApplicationDatabase)
            Dim backgroundProcess As System.ComponentModel.BackgroundWorker
            ' Start a new thread to run this report.
            backgroundProcess = New System.ComponentModel.BackgroundWorker
            Using (backgroundProcess)
                ' Wire the function we want to run to the 'do work' event.
                AddHandler backgroundProcess.DoWork, AddressOf PreviewReportAsynch_Start
                ' Kick off the report asynchronously and return control to the calling process
                backgroundProcess.RunWorkerAsync(sourceDatabase)
            End Using
        End Sub
        Private Sub PreviewReportAsynch_Start(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs)
            ' The source database needed to call preview report was passed as the only argument
            Call PreviewReport(CType(e.Argument, clsMainApplicationDatabase))
        End Sub
        ' Previews the report.  From the preview window, the user can print it.
        Public Function PreviewReport(ByVal sourceDatabase As clsMainApplicationDatabase) As FunctionEndedResult
            Dim errorBoxTitle As String
            Dim frmPreview As frmReportPreview
            ' Setup error handling
            errorBoxTitle = "Preview " & Name & " Report"
            PreviewReport = FunctionEndedResult.FAILURE
            On Error GoTo PreviewError
            ' Set up the crxReport object
            If InitializeReportProcess(sourceDatabase) <> FunctionEndedResult.SUCCESS Then
                GoTo PreviewExit
            End If
            ' Use the preview form to preview the report
            frmPreview = New frmReportPreview
            frmPreview.Report = crxReport
            frmPreview.ShowDialog()
            ' Save any settings that should persist from one run to the next
            Call SavePersistentSettings()
            ' If we got this far everything is OK.
            PreviewReport = FunctionEndedResult.SUCCESS
    PreviewExit:
            ' Do any cleanup work
            Call CleanupReportProcess(sourceDatabase)
            Exit Function
    PreviewError:
            ' Report error then exit gracefully
            ErrorBox(errorBoxTitle)
            Resume PreviewExit
        End Function
    The variable crxReport is of type ReportDocument and the windows form called 'frmPreview' has only 1 control, the crystal reports viewer. 
    The print button on the viewer works fine.  Just the export button is failing.  Any ideas?

    Hi Trevor.
    Thank you for the reply.  The report document is create on the main UI thread of my application.  The preview form is created and destroyed on the separate thread.  For reasons I won't get into, restructuring the code to move all the initialization stuff inside the preview form is not an option (OK, if you a really curious, I don't always preview a report, sometimes I print and/or export it directly which means the preview form isn't used).
    What I learned through some other research is that there are some things (like COM calls and evidently some OLE automation stuff) that cannot be run on a thread that uses the MTA threading model.   The export button probably uses some of this technology, thus the message stating that an STA threading model is required.  I restructured the code as follows to accomodate this requirement.  Here is a sample:
    ' Previews the report using a new thread (asynchronously)
        Public Sub PreviewReportAsynch(ByVal sourceDatabase As clsMainApplicationDatabase)
            Dim staThread As System.Threading.Thread
            ' Start the preview report function on a new thread
            staThread = New System.Threading.Thread(AddressOf PreviewReportAsynchStep1)
            staThread.SetApartmentState(System.Threading.ApartmentState.MTA)
            staThread.Start(sourceDatabase)
        End Sub
        Private Sub PreviewReportAsynchStep1(ByVal sourceDatabase As Object)
            Dim staThread As System.Threading.Thread
            ' Initialize report preview.  This includes staging any data and configuring the
            ' crystal report document object for use by the crystal report viewer control.
            If InitializeReportProcess(DirectCast(sourceDatabase, clsMainApplicationDatabase)) = FunctionEndedResult.SUCCESS Then
                ' Show the report to the user.  This must be done on an STA thread so we will
                ' start another of that type.  See description of PreviewReportAsynchStep2()
                staThread = New System.Threading.Thread(AddressOf PreviewReportAsynchStep2)
                staThread.SetApartmentState(System.Threading.ApartmentState.STA)
                staThread.Start(mcrxReport)
                ' Wait for step 2 to finish.  This blocks the current thread, but this thread
                ' isn't the main UI thread and this thread has no UI anymore (the progress
                ' form was closed) so it won't matter that is it blocked.
                staThread.Join()
                ' Save any settings that should persist from one successful run to the next
                Call SavePersistentSettings()
            End If
            ' Release the crystal report
            Call CleanupReportProcess(DirectCast(sourceDatabase, clsMainApplicationDatabase))
        End Sub
        ' The preview form must be launched on a thread that use the single-threaded apartment (STA) model.
        ' Threads use the multi-threaded apartment (MTA) model by default.  This is necessary to make the
        ' export and print buttons on the preview form work.  They do not work when running on a
        ' thread using MTA.
        Public Sub PreviewReportAsynchStep2(ByVal crxInitializedReport As Object)
            Dim frmPreview As frmReportPreview
            ' Use the preview form to preview the report.  The preview form contains the crystal reports viewer control.
            frmPreview = New frmReportPreview
            frmPreview.Report = DirectCast(crxInitializedReport, ReportDocument)
            frmPreview.ShowDialog()
        End Sub
    Thanks for your help!
    Andy

Maybe you are looking for

  • ECC5 Installation option  Distributed Installation

    Hi I am installing ECC5 on Windows 2003 with oracle 10g,During installation I have selected distributed installation (ABAP+JAVA). Please could anyone tell me whether we can install abap+java on single system by selecting distributed installation opti

  • Change item category in a PO

    Hi experts, I'm would like to change the item category (from L to empty or vice versa) while creating a PO in reference to a PR (the PR has been created through a project, CJ20N). But I'm always getting the error message "Requisition has different do

  • I am designing a stand alone program

    Hello there, i am not sure whether i am in the right forum. anyways, i am or i want to develop a music player like winamp. i need a little help as to which apis i am suppose to use or am i supposed to use frames? thats it bharath

  • Flash will only export a 0-1 sec. movie! HELP!

    Hello, once again i have turned to your forums for help! I have a little problem... I made a short animation, but i can't export it as .mov or .avi (well, actually i can! But if i do, it cuts the clip down to 0-1 sec!) So, could anybody please be kin

  • Incoming Mail on Lockscreen iphone 5

    Hi My iPhone 5 does not ring on the Lockscreen when E Mails arrive, it wll only ring when I open the Mail Inbox. To me all settings look ok. Thanks.