以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 专业报表联打无法按选中打印如何处理? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=188944) |
||||
-- 作者:lin98 -- 发布时间:2023/11/1 18:36:00 -- 专业报表联打无法按选中打印如何处理? 专业报表联打无法按选中打印如何处理?实例打印执行都打印全部,无法实现需求,按选中的数据打印
|
||||
-- 作者:有点蓝 -- 发布时间:2023/11/2 8:26:00 -- 代码本来就是按所有行打印的。如果要按鼠标拖选,参考:http://www.foxtable.com/webhelp/topics/1597.htm |
||||
-- 作者:lin98 -- 发布时间:2023/11/2 9:15:00 -- \'选定区域的 With Tables("销售主表") If .TopPosition > -1 Then \'如果选定区域包括数据行 For i As Integer = .TopPosition To .BottomPosition .Rows(i).Locked = True Next End If End With For Each pr As Row In tbl.Rows 加上上面代码,没有用,还是打印全部,如处理?
|
||||
-- 作者:有点蓝 -- 发布时间:2023/11/2 10:08:00 -- 不要只会抄,能不能先理解一下帮助的代码?帮助是遍历锁定行的? With Tables("销售主表") If .TopPosition > -1 Then \'如果选定区域包括数据行 For i As Integer = .TopPosition To .BottomPosition 原来遍历所有行的代码改为放到这里 Next End If End With |
||||
-- 作者:lin98 -- 发布时间:2023/11/2 10:39:00 -- 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("销售明细") \'选定区域的 With Tables("销售主表") If .TopPosition > -1 Then \'如果选定区域包括数据行 For i As Integer = .TopPosition To .BottomPosition Dim prs As Integer = 5 Dim cols() As String = {"产品", "客户", "雇员", "单价", "折扣", "数量"} For Each pr As Row In tbl.Rows Rows = tb.DataTable.select("客户=\'" & pr("公司名称") & "\'") 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) 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 rt.Cols(1).Width = 60 \'指定 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 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 Next End If End With doc.Preview 我还是没搞定,请帮忙,谢谢
|
||||
-- 作者:有点蓝 -- 发布时间:2023/11/2 10:44:00 -- 把下面代码去掉 For Each pr As Row In tbl.Rows
|
||||
-- 作者:lin98 -- 发布时间:2023/11/2 10:48:00 -- 去掉报错pr未声明 |
||||
-- 作者:有点蓝 -- 发布时间:2023/11/2 10:51:00 -- 写代码,建议还是要努力理解代码,不然连自己写的代码都看不懂,更不用说改进了 For i As Integer = .TopPosition To .BottomPosition dim pr as row = .rows(i)
|
||||
-- 作者:lin98 -- 发布时间:2023/11/2 11:14:00 -- 改后,都会多生成一页空页,如何处理? |
||||
-- 作者:有点蓝 -- 发布时间:2023/11/2 11:26:00 -- 把换页的代码放到生成数据前面 |