设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2925|回复: 8
打印 上一主题 下一主题

[报表] POS打印走纸

[复制链接]
跳转到指定楼层
1#
发表于 2010-3-28 19:43:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我实现了如下图所示的主体按照要求打印内容,但是如对齐标题,我还是没有解决,那位高手给我修改一下代码。

Private Sub 输出打印_Click()
Dim K小编号, K名称, K单价 As String
Open "LPT1" For Output As #1
Print #1, Chr(2) + "     表1"
Print #1, Chr(2) + "大编号" + "___________"
Print #1, Chr(2) + "小编号" + "    名称" + "  单位" + "数量"
Dim st As String
Dim rs As ADODB.Recordset
   
Set rs = New ADODB.Recordset
st = "select * from 表1 where [大编号]='" & 大编号 & "'"
rs.Open st, CurrentProject.Connection, adOpenKeyset, adLockOptimistic
For I = 1 To rs.RecordCount
K小编号 = rs("小编号")
K名称 = rs("名称")
K单价 = rs("单价")
Print #1, Chr(2) + K小编号 + K名称 + K单价
rs.MoveNext
Next I
Print #1, Chr(2)
Print #1, Chr(2)
Print #1, Chr(2)
Print #1, Chr(2)
Print #1, Chr(2)
Print #1, Chr(2)
Print #1, Chr(2)
Print #1, Chr(2)
Close #1
End Sub

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2010-3-29 18:02:07 | 只看该作者
帮你顶
3#
发表于 2010-3-30 10:28:21 | 只看该作者
期待
4#
发表于 2010-3-30 11:25:34 | 只看该作者
Print #1, Chr(2) + "小编号" + "    名称" + "  单位" + "数量"
干什么?
Print #1, "小编号    名称  单位  数量"不行啊!
chr(2)是什么?

Print #1, Chr(2) + K小编号 + K名称 + K单价
没必要用变量。连在一起怎么看,该空的空啊,和标题对齐吧

还有一个疑问:
Dim K小编号, K名称, K单价 As String
三个都声明为string了?好多书上都这么写。我记得要一个个写as string。
5#
 楼主| 发表于 2010-4-14 14:26:50 | 只看该作者
本帖最后由 wufeng980114 于 2010-4-14 14:37 编辑

Print #1, "小编号    名称  单位  数量"  是可以的。
Print #1, Chr(2) + K小编号 + K名称 + K单价
没必要用变量。连在一起怎么看,该空的空啊,和标题对齐吧
Print #1, Chr(2) + K小编号 + K名称 + K单价。因为,每次打印的具体的内容和内容长度不一样,所以必须用变量来解决,而且,空多少也是变化的,下面我解决了空多少空格的问题。
可以连续定义很多变量的,不用一个一个的定义。

CHR(2)我也不知道是什么,还有,打印的内容都必须为string 否则出错。其他的如:如何调整字体大小、字体格式等如何设置,我都不明白,在此请高手解决吧!

我想到了一个笨办法对齐:
整个POS打印纸宽度为32个字节,因此,根据,列数和每列内容,自己确定每列所占的字节数.如:小编号2字节(数字字节为汉字的一半);名称:24字节;单位:2字节;数量:4字节.每列字节的大小规定好了,就相当于规定了每列所占用的宽度。
接着,用LEN("")先求出每列内容所占的字节数,然后用每列的规定字节数减去该列内容的字节数,如果有余数,则在内容后本列增加相对应的空格数,这样每列都可以自动左对齐了;在内容左边加空格,在实现右对齐了。如果把余数除以2,在内容两端加空格,则实现中间对齐。

如:
K空格="                                  "
K名称=名称  &  LEFT(K空格,24-LEN("名称"))
其他以此类推。

经实际操作,按照以上方法,本人,已实现对齐功能。
6#
发表于 2010-4-14 21:01:49 | 只看该作者
基础思路对了,但用len名称如果有不是中文的就不对了。
7#
 楼主| 发表于 2010-4-18 20:51:27 | 只看该作者
本帖最后由 wufeng980114 于 2010-4-18 20:56 编辑

数字和字母只占半个字节。
8#
发表于 2010-4-24 12:50:20 | 只看该作者
把重新修改后的文件放上来,看行不?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-2 04:11 , Processed in 0.105633 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表