<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Question Re: Modify a report's data source at runtime in C# from Visual Studio in Technology Q&amp;A</title>
    <link>https://community.sap.com/t5/technology-q-a/modify-a-report-s-data-source-at-runtime-in-c-from-visual-studio/qaa-p/14246185#M4929505</link>
    <description>&lt;P&gt;TO DELETE&lt;/P&gt;</description>
    <pubDate>Fri, 17 Oct 2025 08:19:40 GMT</pubDate>
    <dc:creator>danilo_mazzotti</dc:creator>
    <dc:date>2025-10-17T08:19:40Z</dc:date>
    <item>
      <title>Modify a report's data source at runtime in C# from Visual Studio</title>
      <link>https://community.sap.com/t5/technology-q-a/modify-a-report-s-data-source-at-runtime-in-c-from-visual-studio/qaq-p/14244542</link>
      <description>&lt;P&gt;Hello everyone!&lt;/P&gt;&lt;P&gt;I have about 1000 reports developed with 32-bit Crystal Reports (from Crystal Report 9 to SAP Crystal Reports 2016) that use an xBase (dbf) data connection using the crdb_p2bxbse.dll 32 bit library (Crystal Reports database driver for xBase).&lt;/P&gt;&lt;P&gt;Now I need to upgrade to 64-bit Crystal Reports (SAP Crystal Reports 2025) and therefore migrate the reports to a JDBC data connection using CsvJdbc (a read-only JDBC driver that uses&amp;nbsp; CSV files or DBF files as database tables): using the same data source, the report fields will have a perfect match&lt;/P&gt;&lt;P&gt;I would like to know if it is possible to develop a C# program in Visual Studio for:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;load the report&lt;/LI&gt;&lt;LI&gt;modify the data connection definition and table references&lt;/LI&gt;&lt;LI&gt;save the report with the new connection&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;I can do this in SAP Crystal Reports 2025 (even without the crdb_p2bxbse.dll library that work only in 32 bit!), but I would have to do it for all the 1000 reports and I need to generate xBase (dbf) files for each report....&lt;/P&gt;&lt;P&gt;Is it possible to modify a report's data connection at runtime in C# from Visual Studio?&lt;/P&gt;&lt;P&gt;Thank you very much for your attention.&lt;/P&gt;</description>
      <pubDate>Wed, 15 Oct 2025 09:08:24 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/modify-a-report-s-data-source-at-runtime-in-c-from-visual-studio/qaq-p/14244542</guid>
      <dc:creator>danilo_mazzotti</dc:creator>
      <dc:date>2025-10-15T09:08:24Z</dc:date>
    </item>
    <item>
      <title>Re: Modify a report's data source at runtime in C# from V...</title>
      <link>https://community.sap.com/t5/technology-q-a/modify-a-report-s-data-source-at-runtime-in-c-from-visual-studio/qaa-p/14245112#M4929386</link>
      <description>&lt;P&gt;Yes, it is possible. You would need to use the RAS object model. If you Google the topic, you should find multiple discussions and code examples.&lt;BR /&gt;&lt;BR /&gt;Given that you are permanently switching to a new data connection, it makes more sense to permanently change all the reports to use the new data connection instead of repeating the process each time you run the report.&lt;BR /&gt;&lt;BR /&gt;Here is a &lt;A title="mass-update of data source in multiple Crystal reports." href="https://www.youtube.com/watch?v=PdLy17PLg-4" target="_blank" rel="noopener"&gt;video demo&lt;/A&gt; of my software doing a mass-update of data source across multiple Crystal Reports.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 15 Oct 2025 18:17:37 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/modify-a-report-s-data-source-at-runtime-in-c-from-visual-studio/qaa-p/14245112#M4929386</guid>
      <dc:creator>ido_millet</dc:creator>
      <dc:date>2025-10-15T18:17:37Z</dc:date>
    </item>
    <item>
      <title>Re: Modify a report's data source at runtime in C# from Visual Studio</title>
      <link>https://community.sap.com/t5/technology-q-a/modify-a-report-s-data-source-at-runtime-in-c-from-visual-studio/qaa-p/14245758#M4929469</link>
      <description>&lt;P&gt;FYI - Ido has been supporting Crystal Reports for 20+&amp;nbsp;years now and has a thorough understanding how CR works....&lt;/P&gt;&lt;P&gt;Also, do you still need to use DBF files? I highly recommend to convert your data sources to MS SQL Server or some other "real SQL DB data source". I realize it's not that easy to do but in the long term it may make things much easier to migrate for current and future reports.&lt;/P&gt;&lt;P&gt;To answer your questions....&lt;/P&gt;&lt;P&gt;What I always recommend to new developers using CR runtime is to do what you want in CR Designer first, then the same work flow is required when coding.&lt;/P&gt;&lt;P&gt;For example, open the Report in CRD, Set Location to the new Data Source and NOTE is the Field Mapping UI pops up, if so you'll need to set links in code. And also note if Verify Database message appears, you may or may not have to use the Verify() function, sometimes you don't want to use it... It can clear the updates you have applied....&lt;/P&gt;&lt;P&gt;NOTE: If the&amp;nbsp; mapping UI does pop up it indicates the JDBC driver uses a different file type than the DBF field type uses, CR JDBC dll can't map the field type to the source field type....&lt;/P&gt;&lt;P&gt;If you still want to code this yourself Book mark this page:&lt;/P&gt;&lt;P&gt;&lt;A href="https://help.sap.com/docs/SUPPORT_CONTENT/crystalreports/3354091173.html?locale=en-US" target="_blank" rel="noopener"&gt;https://help.sap.com/docs/SUPPORT_CONTENT/crystalreports/3354091173.html?locale=en-US&lt;/A&gt;&lt;/P&gt;&lt;P&gt;On that page I wrote a sample app that will get you started:&lt;/P&gt;&lt;P&gt;&lt;A href="https://blogs.sap.com/2016/02/17/how-to-parameters-in-crystal-reports-for-visual-studio-net/" target="_blank" rel="noopener"&gt;&lt;STRONG&gt;how-to-parameters-in-crystal-reports-for-visual-studio-net&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;&lt;P&gt;What you need to do is Clone() the new connection info, use a report you manually updated the connection info to the JDBC connection property. Then open the report and use ReplaceConnection() API to set the Old/New property bag info.&lt;/P&gt;&lt;P&gt;Fix any field mapping's, using the same Clone() API.&lt;/P&gt;&lt;P&gt;And as Ido suggested is save the new report to a new folder, don't update the connection info every time, it's time consuming.&lt;/P&gt;&lt;P&gt;I like to suggest setting a flag in the Reports Summary Info, from the File menu in CRD, you can read the various values to determine if the report has been update of not, set one of the with a comment it's been updated:&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="DonWilliams_0-1760613385623.png"&gt;&lt;img src="https://community.sap.com/t5/image/serverpage/image-id/328329i3351DC96804EFAED/image-size/medium?v=v2&amp;amp;px=400" alt="DonWilliams_0-1760613385623.png" title="DonWilliams_0-1760613385623.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;So it is possible to do what you want it is a question of programming this yourself or use Ido's solution, which he's done all the head scratching for you....&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 16 Oct 2025 11:20:43 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/modify-a-report-s-data-source-at-runtime-in-c-from-visual-studio/qaa-p/14245758#M4929469</guid>
      <dc:creator>DonWilliams</dc:creator>
      <dc:date>2025-10-16T11:20:43Z</dc:date>
    </item>
    <item>
      <title>Re: Modify a report's data source at runtime in C# from Visual Studio</title>
      <link>https://community.sap.com/t5/technology-q-a/modify-a-report-s-data-source-at-runtime-in-c-from-visual-studio/qaa-p/14246181#M4929503</link>
      <description>&lt;DIV class=""&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;As suggested by ido_millet, I tried using the CrystalDecisions.CrystalReports.Engine.ReportDocument.ReportClientDocument.DatabaseController.ReplaceConnection method using:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;UL&gt;&lt;LI&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;the old DBF connection (set by Crystal Report Designer)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;the new JDBC connection (set by Crystal Report Designer)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;However, at runtime I get the "generic" exception System.ArgumentException: 'Incorrect parameter.'&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN class=""&gt;&lt;SPAN class=""&gt;in "rptcontrollers.dll"&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;Below is the C# code&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;LI-CODE lang="csharp"&gt;        static void Main()
        {
            CrystalDecisions.CrystalReports.Engine.ReportDocument cryRptDBF = new ReportDocument();
            CrystalDecisions.CrystalReports.Engine.ReportDocument cryRptJDBC = new ReportDocument();

            // Load old report with DBF connection
            cryRptDBF.Load("C:\\Report\\P10035\\P10035_DBF.RPT");
           

            // Load new report with JDBC connection
            cryRptJDBC.Load("C:\\Report\\P10035\\P10035_JDBC.RPT");


            foreach (Table table in cryRptJDBC.Database.Tables)
            {
                PrintTableProperties(cryRptDBF, table);

                // LogOnInfo clone of JDBC
                TableLogOnInfo liJDBC = (TableLogOnInfo)table.LogOnInfo.Clone();
                ConnectionInfo ciJDBC = liJDBC.ConnectionInfo;
                ciJDBC.UserID = "";

                // ReplaceConnection of connection info of DBF
                foreach (Table tabledbf in cryRptDBF.Database.Tables)
                {
                    if (String.Compare(tabledbf.Name, table.Name) == 0)
                    {
                        tabledbf.LogOnInfo.ConnectionInfo.UserID = "";
                        cryRptDBF.ReportClientDocument.DatabaseController.ReplaceConnection(tabledbf.LogOnInfo.ConnectionInfo, ciJDBC, null);
                        cryRptDBF.SaveAs("C:\\Report\\P10035\\P10035_DBF_NEW.RPT", false);
                    }
                }
            }
        }

        private static void PrintTableProperties(ReportDocument cryRptDBF, Table table)
        {
            Console.WriteLine(" table name: " + table.Name);
            Console.WriteLine(" location: " + table.Location);

            Console.WriteLine(" logon info report name: " + table.LogOnInfo.ReportName);
            Console.WriteLine(" logon info table name: " + table.LogOnInfo.TableName);

            Console.WriteLine(" logon info connection info database name: " + table.LogOnInfo.ConnectionInfo.DatabaseName);
            Console.WriteLine(" logon info connection info server name: " + table.LogOnInfo.ConnectionInfo.ServerName);
            Console.WriteLine(" logon info connection info type: " + table.LogOnInfo.ConnectionInfo.Type);

            foreach (NameValuePair2 a in table.LogOnInfo.ConnectionInfo.Attributes.Collection)
            {
                Console.WriteLine(" logon info connection info attributo: " + a.Name + " = " + a.Value);
                // l'attributo QE_LogonProperties è a sua volta un array associativo
                if (String.Compare("" + a.Name, "QE_LogonProperties") == 0)
                {
                    foreach (NameValuePair2 lppb in ((DbConnectionAttributes)a.Value).Collection)
                    {
                        Console.WriteLine("logon info connection info attributo logon properties attributo: " + lppb.Name + " = " + lppb.Value);
                    }
                }
            }
        }&lt;/LI-CODE&gt;&lt;P&gt;Below is the output of the program execution&lt;/P&gt;&lt;LI-CODE lang="abap"&gt; table name: LEGENDA
 location: D510976L
 logon info report name: 
 logon info table name: D510976L
 logon info connection info database name: 
 logon info connection info server name: jdbc:relique:csv:./LEGENDA?fileExtension=.dbf
 logon info connection info type: CRQE
 logon info connection info attributo: Database DLL = crdb_jdbc.dll
 logon info connection info attributo: QE_DatabaseName = 
 logon info connection info attributo: QE_DatabaseType = JDBC (JNDI)
 logon info connection info attributo: QE_LogonProperties = CrystalDecisions.Shared.DbConnectionAttributes
