Visual Studio: Using ReportViewer with a user-generated database file (datasource)












0














My program allows users to create local SQL Server database files (.mdf) to store huge amount of generated data. Now, I want to create reports which lets the user select a database that the program generated for them. This means that I can't attach a datasource to my application to create RDLC's. However, all the databases have the same schema coming from some "master" database I created for the program.



How can I create reports using ReportViewer with dynamically generated database files?



I'm thinking of just copying the data from the generated database to my "master" database using queries, generating a report, and truncating the master database after, so that I can create RDLC's using the master database. However, that seems inefficient and messy. Is there a better way to do this?



Thanks.










share|improve this question





























    0














    My program allows users to create local SQL Server database files (.mdf) to store huge amount of generated data. Now, I want to create reports which lets the user select a database that the program generated for them. This means that I can't attach a datasource to my application to create RDLC's. However, all the databases have the same schema coming from some "master" database I created for the program.



    How can I create reports using ReportViewer with dynamically generated database files?



    I'm thinking of just copying the data from the generated database to my "master" database using queries, generating a report, and truncating the master database after, so that I can create RDLC's using the master database. However, that seems inefficient and messy. Is there a better way to do this?



    Thanks.










    share|improve this question



























      0












      0








      0







      My program allows users to create local SQL Server database files (.mdf) to store huge amount of generated data. Now, I want to create reports which lets the user select a database that the program generated for them. This means that I can't attach a datasource to my application to create RDLC's. However, all the databases have the same schema coming from some "master" database I created for the program.



      How can I create reports using ReportViewer with dynamically generated database files?



      I'm thinking of just copying the data from the generated database to my "master" database using queries, generating a report, and truncating the master database after, so that I can create RDLC's using the master database. However, that seems inefficient and messy. Is there a better way to do this?



      Thanks.










      share|improve this question















      My program allows users to create local SQL Server database files (.mdf) to store huge amount of generated data. Now, I want to create reports which lets the user select a database that the program generated for them. This means that I can't attach a datasource to my application to create RDLC's. However, all the databases have the same schema coming from some "master" database I created for the program.



      How can I create reports using ReportViewer with dynamically generated database files?



      I'm thinking of just copying the data from the generated database to my "master" database using queries, generating a report, and truncating the master database after, so that I can create RDLC's using the master database. However, that seems inefficient and messy. Is there a better way to do this?



      Thanks.







      sql-server database visual-studio rdlc reportviewer






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 15 '18 at 19:12

























      asked Nov 14 '18 at 19:16









      PuggyLongLegs

      1612212




      1612212
























          2 Answers
          2






          active

          oldest

          votes


















          1














          Create the datasource to point directly to your master database, then create a parameter in the report, and ask for it before running the "actual" report. This parameter could be a combo or checkbox which will have as values the data generated from a query where you get the database names.



          Finally on your report use the parameter as variable and then select from the DB that you really need, like :



          Select table from mydatabase.schema.table





          share|improve this answer





















          • Thank you. I really appreciate your response. Would you be able to add more details? For example, what do you mean by pointing the datasource to my master database?
            – PuggyLongLegs
            Nov 15 '18 at 19:00






          • 1




            I don't have VS installed currently, so will go by memory. First create a parameter, there's an option to get values from a query, on it create the query as "select dbname from sysdatabases" Then for your datasource point to your server and use master database, In the query you should specify "Select table from @parameter_name.dbo.table" Hope this helps.
            – dbamex
            Nov 15 '18 at 19:10












          • Sorry, would you be able to explain what the parameter is? Like, what do you mean by "create a parameter and ask for it before running the 'actual' report?" What exactly do I ask for?
            – PuggyLongLegs
            Nov 16 '18 at 14:58





















          0














          This is what worked for me:



          First, update the connection string from the "master" database's to point to the database you want to access like what dbamex suggested. For example, if you have this connection string from your app.config:



          <add name="MyConnectionString" connectionString="Data Source=(LocalDB)MSSQLLocalDB;AttachDbFilename=|DataDirectory|ResourcesSSA.mdf;Integrated Security=True;Connect Timeout=30"


          Then you can add something like this in your code that you can call when you want to access the user-generated database:



          Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
          config.ConnectionStrings.ConnectionStrings("MyConnectionString").ConnectionString = "Data Source=(LocalDB)MSSQLLocalDB;AttachDbFilename=" & new_db_path & ";Integrated Security=True;Connect Timeout=30"
          config.Save(ConfigurationSaveMode.Modified)


          So any dataset in your app that uses the connection string will be updated to point to the new one. Hope this helps.






          share|improve this answer





















            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53307314%2fvisual-studio-using-reportviewer-with-a-user-generated-database-file-datasourc%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            1














            Create the datasource to point directly to your master database, then create a parameter in the report, and ask for it before running the "actual" report. This parameter could be a combo or checkbox which will have as values the data generated from a query where you get the database names.



            Finally on your report use the parameter as variable and then select from the DB that you really need, like :



            Select table from mydatabase.schema.table





            share|improve this answer





















            • Thank you. I really appreciate your response. Would you be able to add more details? For example, what do you mean by pointing the datasource to my master database?
              – PuggyLongLegs
              Nov 15 '18 at 19:00






            • 1




              I don't have VS installed currently, so will go by memory. First create a parameter, there's an option to get values from a query, on it create the query as "select dbname from sysdatabases" Then for your datasource point to your server and use master database, In the query you should specify "Select table from @parameter_name.dbo.table" Hope this helps.
              – dbamex
              Nov 15 '18 at 19:10












            • Sorry, would you be able to explain what the parameter is? Like, what do you mean by "create a parameter and ask for it before running the 'actual' report?" What exactly do I ask for?
              – PuggyLongLegs
              Nov 16 '18 at 14:58


















            1














            Create the datasource to point directly to your master database, then create a parameter in the report, and ask for it before running the "actual" report. This parameter could be a combo or checkbox which will have as values the data generated from a query where you get the database names.



            Finally on your report use the parameter as variable and then select from the DB that you really need, like :



            Select table from mydatabase.schema.table





            share|improve this answer





















            • Thank you. I really appreciate your response. Would you be able to add more details? For example, what do you mean by pointing the datasource to my master database?
              – PuggyLongLegs
              Nov 15 '18 at 19:00






            • 1




              I don't have VS installed currently, so will go by memory. First create a parameter, there's an option to get values from a query, on it create the query as "select dbname from sysdatabases" Then for your datasource point to your server and use master database, In the query you should specify "Select table from @parameter_name.dbo.table" Hope this helps.
              – dbamex
              Nov 15 '18 at 19:10












            • Sorry, would you be able to explain what the parameter is? Like, what do you mean by "create a parameter and ask for it before running the 'actual' report?" What exactly do I ask for?
              – PuggyLongLegs
              Nov 16 '18 at 14:58
















            1












            1








            1






            Create the datasource to point directly to your master database, then create a parameter in the report, and ask for it before running the "actual" report. This parameter could be a combo or checkbox which will have as values the data generated from a query where you get the database names.



            Finally on your report use the parameter as variable and then select from the DB that you really need, like :



            Select table from mydatabase.schema.table





            share|improve this answer












            Create the datasource to point directly to your master database, then create a parameter in the report, and ask for it before running the "actual" report. This parameter could be a combo or checkbox which will have as values the data generated from a query where you get the database names.



            Finally on your report use the parameter as variable and then select from the DB that you really need, like :



            Select table from mydatabase.schema.table






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Nov 15 '18 at 0:12









            dbamex

            514




            514












            • Thank you. I really appreciate your response. Would you be able to add more details? For example, what do you mean by pointing the datasource to my master database?
              – PuggyLongLegs
              Nov 15 '18 at 19:00






            • 1




              I don't have VS installed currently, so will go by memory. First create a parameter, there's an option to get values from a query, on it create the query as "select dbname from sysdatabases" Then for your datasource point to your server and use master database, In the query you should specify "Select table from @parameter_name.dbo.table" Hope this helps.
              – dbamex
              Nov 15 '18 at 19:10












            • Sorry, would you be able to explain what the parameter is? Like, what do you mean by "create a parameter and ask for it before running the 'actual' report?" What exactly do I ask for?
              – PuggyLongLegs
              Nov 16 '18 at 14:58




















            • Thank you. I really appreciate your response. Would you be able to add more details? For example, what do you mean by pointing the datasource to my master database?
              – PuggyLongLegs
              Nov 15 '18 at 19:00






            • 1




              I don't have VS installed currently, so will go by memory. First create a parameter, there's an option to get values from a query, on it create the query as "select dbname from sysdatabases" Then for your datasource point to your server and use master database, In the query you should specify "Select table from @parameter_name.dbo.table" Hope this helps.
              – dbamex
              Nov 15 '18 at 19:10












            • Sorry, would you be able to explain what the parameter is? Like, what do you mean by "create a parameter and ask for it before running the 'actual' report?" What exactly do I ask for?
              – PuggyLongLegs
              Nov 16 '18 at 14:58


















            Thank you. I really appreciate your response. Would you be able to add more details? For example, what do you mean by pointing the datasource to my master database?
            – PuggyLongLegs
            Nov 15 '18 at 19:00




            Thank you. I really appreciate your response. Would you be able to add more details? For example, what do you mean by pointing the datasource to my master database?
            – PuggyLongLegs
            Nov 15 '18 at 19:00




            1




            1




            I don't have VS installed currently, so will go by memory. First create a parameter, there's an option to get values from a query, on it create the query as "select dbname from sysdatabases" Then for your datasource point to your server and use master database, In the query you should specify "Select table from @parameter_name.dbo.table" Hope this helps.
            – dbamex
            Nov 15 '18 at 19:10






            I don't have VS installed currently, so will go by memory. First create a parameter, there's an option to get values from a query, on it create the query as "select dbname from sysdatabases" Then for your datasource point to your server and use master database, In the query you should specify "Select table from @parameter_name.dbo.table" Hope this helps.
            – dbamex
            Nov 15 '18 at 19:10














            Sorry, would you be able to explain what the parameter is? Like, what do you mean by "create a parameter and ask for it before running the 'actual' report?" What exactly do I ask for?
            – PuggyLongLegs
            Nov 16 '18 at 14:58






            Sorry, would you be able to explain what the parameter is? Like, what do you mean by "create a parameter and ask for it before running the 'actual' report?" What exactly do I ask for?
            – PuggyLongLegs
            Nov 16 '18 at 14:58















            0














            This is what worked for me:



            First, update the connection string from the "master" database's to point to the database you want to access like what dbamex suggested. For example, if you have this connection string from your app.config:



            <add name="MyConnectionString" connectionString="Data Source=(LocalDB)MSSQLLocalDB;AttachDbFilename=|DataDirectory|ResourcesSSA.mdf;Integrated Security=True;Connect Timeout=30"


            Then you can add something like this in your code that you can call when you want to access the user-generated database:



            Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
            config.ConnectionStrings.ConnectionStrings("MyConnectionString").ConnectionString = "Data Source=(LocalDB)MSSQLLocalDB;AttachDbFilename=" & new_db_path & ";Integrated Security=True;Connect Timeout=30"
            config.Save(ConfigurationSaveMode.Modified)


            So any dataset in your app that uses the connection string will be updated to point to the new one. Hope this helps.






            share|improve this answer


























              0














              This is what worked for me:



              First, update the connection string from the "master" database's to point to the database you want to access like what dbamex suggested. For example, if you have this connection string from your app.config:



              <add name="MyConnectionString" connectionString="Data Source=(LocalDB)MSSQLLocalDB;AttachDbFilename=|DataDirectory|ResourcesSSA.mdf;Integrated Security=True;Connect Timeout=30"


              Then you can add something like this in your code that you can call when you want to access the user-generated database:



              Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
              config.ConnectionStrings.ConnectionStrings("MyConnectionString").ConnectionString = "Data Source=(LocalDB)MSSQLLocalDB;AttachDbFilename=" & new_db_path & ";Integrated Security=True;Connect Timeout=30"
              config.Save(ConfigurationSaveMode.Modified)


              So any dataset in your app that uses the connection string will be updated to point to the new one. Hope this helps.






              share|improve this answer
























                0












                0








                0






                This is what worked for me:



                First, update the connection string from the "master" database's to point to the database you want to access like what dbamex suggested. For example, if you have this connection string from your app.config:



                <add name="MyConnectionString" connectionString="Data Source=(LocalDB)MSSQLLocalDB;AttachDbFilename=|DataDirectory|ResourcesSSA.mdf;Integrated Security=True;Connect Timeout=30"


                Then you can add something like this in your code that you can call when you want to access the user-generated database:



                Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
                config.ConnectionStrings.ConnectionStrings("MyConnectionString").ConnectionString = "Data Source=(LocalDB)MSSQLLocalDB;AttachDbFilename=" & new_db_path & ";Integrated Security=True;Connect Timeout=30"
                config.Save(ConfigurationSaveMode.Modified)


                So any dataset in your app that uses the connection string will be updated to point to the new one. Hope this helps.






                share|improve this answer












                This is what worked for me:



                First, update the connection string from the "master" database's to point to the database you want to access like what dbamex suggested. For example, if you have this connection string from your app.config:



                <add name="MyConnectionString" connectionString="Data Source=(LocalDB)MSSQLLocalDB;AttachDbFilename=|DataDirectory|ResourcesSSA.mdf;Integrated Security=True;Connect Timeout=30"


                Then you can add something like this in your code that you can call when you want to access the user-generated database:



                Dim config As Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
                config.ConnectionStrings.ConnectionStrings("MyConnectionString").ConnectionString = "Data Source=(LocalDB)MSSQLLocalDB;AttachDbFilename=" & new_db_path & ";Integrated Security=True;Connect Timeout=30"
                config.Save(ConfigurationSaveMode.Modified)


                So any dataset in your app that uses the connection string will be updated to point to the new one. Hope this helps.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Dec 31 '18 at 20:44









                PuggyLongLegs

                1612212




                1612212






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.





                    Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                    Please pay close attention to the following guidance:


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53307314%2fvisual-studio-using-reportviewer-with-a-user-generated-database-file-datasourc%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Guess what letter conforming each word

                    Port of Spain

                    Run scheduled task as local user group (not BUILTIN)