Dim doc As New Printdoc
Dim rx As prt.RenderText
Dim rt As prt.RenderTable
Dim Rows As List(Of DataRow)
Dim tbl As Table = Tables("销售主表")
Dim tb As Table = Tables("销售明细")
Dim prs As Integer = 20 '每页20行
Dim cols() As String = {"产品", "客户", "雇员", "单价", "折扣", "数量"}'中文字段
'Dim cols() As String = {"SP", "KH", "GY", "DJ", "ZK", "SL"} '问题一:英文字段如何显示中文。
For Each pr As Row In tbl.Rows
Rows = tb.DataTable.select("客户='" & pr("公司名称") & "'")
' Rows = tb.DataTable.select("出库单号='" & pr("出库单号") & "'")'问题二:客户改为出库单号,无法实现只能超过20条记录,才加副编号,
如CR-202308-01-1,CR-202308-01-2,不超过20条记录,不加副编号,如CR-202308-01
'
For p As Integer = 0 To math.Ceiling(Rows.Count / prs) - 1
rx = New prt.RenderText
' '
rx.Style.FontSize = 14
rx.Style.FontBold = True
rx.Style.Spacing.Bottom = 5
rx.Text = "公司名称: " & pr("公司名称") & " - " & (p + 1)
' rx.Text = "出库单号: " & pr("出库单号") & " - " & (p + 1)''客户改为出库单号
doc.Body.Children.Add(rx)
rt = New prt.RenderTable
rt.Style.TextAlignHorz = prt.AlignHorzEnum.Center
rt.Style.TextAlignVert = prt.AlignVertEnum.Center
rt.Style.Borders.Bottom = New prt.LineDef(0.3, Color.LightGray)
rt.CellStyle.Spacing.All = 1
rt.Cols.Count = 4
For j As Integer = 0 To cols.Length - 1 '打印标题
rt.Cells(0, j).Text = cols(j)
Next
问题三:如何实现打印,不存在表字段,编号或序号?
' For j As Integer = 0 To cols.Length - 1 '打印标题
' If j = 0 Then
' rt.Cells(0, 0).Text = "编号"
' Else
' ' rt.Cells(0, c).Text = "第" & (c + 1) & "列"
' rt.Cells(0, j).Text = cols(j)
' End If
' Next
' 'rt.Cells(0, 0).Text = "编号"
rt.Cols(1).Width = 60 '指定第2列宽
rt.rows(0).Style.Borders.Top = New prt.LineDef(1, Color.LightGray)
rt.rows(0).Style.Borders.Bottom = New prt.LineDef(1, Color.LightGray)
Dim sum As Double = 0
For r As Integer = p * prs To math.min(Rows.Count - 1, ( p + 1) * prs - 1)
sum += rows(r)("数量") '计算合计
For j As Integer = 0 To cols.Length - 1
rt.Cells(r - p * prs + 1, j).Text = rows(r)(cols(j))
Next
Next
If p = math.Ceiling(Rows.Count / prs) - 1 Then'如果是最后一页
For r As Integer = Rows.Count To ( p + 1) * prs - 1 '补空行
rt.Rows.Count = rt.Rows.Count + 1
rt.Rows(rt.Rows.count - 1)(0).text = " "
Next
End If
Dim cnt = rt.Rows.Count
rt.Cells(cnt, 0).Text = "合计 " '打印合计
rt.Cells(cnt, 5).Text = sum
doc.Body.Children.Add(rt)
rx = New prt.RenderText
rx.Style.FontBold = True
rx.Style.Spacing.Top = 3
rx.Text = "销售明细数目: " & Rows.Count
rx.Style.TextAlignHorz = prt.AlignHorzEnum.Right
rx.BreakAfter = prt.BreakEnum.Page '否则换页
doc.Body.Children.Add(rx)
Next
Next
doc.Preview
'问题一:英文字段如何显示中文。
问题二:客户改为出库单号,无法实现只能超过20条记录,才加副编号,
如CR-202308-01-1,CR-202308-01-2,不超过20条记录,不加副编号,如CR-202308-01
问题三:如何实现打印,不存在表字段,编号或序号?
http://www.foxtable.com/webhelp/index.htm?page=0400.htm