logon info connection info attributo logon properties attributo: Connection URL = jdbc:relique:csv:./LEGENDA?fileExtension=.dbf
logon info connection info attributo logon properties attributo: Database = 
logon info connection info attributo logon properties attributo: Database Class Name = org.relique.jdbc.dbf.DbfReader
logon info connection info attributo logon properties attributo: JDBC Connection String = !org.relique.jdbc.dbf.DbfReader!jdbc:relique:csv:./LEGENDA?fileExtension=.dbf!user={userid}!password={password}
logon info connection info attributo logon properties attributo: Server = 
logon info connection info attributo logon properties attributo: Use JDBC = True
 logon info connection info attributo: QE_ServerDescription = jdbc:relique:csv:./LEGENDA?fileExtension=.dbf
 logon info connection info attributo: QE_SQLDB = True
 logon info connection info attributo: SSO Enabled = False
'CrystalReportsApplication3.exe' (CLR v4.0.30319: CrystalReportsApplication3.exe): caricamento di 'C:\WINDOWS\Microsoft.Net\assembly\GAC_64\CrystalDecisions.ReportAppServer.XmlSerialize\v4.0_13.0.4000.0__692fbea5521e1304\CrystalDecisions.ReportAppServer.XmlSerialize.dll' completato. Caricamento dei simboli disabilitato dall'impostazione Include/Exclude.
'CrystalReportsApplication3.exe' (CLR v4.0.30319: CrystalReportsApplication3.exe): caricamento di 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\mscorlib.resources\v4.0_4.0.0.0_it_b77a5c561934e089\mscorlib.resources.dll' completato. Modulo compilato senza simboli.
Eccezione generata: 'System.ArgumentException' in CrystalReportsApplication3.exe
Eccezione non gestita di tipo 'System.ArgumentException' in CrystalReportsApplication3.exe
Parametro non corretto.&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;At the following URL to my Google Drive&lt;/P&gt;&lt;P&gt;&lt;A href="https://drive.google.com/drive/folders/10MmQPNqEblU26Qk1ilFVFwWeo0O3oAAY?usp=drive_link" target="_blank" rel="noopener"&gt;https://drive.google.com/drive/folders/10MmQPNqEblU26Qk1ilFVFwWeo0O3oAAY?usp=drive_link&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;you can get:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;old report&amp;nbsp;P10035_DBF.RPT&lt;/LI&gt;&lt;LI&gt;new report&amp;nbsp;P10035_JDBC.RPT&lt;/LI&gt;&lt;LI&gt;folder LEGENDA with the file D510976L.dbf&lt;/LI&gt;&lt;LI&gt;folder RUBRICA with the file D510976D.dbf&lt;/LI&gt;&lt;LI&gt;the necessary jars to add to the classpath&lt;BR /&gt;&lt;UL&gt;&lt;LI&gt;csvjdbc-1.0.46.jar&lt;/LI&gt;&lt;LI&gt;dans-dbf-lib-1.0.0-beta-10.jar&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;</description>
      <pubDate>Fri, 17 Oct 2025 08:56:32 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/modify-a-report-s-data-source-at-runtime-in-c-from-visual-studio/qaa-p/14246181#M4929503</guid>
      <dc:creator>danilo_mazzotti</dc:creator>
      <dc:date>2025-10-17T08:56:32Z</dc:date>
    </item>
    <item>
      <title>Re: Modify a report's data source at runtime in C# from Visual Studio</title>
      <link>https://community.sap.com/t5/technology-q-a/modify-a-report-s-data-source-at-runtime-in-c-from-visual-studio/qaa-p/14246182#M4929504</link>
      <description>&lt;P&gt;TO DELETE&lt;/P&gt;</description>
      <pubDate>Fri, 17 Oct 2025 08:20:11 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/modify-a-report-s-data-source-at-runtime-in-c-from-visual-studio/qaa-p/14246182#M4929504</guid>
      <dc:creator>danilo_mazzotti</dc:creator>
      <dc:date>2025-10-17T08:20:11Z</dc:date>
    </item>
    <item>
      <title>Re: Modify a report's data source at runtime in C# from Visual Studio</title>
      <link>https://community.sap.com/t5/technology-q-a/modify-a-report-s-data-source-at-runtime-in-c-from-visual-studio/qaa-p/14246185#M4929505</link>
      <description>&lt;P&gt;TO DELETE&lt;/P&gt;</description>
      <pubDate>Fri, 17 Oct 2025 08:19:40 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/modify-a-report-s-data-source-at-runtime-in-c-from-visual-studio/qaa-p/14246185#M4929505</guid>
      <dc:creator>danilo_mazzotti</dc:creator>
      <dc:date>2025-10-17T08:19:40Z</dc:date>
    </item>
    <item>
      <title>Re: Modify a report's data source at runtime in C# from V...</title>
      <link>https://community.sap.com/t5/technology-q-a/modify-a-report-s-data-source-at-runtime-in-c-from-visual-studio/qaa-p/14246198#M4929507</link>
      <description>&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;As suggested by ido_millet, I tried using the CrystalDecisions.CrystalReports.Engine.ReportDocument.ReportClientDocument.DatabaseController.ReplaceConnection method using:&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;UL&gt;&lt;LI&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;the old DBF connection (set by Crystal Report Designer)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;the new JDBC connection (set by Crystal Report Designer)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;However, at runtime I get the "generic" exception System.ArgumentException: 'Incorrect parameter.'&lt;/SPAN&gt;&lt;/SPAN&gt; &lt;SPAN class=""&gt;&lt;SPAN class=""&gt;in "rptcontrollers.dll"&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;Below is the C# code&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;LI-CODE lang="csharp"&gt;        static void Main()
        {
            CrystalDecisions.CrystalReports.Engine.ReportDocument cryRptDBF = new ReportDocument();
            CrystalDecisions.CrystalReports.Engine.ReportDocument cryRptJDBC = new ReportDocument();

            // Load old report with DBF connection
            cryRptDBF.Load("C:\\Report\\P10035\\P10035_DBF.RPT");
           

            // Load new report with JDBC connection
            cryRptJDBC.Load("C:\\Report\\P10035\\P10035_JDBC.RPT");


            foreach (Table table in cryRptJDBC.Database.Tables)
            {
                PrintTableProperties(cryRptDBF, table);

                // LogOnInfo clone of JDBC
                TableLogOnInfo liJDBC = (TableLogOnInfo)table.LogOnInfo.Clone();
                ConnectionInfo ciJDBC = liJDBC.ConnectionInfo;
                ciJDBC.UserID = "";

                // ReplaceConnection of connection info of DBF
                foreach (Table tabledbf in cryRptDBF.Database.Tables)
                {
                    if (String.Compare(tabledbf.Name, table.Name) == 0)
                    {
                        tabledbf.LogOnInfo.ConnectionInfo.UserID = "";
                        cryRptDBF.ReportClientDocument.DatabaseController.ReplaceConnection(tabledbf.LogOnInfo.ConnectionInfo, ciJDBC, null);
                        cryRptDBF.SaveAs("C:\\Report\\P10035\\P10035_DBF_NEW.RPT", false);
                    }
                }
            }
        }

        private static void PrintTableProperties(ReportDocument cryRptDBF, Table table)
        {
            Console.WriteLine(" table name: " + table.Name);
            Console.WriteLine(" location: " + table.Location);

            Console.WriteLine(" logon info report name: " + table.LogOnInfo.ReportName);
            Console.WriteLine(" logon info table name: " + table.LogOnInfo.TableName);

            Console.WriteLine(" logon info connection info database name: " + table.LogOnInfo.ConnectionInfo.DatabaseName);
            Console.WriteLine(" logon info connection info server name: " + table.LogOnInfo.ConnectionInfo.ServerName);
            Console.WriteLine(" logon info connection info type: " + table.LogOnInfo.ConnectionInfo.Type);

            foreach (NameValuePair2 a in table.LogOnInfo.ConnectionInfo.Attributes.Collection)
            {
                Console.WriteLine(" logon info connection info attributo: " + a.Name + " = " + a.Value);
                // l'attributo QE_LogonProperties è a sua volta un array associativo
                if (String.Compare("" + a.Name, "QE_LogonProperties") == 0)
                {
                    foreach (NameValuePair2 lppb in ((DbConnectionAttributes)a.Value).Collection)
                    {
                        Console.WriteLine("logon info connection info attributo logon properties attributo: " + lppb.Name + " = " + lppb.Value);
                    }
                }
            }
        }&lt;/LI-CODE&gt;&lt;P&gt;Below is the output of the program execution&lt;/P&gt;&lt;LI-CODE lang="abap"&gt; table name: LEGENDA
 location: D510976L
 logon info report name: 
 logon info table name: D510976L
 logon info connection info database name: 
 logon info connection info server name: jdbc:relique:csv:./LEGENDA?fileExtension=.dbf
 logon info connection info type: CRQE
 logon info connection info attributo: Database DLL = crdb_jdbc.dll
 logon info connection info attributo: QE_DatabaseName = 
 logon info connection info attributo: QE_DatabaseType = JDBC (JNDI)
 logon info connection info attributo: QE_LogonProperties = CrystalDecisions.Shared.DbConnectionAttributes
