包含vb.net打印重复的词条

数据库据库vb.net打印票,用三联打印纸有裂纹的,怎么前一张和下一张逐渐拉开距离了?

说一下我的处理方法吧,楼主可以参考。

成都创新互联公司专注于企业营销型网站、网站重做改版、万宁网站定制设计、自适应品牌网站建设、H5网站设计商城网站制作、集团公司官网建设、外贸营销网站建设、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为万宁等各大城市提供网站开发制作服务。

先在打印机的服务器属性中设定一个符合打印标准的纸张尺寸。这样使你的打印纸尺寸固定,不需要你每次打印的时候都重新指定打印尺寸,避免计算误差。

然后在你要打印的内容外面嵌套一套一个table,设定一个初始的Style的margin-top值。多张的票据内容是通过循环计算产生。在调整过程中,计算下一张与上一张的相对margin-top值,多次计算后你就能找到每次打印时的上下偏移值,然后做一个算法计算两张之间的margin-top值,就OK了。

我们做套打发票都是这么做的,这是一个重复性很强的工作,要有耐心。另外,一定要要求所有的用户使用同一款打印机,不同的打印机的偏移值是不一样的。

关于VB.NET编制打印程序,打印出来页面内容总是重叠在一起的问题

参考:

把执行SQL语句后得到的记录集逐条(含字段名)显示在LISTVIEW控件中

'----------------------------------------------------------------

Public Sub ListUpdate(ByRef rs As Recordset, ByRef lv As ListView)

Dim head As ColumnHeader, Item As ListItem

Dim i As Integer, j As Integer

Dim lvWidth As Integer

lvWidth = lv.Width

'初始化LISTVIEW的某些属性

lv.View = lvwReport

lv.GridLines = True

lv.FullRowSelect = True

lv.ListItems.Clear

lv.ColumnHeaders.Clear

For i = 0 To rs.Fields.Count - 1

Set head = lv.ColumnHeaders.Add

head.Text = rs.Fields(i).Name

head.Width = lvWidth / rs.Fields.Count

Next

For j = 1 To PERPAGE

If rs.EOF Then Exit For

Set Item = lv.ListItems.Add

Item.Text = "" rs.Fields(0).Value

For i = 1 To rs.Fields.Count - 1

Item.SubItems(i) = "" rs.Fields(i).Value

Next

rs.MoveNext

Next

End Sub

' 打印

Public Sub PrintRecordset(ByRef recRecordset As Recordset, ByVal strType As String)

Dim LeftMargin As Integer

Dim HeadTopPosition As Integer

Dim FieldNum As Integer

Dim PageCounter As Integer

Dim MyRecordset As ADODB.Recordset

Const FooterTopPosition = 24

Set MyRecordset = recRecordset

PageCounter = 1

' 设 置Printer 对 象 坐 标 的 度 量 单 位 为 厘 米

Printer.ScaleMode = vbCentimeters

LeftMargin = 1.5

HeadTopPosition = 2

' 定 义 打 印 页 左 上 角 的X 坐 标 和Y 坐 标, 通 过 改 变ScaleLeft 和ScaleTop 的 值, 可 改 变 打 印 页 的 左 边 距 和 上 边 距

Printer.ScaleLeft = -LeftMargin

Printer.ScaleTop = -HeadTopPosition

Printer.Font.Name = "Times New Roman"

Printer.Font.Size = 12

Printer.Print "音像店顾客管理系统"

Printer.Print strType

Printer.Print ""

If MyRecordset.EOF And MyRecordset.BOF Then

MsgBox "No Record At Presend!", vbCritical And vbOKOnly, "Print Error"

Exit Sub

End If

MyRecordset.MoveFirst

Do Until Printer.CurrentY FooterTopPosition

'Print the fields of the recordset in sequence

For FieldNum = 0 To MyRecordset.Fields.Count - 1

Printer.Print MyRecordset.Fields(FieldNum).Name _

": " _

MyRecordset.Fields(FieldNum).Value

If Printer.CurrentY FooterTopPosition Then

Printer.CurrentX = 8

Printer.Print "Page: " PageCounter

' 创 建 多 页 文 档

Printer.NewPage

PageCounter = PageCounter + 1

End If

Next FieldNum

MyRecordset.MoveNext

If MyRecordset.EOF Then Exit Do

' 在 记 录 之 间 空 一 行

Printer.Print ""

Loop

'Print the Page number as a footer

Printer.CurrentX = 8

Printer.CurrentY = FooterTopPosition

Printer.Print "Page: " PageCounter

' 将 输 出 送 到 打 印 机

Printer.EndDoc

End Sub

vb.net 数组中的重复项

我还在床上,就只给你思路吧

我是自己写了个函数,将数组传入并返回一个新数组列表

子函数中,先将数组排序sort函数,然后有两个循环,外循环从0到Length,变量i,内循环从i到Length,判断第i个数是否与包括自身的后续数相同,相同就有变量加1,内循环结束条件是找到第一个不同的数,并将外循环i复植为内循环中第一个不同的数的下表。。。

这个是思路,如果不能理解再再追加我给你代码,不过建议自己试试

你看写这个,和你的要求差不多。。。;oldq=1

有程序的~~~你可以参考下~~~

vb.net Document_PrintPage打印多行文本

比如:

Private Sub Document_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs)

e.Graphics.DrawString(str0, New Font("Arial", 14, FontStyle.Regular), Brushes.Black, 50, 50)

e.Graphics.DrawString(A1, New Font("Arial", 10, FontStyle.Regular), Brushes.Black,50, 100)

e.Graphics.DrawString(A2, New Font("Arial", 10, FontStyle.Regular), Brushes.Black, 300,100)

e.Graphics.DrawString(A3, New Font("Arial", 10, FontStyle.Regular), Brushes.Black, 800,100)

也就是分次用不同坐标和不同的字体来打印各变量。画线用:

e.Graphics.DrawLine(BlackPen, x1, y1, x2, y2)。

具体坐标数值自己用尺量出,再换算。


网页名称:包含vb.net打印重复的词条
文章起源:http://myzitong.com/article/doogdoh.html