找回密码
 立即注册

QQ登录

只需一步,快速开始

人生就是修炼

注册会员

6

主题

21

帖子

81

积分

注册会员

积分
81
QQ
人生就是修炼
注册会员   /  发表于:2023-5-5 09:51  /   查看:2522  /  回复:3
1金币
C# Winform原先使用的是Access数据库,可以动态绑定,代码如下
            string file_name = @"1笔录.rdlx";
            GrapeCity.ActiveReports.PageReport pageReport = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(file_name));
            pageReport.Report.DataSources[0].DataSourceReference = "";
            pageReport.Report.DataSources[0].ConnectionProperties.DataProvider = "OLEDB";
            pageReport.Report.DataSources[0].ConnectionProperties.ConnectString = string.Format(connectString);
            //var _reportRuntime = new GrapeCity.ActiveReports.Document.PageDocument(pageReport);
            GrapeCity.ActiveReports.Document.PageDocument reportDocument = new GrapeCity.ActiveReports.Document.PageDocument(pageReport);
            pageReport.Report.ReportParameters[0].DefaultValue.Values.Clear();   
            pageReport.Report.ReportParameters[0].DefaultValue.Values.Add(this.询问号.Text.Trim());
            pageReport.Report.ReportParameters[1].DefaultValue.Values.Clear();
            pageReport.Report.ReportParameters[1].DefaultValue.Values.Add(this.年度.Text.Trim());
            this.viewer打印.LoadDocument(reportDocument);
在使用了SQLite数据库时如何编写?
尝试了将
            pageReport.Report.DataSources[0].ConnectionProperties.DataProvider = "OLEDB";
换成了
            pageReport.Report.DataSources[0].ConnectionProperties.DataProvider = "ODBC";

        pageReport.Report.DataSources[0].ConnectionProperties.DataProvider = "SQLite";
都不能成功
请高手指点,谢谢!

最佳答案

查看完整内容

问题已经解决: 原来使用字符串链接Access数据库和SQLite数据库的写法不一样的,对于代码中动态绑定数据源这个是必须掌握的知识。 Access格式为: private readonly string connectString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = YiFa.accdbersist Security Info=False;"; SQLite格式为: private readonly string connectString = @"DRIVER=SQLITE3 ODBC DRIVER;DATABASE=data\YiFa.db"; 另外去掉下面两行代 ...

3 个回复

倒序浏览
最佳答案
最佳答案
人生就是修炼
注册会员   /  发表于:2023-5-5 09:51:30
来自 3#
本帖最后由 人生就是修炼 于 2023-5-8 14:02 编辑

问题已经解决:
原来使用字符串链接Access数据库和SQLite数据库的写法不一样的,对于代码中动态绑定数据源这个是必须掌握的知识。

Access格式为:
private readonly string connectString = "rovider=Microsoft.ACE.OLEDB.12.0;Data Source = YiFa.accdbersist Security Info=False;";
SQLite格式为:
private readonly string connectString = @"DRIVER=SQLITE3 ODBC DRIVER;DATABASE=data\YiFa.db";

另外去掉下面两行代码也不会报错

pageReport.Report.DataSources[0].DataSourceReference = "";
pageReport.Report.DataSources[0].ConnectionProperties.DataProvider = "ODBC";
完整代码如下:
  1. private readonly string connectString = @"DRIVER=SQLITE3 ODBC DRIVER;DATABASE=data\YiFa.db";

  2. string file_name = @"笔录.rdlx";
  3. GrapeCity.ActiveReports.PageReport pageReport = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(file_name));
  4. pageReport.Report.DataSources[0].ConnectionProperties.ConnectString = string.Format(connectString);
  5. GrapeCity.ActiveReports.Document.PageDocument reportDocument = new GrapeCity.ActiveReports.Document.PageDocument(pageReport);
  6. pageReport.Report.ReportParameters[0].DefaultValue.Values.Clear();   
  7. pageReport.Report.ReportParameters[0].DefaultValue.Values.Add(this.询问号.Text.Trim());
  8. pageReport.Report.ReportParameters[1].DefaultValue.Values.Clear();
  9. pageReport.Report.ReportParameters[1].DefaultValue.Values.Add(this.年度.Text.Trim());
  10. this.viewer打印.LoadDocument(reportDocument);
复制代码
总结:不同的数据库,对数据源的调用写法是不一样的,这里又总结了一种写法
回复 使用道具 举报
Bella.YuanWyn认证
超级版主   /  发表于:2023-5-5 11:39:48
2#
回复 使用道具 举报
Bella.YuanWyn认证
超级版主   /  发表于:2023-5-5 17:26:09
4#
人生就是修炼 发表于 2023-5-5 16:56
问题已经解决:
原来使用字符串链接Access数据库和SQLite数据库的写法不一样的,对于代码中动态绑定数据源这 ...

非常感谢您分享该问题的解决方法,给您点个赞,那本帖就先结帖了,有问题您另开新帖哦~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部