锐浪报表使用

By admin at 2018-08-28 • 0人收藏 • 797人看过

感谢daheian提供的示例和代码。

1,打印和打印预览

示例代码里面用的是mdb数据库,这里我利用官方提供的示例数据。

import win.ui;
import reportRl;
import reportRl.path;
import reportRl.displayView;
/*DSG{{*/
mainForm = win.form(text="aardio form";right=759;bottom=469)
mainForm.add(
btnPrint={cls="button";text="打印";left=9;top=5;right=80;bottom=30;dl=1;dt=1;z=1};
btnPrintPreview={cls="button";text="打印预览";left=88;top=5;right=159;bottom=30;dl=1;dt=1;z=2};
static={cls="static";text="static";left=10;top=39;right=751;bottom=458;border=1;db=1;dl=1;dr=1;dt=1;transparent=1;z=3}
)
/*}}*/

var report,err = reportRl();
if(!report){
	mainForm.msgbox(err)
}

var fileName = reportRl.path.templatePath() + "1a.简单表格.grf";
report.LoadFromFile(fileName);
report.DetailGrid.Recordset.LoadData("http://www.gridreport.cn/demos/data/DataCenter.ashx?data=Customer")
//report.DetailGrid.Recordset.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=" + reportRl.path.dataPath() + "NorthWind.mdb;";

var displayObj,err = reportRl.displayView(mainForm.static);
if(!displayObj){
	mainForm.msgbox(err)
}

displayObj.Report = report;
displayObj.Start();

mainForm.btnPrint.oncommand = function(id,event){
	report.Print(true);
}
mainForm.btnPrintPreview.oncommand = function(id,event){
	report.PrintPreview(true);
}


mainForm.enableDpiScaling()
mainForm.show();

return win.loopMessage();

blob.png

5 个回复 | 最后更新于 2018-11-07
2018-10-14   #1

直接获取程序中的数据来显示和打印:

import win.ui;
import reportRl;
import reportRl.path;
import reportRl.displayView;
/*DSG{{*/
mainForm = win.form(text="推式提供报表数据-Grid++Report例子 for aardio";right=1085;bottom=632;border="dialog frame";max=false)
mainForm.add(
button={cls="button";text="打印预览";left=142;top=42;right=251;bottom=76;z=1};
button2={cls="button";text="退出";left=142;top=116;right=251;bottom=150;z=2};
button3={cls="button";text="打印预览";left=131;top=285;right=240;bottom=319;z=4};
static={cls="static";text="Static";left=343;top=34;right=911;bottom=484;transparent=1;z=3}
)
/*}}*/

var report = reportRl();
assert(report,"报表组件创建失败!");

var fileName = reportRl.path.templatePath() + "\ManualFillRecord.grf";
report.LoadFromFile(fileName);

report.FetchRecord = function(){
	/*在报表生成时且以推模式向报表提供数据,报表主对象请求数据时触发。*/
	var c1 = report.FieldByName("c1");
	
	var i1 = report.FieldByName("i1");
	
	var f1 = report.FieldByName("f1");
		
	
	report.DetailGrid.Recordset.Append();
	c1.AsString = "A";
	i1.AsInteger = 1;
	f1.AsFloat = 1.01;
	report.DetailGrid.Recordset.Post();
	
	report.DetailGrid.Recordset.Append();
	c1.AsString = "B";
	i1.AsInteger = 2;
	f1.AsFloat = 2.01;
	report.DetailGrid.Recordset.Post();
	
	report.DetailGrid.Recordset.Append();
	c1.AsString = "C";
	i1.AsInteger = 3;
	f1.AsFloat = 3.01;
	report.DetailGrid.Recordset.Post();
}

mainForm.button2.oncommand = function(id,event){
	//退出
	mainForm.close();
}
mainForm.button.oncommand = function(id,event){
	//打印预览
	report.PrintPreview(true);
}

