Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 338
  • Last Modified:

Failed to load database information error - crystal report in c# with SQL Server

My code works fine and the report opens  When excute code from visual studio but when  I try to open the same report after installation or on  another machine, I get this error.
Failed to load database information. Error in File temp_92bf354f-8e8f-4bb8-adc9-3699bf6fef86 996_4916_{76EC69A0-4A21-4077-89D4-12F6242DFCEF}.rpt: Failed to load database information.

System.Runtime.InteropServices.COMException: Failed to load database information. Error in File temp_92bf354f-8e8f-4bb8-adc9-3699bf6fef86 996_4916_{76EC69A0-4A21-4077-89D4-12F6242DFCEF}.rpt: Failed to load database information.

I'm using Visual Studio 2013 with SQL Server 2012 and Crystal Report v3_0_16. My PC runs Windows 10 64 bit. I've opened it on a 64-bit machine and 32-bit machine, but both get the same error.
note : I have installed crystal report runtime 64 bit and 32 bit but still same issue .
 How do I solve this?
0
naseem iebow
Asked:
naseem iebow
  • 8
  • 4
  • 2
  • +1
1 Solution
 
vastoCommented:
What kind of connection do you use ? If it is ODBC you need to create a DSN on the other machine. If it is not ODBC then you probably miss a driver on the other machine. What is your database ?
0
 
naseem iebowAuthor Commented:
the database is on same machine and i use the following code :
 print_store_counts_dataset ds = new print_store_counts_dataset();
cmd.CommandText = "select rec_items.id,items.iname,items_count.count,item_code from items inner join items_count on items.code=items_count.item_code  inner join rec_items on items_count.rec_num=rec_items.id where isclose=0 ";
            con.Open();
            SqlCommand cmd_details = new SqlCommand("", con);
            SqlDataReader reader = cmd.ExecuteReader();
       int i = 0;
   
                while (reader.Read())
                {
                    cmd_details.CommandText = "select sum(count) from bills_details where    reciver_number=@rn and item_code=@ic ";
                    cmd_details.Parameters.Clear();
                    cmd_details.Parameters.AddWithValue("@rn", reader["id"].ToString());
                    cmd_details.Parameters.AddWithValue("@ic", reader["item_code"].ToString());
                    int payed = 0;
                    object res = cmd_details.ExecuteScalar();

                    if (res.GetType() != typeof(DBNull))
                    {

                        payed = Convert.ToInt32(cmd_details.ExecuteScalar());
                    }

                    /*if (cmd_details.ExecuteScalar() !=null)
                        payed = Convert.ToInt32(cmd_details.ExecuteScalar());*/
                    /*
                    ds.Tables["store_counts"].Rows.Add();
                   
                    ds.Tables["store_counts"].Rows[i].SetField("rec_num", reader["id"].ToString());
                    ds.Tables["store_counts"].Rows[i].SetField("item_name", reader["iname"].ToString());
                    ds.Tables["store_counts"].Rows[i].SetField("item_code", reader["item_code"].ToString());
                    ds.Tables["store_counts"].Rows[i].SetField("count_sup", reader["count"].ToString());
                    ds.Tables["store_counts"].Rows[i].SetField("count_pay", payed);
                    ds.Tables["store_counts"].Rows[i].SetField("count_remain", Convert.ToInt32(reader["count"]) - payed);
                    
                    i++;*/

                    
                }

print_store_counts_reports cr = new print_store_counts_reports();
cr.SetDataSource(ds);
            
            cr.Refresh();
            crystalReportViewer1.ReportSource = cr;
           
            crystalReportViewer1.Refresh();

Open in new window

0
 
PortletPaulCommented:
Im guessing here but this catches my eye:

con.Open();

What connection is it opening? Have you defined what,or importantly, where, the data source is?
0
NFR key for Veeam Agent for Linux

Veeam is happy to provide a free NFR license for one year.  It allows for the non‑production use and valid for five workstations and two servers. Veeam Agent for Linux is a simple backup tool for your Linux installations, both on‑premises and in the public cloud.

 
naseem iebowAuthor Commented:
As i mentioned this code work fine when excute in visual but when deploy ans install it on machine didnot work.
Before this lines i define connection and connection string and the connection open correctly
0
 
PortletPaulCommented:
Failed to load database information is stated in the error message so the problem is in those comnection details I  think.
0
 
naseem iebowAuthor Commented:
yes maybe the problem in connection but how i can solve it ??
0
 
Éric MoreauSenior .Net ConsultantCommented:
have you tried to encapsulate your code in a try ... catch structure and look at the exception? you might find other indices to help you find the issue.

I would also surround disposable objects (dataset, connection, command, ...) with using {} to ensure you are closing your objects: https://msdn.microsoft.com/en-us/library/yh598w02.aspx?f=255&MSPPError=-2147217396
0
 
vastoCommented:
I don't think the error is coming from the code above. Do you have a subreport ? If you do, the error is coming from the subreports because you are setting the main report datasource , but the subreport is still trying to connect. If you don't have a subreport then the SetDataSource is not working and the report is still trying to connect using the internal database connection
0
 
naseem iebowAuthor Commented:
i use try .. catch but there is no errors , and as i noticed the error come when using the application interrupted when execute this command cr.SetDataSource(ds);
i wasn't use sub reports and if setDataSource is not working so what the solution ?
0
 
vastoCommented:
You are declaring the dataset ds , but it was never filled with data. The code , which supposed to load data is commented. print_store_counts_dataset is a strongly typed dataset and there might be some connection associated with it in design time. Check what this connection is doing
0
 
naseem iebowAuthor Commented:
Dear Vasto ,
the code that filled data set is commented temporary because i make some test but this error appears also when put it not commented .
about dataset "print_store_counts_dataset " there is no connection in design page because as you see from above code in this dataset I create data table and filled this data table from this code .
thanks
0
 
vastoCommented:
then , try to pass the table and not the whole dataset

cr.SetDataSource( ds.Tables["store_counts"]);
0
 
naseem iebowAuthor Commented:
Unfortunately , same issue :(
0
 
naseem iebowAuthor Commented:
the problem solved by copy the configuration file in same installation folder .
thanks all for help
0
 
naseem iebowAuthor Commented:
because my solution repair the issue by coping configuration file to same installation folder
0

Featured Post

Important Lessons on Recovering from Petya

In their most recent webinar, Skyport Systems explores ways to isolate and protect critical databases to keep the core of your company safe from harm.

  • 8
  • 4
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now