Foxtable(狐表)用户栏目专家坐堂 → 索引超出了数组界限


  共有4129人关注过本帖树形打印复制链接

主题:索引超出了数组界限

帅哥哟,离线,有人找我吗?
Bin
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/3/2 11:13:00 [只看该作者]

rt.Cells(6,1).Text = dt.dataRows(1)("客户全称")
rt.Cells(7,1).Text = dt.dataRows(1)("地址")


你查询的表没有第二行,你这里取第二行当然会报错.加入判断

if dt.dataRows.Count>1 then
  rt.Cells(6,1).Text = dt.dataRows(1)("客户全称")
rt.Cells(7,1).Text = dt.dataRows(1)("地址")

end if

 回到顶部
帅哥哟,离线,有人找我吗?
Bin
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/3/2 11:13:00 [只看该作者]

同样你那些取表第一行的.  也要判断一下 是否COunt>0

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2015/3/2 11:15:00 [只看该作者]

Dim doc As New PrintDoc '定义一个报表
Dim rt As New prt.RenderTable() '定义一个表格对象

'Dim CurRow As Row = Tables("出库明细").Current

Dim shdh As WinForm.ComboBox = e.Form.Controls("出库单号")
Dim ckdh As String


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

[此贴子已经被作者于2015/3/2 11:15:27编辑过]

 回到顶部
美女呀,离线,留言给我吧!
youngling
  14楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:115 积分:895 威望:0 精华:0 注册:2012/12/18 16:55:00
  发帖心情 Post By:2015/3/2 11:42:00 [只看该作者]

谢谢,甜老师和bin老师的帮助,

 回到顶部
总数 14 上一页 1 2