triphen
asked on
VB.net to C# conversion CrystalReports DB login failed
Hello Experts,
I am changing some code from VB.net to C#. The original code would load a Crystal report and Export it to PDF. The new code wont connect to the database, but none of the DB names or login info has changed. I get this error:
CrystalDecisions.CrystalRe ports.Engi ne.LogOnEx ception: Database logon failed. ---> System.Runtime.InteropServ ices.COMEx ception: Database logon failed.
at CrystalDecisions.ReportApp Server.Con trollers.R eportSourc eClass.Exp ort(Export Options pExportOptions, RequestContext pRequestContext)
at CrystalDecisions.ReportSou rce.EromRe portSource Base.Expor tToStream( ExportRequ estContext reqContext)
--- End of inner exception stack trace ---
at CrystalDecisions.ReportApp Server.Con vertDotNet ToErom.Thr owDotNetEx ception(Ex ception e)
at CrystalDecisions.ReportSou rce.EromRe portSource Base.Expor tToStream( ExportRequ estContext reqContext)
at CrystalDecisions.CrystalRe ports.Engi ne.FormatE ngine.Expo rtToStream (ExportReq uestContex t reqContext)
at CrystalDecisions.CrystalRe ports.Engi ne.FormatE ngine.Expo rt(ExportR equestCont ext reqContext)
at CrystalDecisions.CrystalRe ports.Engi ne.FormatE ngine.Expo rt()
at CrystalDecisions.CrystalRe ports.Engi ne.ReportD ocument.Ex port()
at Member.frmTransactionHisto ry.btnEmai lTransacti onHistory_ Click(Obje ct sender, EventArgs e) in C:\frmTransactionHistory.c s:line 236
VB.net Code
C# Code
My datasource is ODBC. With a System DSN name of "sqlbase".
Help?
I am changing some code from VB.net to C#. The original code would load a Crystal report and Export it to PDF. The new code wont connect to the database, but none of the DB names or login info has changed. I get this error:
CrystalDecisions.CrystalRe
at CrystalDecisions.ReportApp
at CrystalDecisions.ReportSou
--- End of inner exception stack trace ---
at CrystalDecisions.ReportApp
at CrystalDecisions.ReportSou
at CrystalDecisions.CrystalRe
at CrystalDecisions.CrystalRe
at CrystalDecisions.CrystalRe
at CrystalDecisions.CrystalRe
at Member.frmTransactionHisto
VB.net Code
'Load the PDF
Dim cryRpt As New ReportDocument
Dim crParameterFieldDefinitions As ParameterFieldDefinitions
Dim crParameterFieldDefinition As ParameterFieldDefinition
Dim crParameterValues As New ParameterValues
Dim crParameterDiscreteValue As New ParameterDiscreteValue
cryRpt.Load(Application.StartupPath & "\Reports\StdRecpt.rpt")
crParameterDiscreteValue.Value = (txt_TransNum.Text)
crParameterFieldDefinitions = _
cryRpt.DataDefinition.ParameterFields
crParameterFieldDefinition = _
crParameterFieldDefinitions.Item("Transact")
crParameterValues = crParameterFieldDefinition.CurrentValues
crParameterValues.Clear()
crParameterValues.Add(crParameterDiscreteValue)
crParameterFieldDefinition.ApplyCurrentValues(crParameterValues)
cryRpt.SetDatabaseLogon("user", "password", "sqlbase", "")
'Export the PDF
Try
Dim CrExportOptions As ExportOptions
Dim CrDiskFileDestinationOptions As New DiskFileDestinationOptions()
Dim CrFormatTypeOptions As New PdfRtfWordFormatOptions
CrDiskFileDestinationOptions.DiskFileName = (Application.StartupPath & "\Exports\PDF\Trans# " & txt_TransNum.Text & ".pdf")
CrExportOptions = cryRpt.ExportOptions
With CrExportOptions
.ExportDestinationType = ExportDestinationType.DiskFile
.ExportFormatType = ExportFormatType.PortableDocFormat
.DestinationOptions = CrDiskFileDestinationOptions
.FormatOptions = CrFormatTypeOptions
End With
cryRpt.Export()
Catch ex As Exception
MessageBox.Show(ex.Message, "Error: Exception", MessageBoxButtons.OK, MessageBoxIcon.Stop)
Exit Sub
End Try
C# Code
try
{
ReportDocument cryRpt;
ParameterFieldDefinitions crParameterFieldDefinitions;
ParameterFieldDefinition crParameterFieldDefinition;
ParameterValues crParameterValues;
ParameterDiscreteValue crParameterDiscreteValue;
cryRpt = new ReportDocument();
crParameterValues = new ParameterValues();
crParameterDiscreteValue = new ParameterDiscreteValue();
cryRpt.Load(Application.StartupPath + @"\Reports\POSMemberTransactionHistory.rpt");
crParameterDiscreteValue.Value = Convert.ToInt32(txtMemcode.Text);
crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields;
crParameterFieldDefinition = crParameterFieldDefinitions[0];
crParameterValues = crParameterFieldDefinition.CurrentValues;
crParameterValues.Clear();
crParameterValues.Add(crParameterDiscreteValue);
crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);
cryRpt.SetDatabaseLogon("user", "password", "sqlbase", "");
ExportOptions CrExportOptions;
DiskFileDestinationOptions CrDiskFileDestinationOptions = new DiskFileDestinationOptions();
PdfRtfWordFormatOptions CrFormatTypeOptions = new PdfRtfWordFormatOptions();
CrDiskFileDestinationOptions.DiskFileName = @"C:\Test.pdf";
CrExportOptions = cryRpt.ExportOptions;
{
CrExportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
CrExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat;
CrExportOptions.DestinationOptions = CrDiskFileDestinationOptions;
CrExportOptions.FormatOptions = CrFormatTypeOptions;
}
cryRpt.Export();
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
My datasource is ODBC. With a System DSN name of "sqlbase".
Help?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I figured it out.
I believe you need to change the methodology. The method you are using is the original OCX which probably doesn't support C#.
You need to move at least to the RDC if not to a .Net version of Crystal.
mlmcc