mainForm.button3.oncommand = function(id,event){
	var displayObj,err = reportRl.displayView(mainForm.static);
	if(!displayObj){
		mainForm.msgbox(err)
	}
	
	displayObj.Report = report;
	displayObj.Start();	
}

mainForm.enableDpiScaling();
mainForm.show();

return win.loopMessage();

image.png

2018-10-14   #2

最简单的报表就是按照设计器的向导一步一步来:

image.png

image.png

image.png

image.png

image.png

import win.ui;
import reportRl;
import reportRl.path;
import reportRl.displayView;
/*DSG{{*/
mainForm = win.form(text="推式提供报表数据-Grid++Report例子 for aardio";right=1085;bottom=632;border="dialog frame";max=false)
mainForm.add(
button={cls="button";text="打印预览";left=0;top=40;right=109;bottom=74;z=1};
button2={cls="button";text="退出";left=0;top=114;right=109;bottom=148;z=2};
button3={cls="button";text="打印预览";left=0;top=206;right=109;bottom=240;z=4};
static={cls="static";text="Static";left=140;top=34;right=1069;bottom=484;transparent=1;z=3}
)
/*}}*/

var report = reportRl();
assert(report,"报表组件创建失败!");
 
var fileName = "C:\Users\popdes\Desktop\reportRl\reports\aarT.grf";
report.LoadFromFile(fileName);
 
report.FetchRecord = function(){
    /*在报表生成时且以推模式向报表提供数据,报表主对象请求数据时触发。*/
    var name = report.FieldByName("name");
     
    var nianling = report.FieldByName("nianling");
     
    var tizhong = report.FieldByName("tizhong");
         
    var zhuzhi = report.FieldByName("zhuzhi");
     for(i=1;50;1){
     	 report.DetailGrid.Recordset.Append();
    	name.AsString = "aaaa"++i;
    	nianling.AsInteger = i;
    	tizhong.AsFloat = 30+i;
    	zhuzhi.AsString = "shanghaishi , jinganqu . xisihutong"++i
    	report.DetailGrid.Recordset.Post();
     
     }

}
 
mainForm.button2.oncommand = function(id,event){
    //退出
    mainForm.close();
}
mainForm.button.oncommand = function(id,event){
    //打印预览
    report.PrintPreview(true);
}
 
mainForm.button3.oncommand = function(id,event){
    var displayObj,err = reportRl.displayView(mainForm.static);
    if(!displayObj){
        mainForm.msgbox(err)
    }
     
    displayObj.Report = report;
    displayObj.Start(); 
}
 
mainForm.enableDpiScaling();
mainForm.show();
 
return win.loopMessage();


2018-11-01   #3

动态添加一条数据的方法:

var ii = 1;
mainForm.button4.oncommand = function(id,event){
	var c1 = report.FieldByName("c1");
	
	var i1 = report.FieldByName("i1");
	
	var f1 = report.FieldByName("f1");
			
	report.DetailGrid.Recordset.Append();
	c1.AsString = "A"++ii;
	i1.AsInteger = ii;
	f1.AsFloat = math.random();
	report.DetailGrid.Recordset.Post();
	displayObj.QuickRefresh()
	ii++;
}

关键点在上面的: 

displayObj.QuickRefresh()

GIF.gif

2018-11-06   #4

meiy没有下载链接?

2018-11-07   #5

回复#4 @aiwen :

没上传, 代码都在上面了,

先下载 reportx的库, https://pan.baidu.com/s/1OvgukJoq3SPJboZBGGLThA

之后代码按照上面的改改就好了.

登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前正在学aardio+halcon机器视觉.
本 站 主 站:Stm32cube中文网
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
aardio在线手册Aardio在线手册
Htmlayout皮肤Htmlayout皮肤引擎介绍
黑猫Aar教程网:简码编程
C大Aardio论坛:Aar爱好者论坛
AARDIO语言QQ群:70517368
赞助商:才仁机械
下载站:非凡软件站
Loading...