• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 609
  • Last Modified:

CrystalDecisions.CrystalReports.Engine.LogOnException logon failed

Hi every body..
I have created a report using ADO.NET XML (xml schema file) and in the webform I used the following procedure to log onto SQL Server database:
Private Sub LogonToReport _
   (ByRef Report As ReportDocument)
        Dim logonInfo As New TableLogOnInfo
        Dim table As Table

        ' Set the logon information for each table.
        For Each table In Report.Database.Tables
            logonInfo = table.LogOnInfo
            logonInfo.ConnectionInfo.ServerName = "xx"
            logonInfo.ConnectionInfo.DatabaseName = "xx"
            logonInfo.ConnectionInfo.UserID = "sa"
            logonInfo.ConnectionInfo.Password = "xx"
            ' Apply the connection information to the table.
            table.ApplyLogOnInfo(logonInfo)
        Next table
    End Sub
but I got the error "CrystalDecisions.CrystalReports.Engine.LogOnException logon failed"
Could any body help me PLZ.. Thanks in advance...
0
Hassan_Ghanem
Asked:
Hassan_Ghanem
  • 5
  • 3
  • 3
  • +2
1 Solution
 
mlmccCommented:
0
 
frodomanCommented:
The link posted by mlmcc is probably the solution you need.  If not, please post the rest of the code you use to call the report.

frodoman
0
 
Hassan_GhanemAuthor Commented:
I didn't include the table name when I filled the dataSet
MyDataAdapter.Fill(dataSet)
but my SQL statement which I used to fill my dataSet contains more than one table..how could I include them...
0
Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
frodomanCommented:
I believe you just need to reference the primary table when you fill your dataset.

  MyDA.Fill(dataSet, "PrimaryTable")

That should be sufficient to meet Crystal's dereferencing needs.

frodoman
0
 
ebolekCommented:
This is how I do it. Hoepfully it helps
Regards
Emre

public DataSet FillDataSet(DataSet MyDataSet)
            {
                  SqlConnection MyConnectionString = new SqlConnection("server=xx;database=xx;UID=xx;PWD=xx;");
                  string SQL;
                  SQL = "tablename";            
                 
                  //Create a DataAdapter, and then provide the name of the stored procedure.
                  SqlDataAdapter MyDataAdapter = new SqlDataAdapter(SQL, MyConnectionString);

                  //Set the command type as StoredProcedure.
                  MyDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure;

                  //Create and add a parameter to Parameters collection for the stored procedure.
                  MyDataAdapter.SelectCommand.Parameters.Add(new SqlParameter("@CaseID", SqlDbType.VarChar, 25));
                  MyDataAdapter.SelectCommand.Parameters.Add(new SqlParameter("@line_number", SqlDbType.Int));
                  MyDataAdapter.SelectCommand.Parameters.Add(new SqlParameter("@company_id", SqlDbType.VarChar, 4));
                  //Assign the search value to the parameter.
                  MyDataAdapter.SelectCommand.Parameters["@CaseID"].Value = _parametervalues[0];
                  MyDataAdapter.SelectCommand.Parameters["@line_number"].Value = _parametervalues[1];
                  MyDataAdapter.SelectCommand.Parameters["@company_id"].Value = _parametervalues[2];
                  MyDataAdapter.Fill(MyDataSet.Tables["tablename"]);
                  return MyDataSet;
            }

Regards
Emre
0
 
Hassan_GhanemAuthor Commented:
frodoman what did u mean by Primay table? I have tried every table but it hasn't solve the problem..
0
 
ebolekCommented:
did u try my code, If yes, you have to set all the tables connection information and parameter information. Dataset needs these information to fill it with data. The above code is written for only one table. But you can pass the table name and adjust the indexes of the parameter and load all the tables.
0
 
Hassan_GhanemAuthor Commented:
ebolek.. I have done that but the problem hasn't been solved.
0
 
frodomanCommented:
Can you post your code for us to look at?
0
 
ebolekCommented:
what error message does it give. I know that my code works because i set it for my reports. But i have one stored proc in my dataset. why dont you do different datasets for each table. Then it will definitely work or adjust the code above to set miltiple tables from it

Regards
Emre
0
 
M0m0ngaCommented:
Everybody else seems to like the "extended version" of Log on code. Why not do this:

myReportDocument.SetDatabaseLogon("username", "password")

if you have subreports you might need to do it for those too eg:

myReportDocument.OpenSubreport("mySubReport1").SetDatabaseLogon("username", "password")
myReportDocument.OpenSubreport("mySubReport2").SetDatabaseLogon("username", "password")

Note also that logon error message isn't always about the logon as such. I've had this problem a few times and sometimes the actual cause is something almost totally unrelated.
 
0
 
Hassan_GhanemAuthor Commented:
M0m0nga ... I couldn't locate setDataBaseLogon method...
the following is my code.. by the way it works on my computer even without the logon procedure but the logon error appears when I install my application on the production environment..

Dim connectionString As String = "server='xxx'; user id='xx'; password='xx'; database='xxxxx'"
        Dim dbConnection As System.Data.IDbConnection = New System.Data.SqlClient.SqlConnection(connectionString)
        Dim queryString As String = "SELECT     Expenses.ReceiptNo, Expenses.ReceiptDate,   Expenses.CheckNO, ExpensesDetails.beneficiaryName, ExpensesDetails.ItemAmount, ExpensesDetails.Description, " & _
            "AccountCode.Description AS mAcct, AccountCode_1.Description AS subAcct " & _
            "FROM         ExpensesDetails ExpensesDetails INNER JOIN " & _
            "AccountCode AccountCode_1 ON ExpensesDetails.CodeID = AccountCode_1.ID INNER JOIN " & _
            "Expenses Expenses ON ExpensesDetails.ExpenseID = Expenses.ID INNER JOIN " & _
            "AccountCode AccountCode ON AccountCode_1.MajorID = AccountCode.ID "

 Dim dbCommand As System.Data.SqlClient.SqlCommand = New System.Data.SqlClient.SqlCommand
dbCommand.CommandText = queryString
        dbCommand.Connection = dbConnection

        Dim dataAdapter As System.Data.SqlClient.SqlDataAdapter = New System.Data.SqlClient.SqlDataAdapter
        dataAdapter.SelectCommand = dbCommand
        Dim dataSet As System.Data.DataSet = New System.Data.DataSet
        dataAdapter.Fill(dataSet)

0
 
Hassan_GhanemAuthor Commented:
Thanks M0m0nga..  Thanks all...
I have downloaded Crystal Reports .Net 1.1 Service Pack 2 and used setdatabaselogon method..
it solved my problem...

Hassan Ghanem....
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

  • 5
  • 3
  • 3
  • +2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now