ActiveReport打印出入库单据

xuehf 2004-12-20 03:04:34
入库单格式如下(表格部分如何实现):

-----------------------------------------------
产品名称 | 产品规格 | 数量 | 金额 |
------------------------------------------------
计算机 | 286 | 1 | 2000 |
------------------------------------------------
计算机 | 联想天骄 | 2 | 9000 |
------------------------------------------------
| | | |
------------------------------------------------
| | | |
------------------------------------------------
小计 | | 3 | 11000 |
------------------------------------------------

分组: 入库单内部ID
该入库单只有两条分录,我现在希望每页入库单的表格有五行,四行数据,最后一行为合计,
现在的问题是:如果入库单只有两条分录,那么下面两行空的表格线打印不出来,请问如何实现?在线等待
...全文
212 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
coolhwl 2004-12-29
  • 打赏
  • 举报
回复
看以下下面for语句里面的思路

using System;
using DataDynamics.ActiveReports;
using DataDynamics.ActiveReports.Document;
using System.Configuration;
using System.Collections.Specialized;
using yj.Data.SQLAccess;
using System.Data;

namespace yj.Reports.Reports
{
public class pxin_cast_rpt : ActiveReport
{
private string sqlstr;
public pxin_cast_rpt(string sql)
{
sqlstr=sql;
InitializeReport();
}

private void pxin_cast_rpt_ReportStart(object sender, System.EventArgs eArgs)
{
SQLAccess conn = new SQLAccess();
DataView dv = new DataView();

string sqlstring="SELECT dbo.px_in.pxin_code AS 编号, dbo.dataunid.daun_name AS 客户名称,dbo.px_in.pxin_num AS 到货件数, dbo.px_in.pxin_instocktime AS 进仓时间,dbo.px_in.pxin_mark AS 码头, dbo.px_in.pxin_shipper AS 预配船名,dbo.px_in.pxin_weight AS 重量, dbo.px_in.pxin_volume AS 体积,dbo.datafeeitem.dafe_name AS 费用名称, dbo.px_costin.dafe_price AS 金额 FROM dbo.dataunid RIGHT OUTER JOIN dbo.px_in LEFT OUTER JOIN dbo.px_costin ON dbo.px_in.pxin_tid = dbo.px_costin.pxin_tid ON dbo.dataunid.daun_tid = dbo.px_in.daun_tid LEFT OUTER JOIN dbo.datafeeitem ON dbo.px_costin.dafe_tid = dbo.datafeeitem.dafe_tid ";
sqlstring+=sqlstr;
dv = conn.GenericDataView(@sqlstring);
this.DataSource = dv;
if (dv.Table.Rows.Count<11)
{
string dvTid = dv[0][0].ToString();
int li_count =dv.Table.Rows.Count;
if (li_count>11 && li_count%2==0)
li_count =10;
for (int i=0;i<(11-li_count);i++)
{
DataRowView dvr = dv.AddNew();
dvr["编号"]=dvTid;
}
}
// DataDynamics.ActiveReports.DataSources.SqlDBDataSource pxin_cast= new DataDynamics.ActiveReports.DataSources.SqlDBDataSource();
// pxin_cast.ConnectionString =GetCustomConfig("SQLSERVER");
// pxin_cast.SQL=sqlstring;
// this.DataSource=pxin_cast;

}
private string GetCustomConfig(string key)
{
NameValueCollection nv=new NameValueCollection();
nv=(NameValueCollection)ConfigurationSettings.GetConfig("YJ/DATABASE");
return nv[key];
}


GRWriter 2004-12-28
  • 打赏
  • 举报
回复
试试 Grid++Report, 有专门的例子说明此问题。主页:www.GridppReport.com
dinya2003 2004-12-28
  • 打赏
  • 举报
回复
因为你的表格线是在循环中根据数据的行数来的. 所以只有两行的话,系统将不循环,
我想你可以这样试试:
在查询的时候限制每次取得四条, 不组四条的用空值补组四条,超过的到下一页. 这样FetchData事件中就该循环四次了.

6,108

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 数据库报表
社区管理员
  • 数据库报表社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