FastReport 是一款比较好用的报表设计软件,带有报表设计器。
通常的做法,先在 delphi 工程里添加 TfrxReport 报表组件,如果需要读取数据库数据,再添加数据库组件。 双击 TfrxReport 组件会d出报表设计器,然后再进行设计就可以了。
在取报表格式之前,应该先把数据集对象放好,这样才能保证在报表控件在取格式文件后,安置报表对象时,可以拿到数据对象,如果 *** 作顺序搞反了,则报表对象就无法拿到数据对象,在预览数据时,就会产生“没有数据集”的错误了!!
var
tmpDataSet: T数据集;
DataSource: TDataSource;
frxDBDataSet: TfrxDBDataset;
begin
tmpDataSet:=T数据集Create(Self);
DataSource:=TDataSourceCreate(Self);
frxDBDataSet:=TfrxDBDatasetCreate(Self);
DataSourceDataSet:=tmpDataSet;
frxDBDataSetDataSource:=DataSource;
//frxDBDataSetDataSet:=tmpDataSet; //这条语句与上一条都可用,我也不知道区别在哪
frxDBDataSetUserName:='数据项名称'; //好用在于可以用中文名
frxReport1DataSetsAdd(frxDBDataSet);
-------------注意:在把报表格式LoadFromFile或LoadFromStream之前,必须完成上面这几条语句的程序
这个问题应该是和网站服务器的IIS设置有关,通过ODBC访问数据库可能服务器设置了限制,比如连接数限制、timeout时限限制等等。你的站点访问量低但是有可能那台F上别人的站点频繁的访问数据库,造成odbc驱动处理压力太大也是有可能的。最好找系统管理员问清楚。
你可以试试换一个服务器看看还没有没有这种情况出现,因为你在本地是没有问题的,所以基本上不大可能是程序导致的。
另外:你最好要确认一下你在本地使用的odbc驱动版本和在服务器上的odbc驱动版本是否是一致的。
刚做了测试,我是参考这位大神的网页链接
private void button1_Click(object sender, EventArgs e){
Report rep = new Report();
SqlConnection conn = new SqlConnection(@"Data Source=;Integrated Security=true;Initial Catalog=SD11812N_Sample;");
string filename = @"C:\Users\Administrator\Desktop\测试frx";
try
{
string sql = "select code,name,specs,unit from goods";
connOpen();
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataAdapter sd = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
sdFill(ds);
connClose();//关闭数据库连接
sdDispose();//释放资源
repLoad(filename);//加载模版
repRegisterData(ds);
repGetDataSource(dsTables[0]TableName)Enabled = true;
repShow();//显示报表
}
catch (Exception er)
{
MessageBoxShow(erMessage);
connClose();
throw;
}
}
报表模版
打印预览 效果
我觉得最好别写如数据库,把路径写进表里,用的事后直接连接就行了
private JTable getJTable() {
if (jTable == null) {
jTable = new JTable();
jTablesetForeground(Colorblue);
jTablesetGridColor(Colorblack);
Object[][] p=null;
ay=getstudent();
p=new Object[aysize()][7];
for(int i=0;i<aysize();i++){
student stu=(student)ayget(i);
p[i][0]=StringvalueOf(stugetStu_id());
p[i][1]=stugetStu_name();
p[i][2]=stugetStu_pass();
p[i][3]=stugetStu_sex();
p[i][4]=stugetStu_tel();
p[i][5]=stugetStu_address();
p[i][6]=stugetStu_photo();
}
Object[] table={"编号","姓名","密码","性别","电话","地址","照片"};
jTable = new JTable(p,table);
jTableaddMouseListener(new javaawteventMouseAdapter() {
public void mouseClicked(javaawteventMouseEvent e) {
int rows=getrows();//得到选中的行
String img=StringvalueOf(jTablegetValueAt(rows, 6));
jLabel3setIcon(new ImageIcon(img));
// Systemoutprintln("您选择的行是"+rows+"截取的列是"+img);
}
});
}
return jTable;
}
这是java截取路径的类
如果在 FastReport 中使用 MySQL 数据库时没有找到 MySQLConnect 对象,可能是因为没有正确安装或配置 FastReport 的 MySQL 数据库驱动程序。您可以尝试以下方法解决问题:
1 确认已正确安装 MySQL 数据库驱动程序。可以尝试重新安装或更新 MySQL 数据库驱动程序,或者查找最新版本的驱动程序。
2 确认已正确配置 FastReport 的 MySQL 数据库驱动程序。可以尝试在 FastReport 的“数据源配置”中重新配置 MySQL 数据库驱动程序,确保数据库连接字符串、用户名和密码等信息正确。
3 确认已正确设置 MySQL 数据库驱动程序的环境变量。可以尝试在系统环境变量中添加 MySQL 数据库驱动程序的路径,确保 FastReport 能够正确找到 MySQLConnect 对象。
以上就是关于如何将FastReport加入Delphi中使用全部的内容,包括:如何将FastReport加入Delphi中使用、如何在FastReport报表中动态添加数据集、用FASTREPORT可以生成如图所示的标签打印程序和数据库吗等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)