logon info connection info attributo logon properties attributo: Connection URL = jdbc:relique:csv:./LEGENDA?fileExtension=.dbf
logon info connection info attributo logon properties attributo: Database = 
logon info connection info attributo logon properties attributo: Database Class Name = org.relique.jdbc.dbf.DbfReader
logon info connection info attributo logon properties attributo: JDBC Connection String = !org.relique.jdbc.dbf.DbfReader!jdbc:relique:csv:./LEGENDA?fileExtension=.dbf!user={userid}!password={password}
logon info connection info attributo logon properties attributo: Server = 
logon info connection info attributo logon properties attributo: Use JDBC = True
 logon info connection info attributo: QE_ServerDescription = jdbc:relique:csv:./LEGENDA?fileExtension=.dbf
 logon info connection info attributo: QE_SQLDB = True
 logon info connection info attributo: SSO Enabled = False
'CrystalReportsApplication3.exe' (CLR v4.0.30319: CrystalReportsApplication3.exe): caricamento di 'C:\WINDOWS\Microsoft.Net\assembly\GAC_64\CrystalDecisions.ReportAppServer.XmlSerialize\v4.0_13.0.4000.0__692fbea5521e1304\CrystalDecisions.ReportAppServer.XmlSerialize.dll' completato. Caricamento dei simboli disabilitato dall'impostazione Include/Exclude.
'CrystalReportsApplication3.exe' (CLR v4.0.30319: CrystalReportsApplication3.exe): caricamento di 'C:\WINDOWS\Microsoft.Net\assembly\GAC_MSIL\mscorlib.resources\v4.0_4.0.0.0_it_b77a5c561934e089\mscorlib.resources.dll' completato. Modulo compilato senza simboli.
Eccezione generata: 'System.ArgumentException' in CrystalReportsApplication3.exe
Eccezione non gestita di tipo 'System.ArgumentException' in CrystalReportsApplication3.exe
Parametro non corretto.&lt;/LI-CODE&gt;&lt;P&gt;At the following URL to my Google Drive&lt;/P&gt;&lt;P&gt;&lt;A href="https://drive.google.com/drive/folders/10MmQPNqEblU26Qk1ilFVFwWeo0O3oAAY?usp=drive_link&amp;nbsp;" target="_blank" rel="noopener"&gt;https://drive.google.com/drive/folders/10MmQPNqEblU26Qk1ilFVFwWeo0O3oAAY?usp=drive_link&amp;nbsp;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;you can get:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;old report&amp;nbsp;P10035_DBF.RPT&lt;/LI&gt;&lt;LI&gt;new report&amp;nbsp;P10035_JDBC.RPT&lt;/LI&gt;&lt;LI&gt;folder LEGENDA with the file D510976L.dbf&lt;/LI&gt;&lt;LI&gt;folder RUBRICA with the file D510976D.dbf&lt;/LI&gt;&lt;LI&gt;the necessary jars to add to the classpath&lt;UL&gt;&lt;LI&gt;csvjdbc-1.0.46.jar&lt;/LI&gt;&lt;LI&gt;dans-dbf-lib-1.0.0-beta-10.jar&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 17 Oct 2025 10:46:12 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/modify-a-report-s-data-source-at-runtime-in-c-from-visual-studio/qaa-p/14246198#M4929507</guid>
      <dc:creator>danilo_mazzotti</dc:creator>
      <dc:date>2025-10-17T10:46:12Z</dc:date>
    </item>
    <item>
      <title>Re: Modify a report's data source at runtime in C# from V...</title>
      <link>https://community.sap.com/t5/technology-q-a/modify-a-report-s-data-source-at-runtime-in-c-from-visual-studio/qaa-p/14251135#M4929945</link>
      <description>The Engine is not capable of replaceconnection, you must use: CrystalDecisions.ReportAppServer.ClientDoc.ISCDReportClientDocument rptClientDoc; See one of my samples on the info page to see how it's used : &lt;A href="https://help.sap.com/docs/SUPPORT_CONTENT/crystalreports/3354091173.html?locale=en-US" target="_blank"&gt;https://help.sap.com/docs/SUPPORT_CONTENT/crystalreports/3354091173.html?locale=en-US&lt;/A&gt;</description>
      <pubDate>Wed, 22 Oct 2025 20:51:46 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/modify-a-report-s-data-source-at-runtime-in-c-from-visual-studio/qaa-p/14251135#M4929945</guid>
      <dc:creator>DonWilliams</dc:creator>
      <dc:date>2025-10-22T20:51:46Z</dc:date>
    </item>
    <item>
      <title>Re: Modify a report's data source at runtime in C# from V...</title>
      <link>https://community.sap.com/t5/technology-q-a/modify-a-report-s-data-source-at-runtime-in-c-from-visual-studio/qaa-p/14255946#M4930428</link>
      <description>&lt;P&gt;Hello everyone,&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;The suggestion to use &lt;STRONG&gt;CrystalDecisions.ReportAppServer.ClientDoc.ISCDReportClientDocument&lt;/STRONG&gt; DID NOT SOLVE THE PROBLEM&lt;/LI&gt;&lt;LI&gt;I can't see any examples from the link &lt;A href="https://help.sap.com/docs/SUPPORT_CONTENT/crystalreports/3354091173.html?locale=en-US" target="_blank" rel="noopener"&gt;https://help.sap.com/docs/SUPPORT_CONTENT/crystalreports/3354091173.html?locale=en-US&lt;/A&gt; (maybe the link is wrong)&lt;/LI&gt;&lt;LI&gt;&amp;nbsp;It wasn't me who accepted the answer as a solution&lt;/LI&gt;&lt;LI&gt;Are there any other suggestions?&lt;/LI&gt;&lt;/UL&gt;</description>
      <pubDate>Wed, 29 Oct 2025 09:26:04 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/modify-a-report-s-data-source-at-runtime-in-c-from-visual-studio/qaa-p/14255946#M4930428</guid>
      <dc:creator>danilo_mazzotti</dc:creator>
      <dc:date>2025-10-29T09:26:04Z</dc:date>
    </item>
  </channel>
</rss>

