ckdh= e.Form.Controls("出库单号").Value
Dim cmd As New SQLCommand '定义一个SQL命令
Dim dt As DataTable '定义一个数据表变量
Dim Count As Integer = 0
cmd.CommandText = "Selec t {订单主表}.客户,{客户信息}.客户全称,{客户信息}.联系人,{客户信息}.联系电话,{客户信息}.地址,{订单主表}.客户SP号,{订单主表}.采购号,{订单主表}.申请人,{订单主表}.客户订单号,{出库明细}.客户产品号,{出库明细}.产品描述,{出库明细}.交货数量,{出库明细}.送货单号码,{出库明细}.备注,{出库明细}.实际交货日期 From ({订单主表} Inner JOIN {客户信息} ON {客户信息}.[客户] = {订单主表}.[客户]) Inner JOIN {出库明细} ON {出库明细}.[客户订单号] = {订单主表}.[客户订单号] where [送货单号码] = '" & ckdh &"'"
dt = cmd.ExecuteReader() '生成一个临时表
If dt.DataRows.Count > 0 Then
Dim rx As New prt.RenderText '定义一个文本对象
'加入标题
'rt.Style.GridLines.All = New prt.Linedef '设置网格线
rt.CellStyle.Spacing.All = 1 '内容距离网格线1毫米
rt.Style.GridLines.All = New prt.Linedef("0mm", Color.white) '(Color.red) '将表格的颜色设为深灰色
'设置主标题
rt.Cells(1,1).text = "苏州XX机电有限公司 出库单"
rt.Cells(1,1).SpanCols = 5 '合并第一行全部单元格,用于显示主标题
rt.Cells(1,1).Style.TextAlignHorz = prt.AlignHorzEnum.Center '主标题居中
rt.Cells(1,1).Style.Font = New Font("宋体", 16, FontStyle.Bold) '设置主标题字体
'rt.Rows(1).Style.Borders.All = New prt.LineDef("0mm", Color.white) '去掉第一行的网格线
'设置副标题
rt.Cells(2,1).text = "苏州园区XX路5号XX工业坊5E" '通过左边空格数量来调整副标题位置
rt.Cells(2,1).SpanCols = 4 '合并地二行全部单元格,用于显示副标题
rt.Cells(2,1).Style.TextAlignHorz = prt.AlignHorzEnum.Center '副标题内容居中
'rt.Rows(2).Style.Borders.All = New prt.LineDef("0mm", Color.white) '去掉第二行的网格线
'rt.Rows(1).Style.Borders.Bottom = New prt.Linedef '恢复第二行底端的网格线
rt.Cells(3,1).text = "Tel: 0512-XXXXXXXX Fax: 0512-XXXXXXX" '通过左边空格数量来调整副标题位置
rt.Cells(3,1).SpanCols = 4 '合并地二行全部单元格,用于显示副标题
rt.Cells(3,1).Style.TextAlignHorz = prt.AlignHorzEnum.Center '副标题内容居中
'rt.Rows(3).Style.Borders.All = New prt.LineDef("0mm", Color.white) '去掉第二行的网格线
rt.RowGroups(0,4).Header = prt.TableHeaderEnum.All '前4行作为表头
'rt.Rows(1).Height = 8 '设置第二行的高度,拉开和表格主体的距离.
Dim rx1 As New prt.RenderTable
'rx1.Cells(0,0).Text = Date.Today
rx1.Cells(0,4).Text = "第[PageNo]页,共[PageCount]页"
'rx1.Cols(0).Style.TextAlignHorz = prt.AlignHorzEnum.Left
'rx1.Cols(1).Style.TextAlignHorz = prt.AlignHorzEnum.Center
'rx1.Cols(2).Style.TextAlignHorz = prt.AlignHorzEnum.right
'rx1.Style.Borders.Bottom = New prt.LineDef '设置底边框
'rx1.CellStyle.Spacing.Bottom = 0.5 '底端内容缩进0.5毫米
'rx1.Style.FontSize = 8 '字体大小为8磅
Doc.PageHeader = rx1 '作为页眉使用
'指定行数?列数?列宽?行高
rt.Rows.Count = 22 '设置总行数
rt.Cols.Count = 6 '设置总列数
'rt.Width = 120 '设置表格的宽度为120毫米
'rt.Height = 3880 '设置表格的高度为80毫米
'rt.Rows(18).Height = 8 '设置第18行(显示备注的行)的高度为10毫米,剩余高度被平均分排到其他行
rt.Cols(0).Width = 40 '设置前四列的宽度,剩余的宽度被分配给5列(显示图片的那列)
rt.Cols(1).Width = 35
rt.Cols(2).Width = 34
rt.Cols(3).Width = 20
rt.Cols(4).Width = 35
rt.Cols(5).Width = 25
rt.cells(1,0).SpanRows = 3 '合并第一行前三个单元格
Dim rm As New prt.RenderImage() '定义一个图片对象
rm.Image = GetImage("jbb.bmp") '请改为实际的图标名称和路径
rm.Style.ImageAlign.AlignHorz = prt.ImageAlignHorzEnum.Center '图片水平居中
rm.Style.ImageAlign.AlignVert = prt.ImageAlignVertEnum.Center '图片垂直居中
rm.Style.ImageAlign.StretchHorz = True '禁止水平方向扩展图片
rm.Style.ImageAlign.StretchVert = True '禁止垂直方向扩展图片
doc.Body.Children.Add(rt) '将表格对象加入到报表中
rt.Style.GridLines.All = New prt.Linedef("0mm", Color.white) '(Color.red) '将表格的颜色设为深灰色
rt.Cells(1,0).RenderObject = rm '将单元格内容设置为图片对象rm
''设置合并单元格
rt.Cells(5,1).Spancols = 2 '第1行第5个单元格向右合并2行(用于显示照片)
rt.Cells(6,1).SpanCols = 2 '第1行第2个单元格向右合并4列(用于显示地址)
rt.Cells(7,1).SpanCols = 2 '第2行第2个单元格向右合并4列(用于显示地址)
rt.Cells(8,1).SpanCols = 2 '第3行第2个单元格向右合并4列(用于显示地址)
rt.Cells(18,0).SpanCols = 5 '第7行第1个单元格向右合并5列(用于显示备注)
rt.Cells(19,0).SpanCols = 5 '第7行第1个单元格向右合并5列(用于显示备注)
'设置表格样式
rt.CellStyle.Spacing.All = 1 '单元格内容缩进1毫米
'rt.Style.GridLines.All = New prt.Linedef '设置网格线
rt.Style.TextAlignVert = prt.AlignVertEnum.Center '内容垂直居中
'rt.Rows(6).Style.TextAlignVert = prt.AlignVertEnum.Top '唯独第7行是备注,内容靠上对齐
'rt.Style.Borders.All = New prt.Linedef("0mm", Color.green)
rt.rows(6).Style.TextAlignHorz = prt.AlignHorzEnum.Left
rt.rows(7).Style.TextAlignHorz = prt.AlignHorzEnum.Left
rt.rows(8).Style.TextAlignHorz = prt.AlignHorzEnum.Left
rt.rows(9).Style.TextAlignHorz = prt.AlignHorzEnum.Left
rt.Cols(0).Style.TextAlignHorz = prt.AlignHorzEnum.Left '数据水平靠右
rt.Cols(1).Style.TextAlignHorz = prt.AlignHorzEnum.Left '数据水平靠右
rt.Cols(2).Style.TextAlignHorz = prt.AlignHorzEnum.Left '数据水平靠右
rt.Cols(3).Style.TextAlignHorz = prt.AlignHorzEnum.Left '数据水平靠右
rt.cells(11,0).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(11,1).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(11,2).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(11,3).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(11,4).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(11,5).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(12,0).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(12,1).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(12,2).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(12,3).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(12,4).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(12,5).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(13,0).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(13,1).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(13,2).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(13,3).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(13,4).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(13,5).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(14,0).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(14,1).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(14,2).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(14,3).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(14,4).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(14,5).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(15,0).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(15,1).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(15,2).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(15,3).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(15,4).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(15,5).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(16,0).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(16,1).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(16,2).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(16,3).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(16,4).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
rt.cells(16,5).Style.Borders.all = New prt.Linedef '恢复第二行底端的网格线
'下面很简单,指定每一个单元格的内容
'rt.Cells(8,3).Text= "开合同号"
rt.Cells(9,3).Text= "申请人:"
rt.Cells(4,4).Text= "送货单号码"
rt.Cells(4,5).Text= dt.dataRows(0)("送货单号码")
rt.Cells(6,0).Text= "客户名称: "
rt.Cells(7,0).Text= "客户地址:"
rt.Cells(8,0).Text="订 单 号 :"
rt.Cells(9,0).Text= "送货日期:"
rt.Cells(7,3).Text= "联 系 人:"
rt.Cells(8,3).Text= "联系电话:"
rt.Cells(11,0).Text="JCI SP No 客户SP号"
rt.Cells(11,1).Text="Prod.Name 产品名称"
rt.Cells(11,2).Text="Prod.Des.产品规格"
rt.Cells(11,3).Text="Qty 数量(个)"
rt.Cells(11,5).Text="备注"
rt.Cells(11,4).Text= "Release No采购号:"
rt.Cells(8,1).Text = dt.dataRows(0)("客户订单号")
rt.Cells(9,1).Text = Date.Today
rt.Cells(6,1).Text = dt.dataRows(0)("客户全称")
rt.Cells(7,1).Text = dt.dataRows(0)("地址")
rt.Cells(7,4).Text = dt.dataRows(0)("联系人")
rt.Cells(8,4).Text = dt.dataRows(0)("联系电话")
rt.Cells(9,4).Text = dt.dataRows(0)("申请人")
rt.Cells(18,0).Text= "重要说明:请收货方收到本清单中的货物后请立即清点品名和数量,核实无误后签字确认收货.发现问题"
rt.Cells(19,0).Text= " 请当场与送货人确认.签收前未清点数量,则默认我司送货数量品名无误. "
rt.Cells(20,0).Text= "送货单一式四联"
'rt.Cells(23,1).Text= "白联:生管"
'rt.Cells(23,2).Text= "绿联:仓库"
'rt.Cells(23,4).Text= "红联:财务"
'rt.Cells(23,4).Text= "黄联:客户"
rt.Cells(20,2).Text= " 仓库出货:"
'rt.Cells(21,0).Text= "出库签名:"
rt.Cells(20,4).Text= "客户收货签名:"
rt.Cells(21,4).Text= "收货日期:"
Dim ColNames As String() = New String(){ "客户SP号", "客户产品号","产品描述", "交货数量", "采购号","备注" }
For c As Integer = 0 To ColNames.Length - 1 '逐列设置和填入内容
rt.Cells(11,c).Text = ColNames(c) '列名作为标题
rt.Cells(11,c).Style.TextAlignHorz = prt.AlignHorzEnum.Center '标题内容水平居中
' rt.Cols(c).Width = dt.Cols(ColNames(c)).PrintWidth '列宽等于实际列宽
' If dt.Cols(ColNames(c)).IsNumeric OrElse dt.Cols(ColNames(c)).IsDate Then '如果是数值或日期列
' rt.Cols(c).Style.TextAlignHorz = prt.AlignHorzEnum.Right '数据水平靠右
' End If
For r As Integer = 0 To dt.DataRows.Count - 1 '开始填入该列内容
rt.Cells(r + 1 +11, c).Text = dt.dataRows(r)(ColNames(c))
Next
Next
Doc.Preview() '预览报表
Else
msgbox("没有数据")
End If