如何使用C#控制台应用程序的ODBC连接打印RPT文件

本文关键字:连接 打印 RPT 文件 ODBC 何使用 控制台 应用程序 | 更新日期: 2023-09-27 17:58:17

我尝试了使用和不使用下面的数据库身份验证代码。

通过身份验证,它无法登录…我们通常使用ODBC,但我不知道如何将其链接到ODBC连接。

在没有身份验证的情况下,它会打印一个空报告(真实的报告,就好像没有返回任何记录一样)。

此外,如果我不知道报告有多少页,我该怎么说打印整个报告,因为它需要打印函数中的from和to页面参数。

在Crystal Reports XI v11.5 中创建了报告

提前感谢您的帮助。

到目前为止,我拥有的是:

printReport()
{
        ReportDocument cryRpt = new ReportDocument();
        cryRpt.RefreshReport += reportLoaded;
        cryRpt.Load(myReport);
        TableLogOnInfo crTableLogonInfo = new TableLogOnInfo();
        ConnectionInfo crConnectionInfo = new ConnectionInfo();
        Tables crTables;
        crConnectionInfo.ServerName = "myServer";
        crConnectionInfo.DatabaseName = "myDatabase";
        crConnectionInfo.UserID = "myUser";
        crConnectionInfo.Password = "myPass";
        crTables = cryRpt.Database.Tables;
        foreach (Table table in crTables)
        {
            crTableLogonInfo = table.LogOnInfo;
            crTableLogonInfo.ConnectionInfo = crConnectionInfo;
            table.ApplyLogOnInfo(crTableLogonInfo);
        }
        cryRpt.SetParameterValue("@report_type", type);
        cryRpt.Refresh();
}
reportLoaded(object sender, EventArgs e)
{
    PrintDialog print = new PrintDialog();
    DialogResult dr = print.ShowDialog();
    if (dr == DialogResult.OK)
    {
        ReportDocument cryRpt = (ReportDocument)sender;
        cryRpt.PrintOptions.PrinterName = print.PrinterSettings.PrinterName;
        cryRpt.PrintToPrinter(print.PrinterSettings.Copies, print.PrinterSettings.Collate, print.PrinterSettings.FromPage, print.PrinterSettings.ToPage);
    }
}

如何使用C#控制台应用程序的ODBC连接打印RPT文件

对于到ODBC的连接,您应该能够使用ConnectionInfo对象的ServerName属性来指定连接字符串/dsn。请参阅以下问题的答案以获取一些示例。

如何更改Crystal报表';运行时的ODBC数据库连接?

对于问题的第二部分,您应该能够对PrintToPrinter方法的两个页码参数都使用0来打印所有页面。

希望这能有所帮助。