设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 4443|回复: 11
打印 上一主题 下一主题

[其它] pos打印的资料

[复制链接]
跳转到指定楼层
1#
发表于 2010-3-19 23:42:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 tz-chf 于 2010-3-20 08:55 编辑

我也是从一无所知开始的,客户需要就去找资料摸索了,那时候还没有上过网呢。动力还很大,用这玩意赚nw了,还在赚ing。
说正事,不是用报表实现的,打多少走多少,不光是小票打印机,其实打印机也可以这样做(一般不会)。去超市看看就知道了,不会没去过超市吧。
先贴一段。明天有时间发示例代码到我的站点,有asp、delphi、foxpro、vfoxpro、powerbuilder、tc、vb。还有打印机说明书。

VB下使用并口控制打印机

使用VB编程的人员如果需要在Windows下使用并口打印机逐行打印,而又不想使用Windows的驱动程序。我们这里提供一种不需要任何外来的元件的方法。
直接在程序中写入以下语句:
Open "Lpt1" For Output As #1
PDStr=”VB Printer on LPT1”+Chr(10)
Print #1, PDStr
Close #1
这里使用了把文件直接输出并口来实现对并口的数据打印。
如果需要控制POS58打印机开钱箱,只需要改变PDStr的值即可,如下:
PDStr= Chr(27)+”p”+Chr(0)+Chr(60)+Chr(255)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享 分享淘帖 订阅订阅
2#
发表于 2010-3-20 07:26:53 | 只看该作者
谢谢提供,真是太好了,如果能配合一个access实例就棒了,
3#
发表于 2010-3-20 07:54:28 | 只看该作者
学习。
4#
 楼主| 发表于 2010-3-20 08:52:15 | 只看该作者
access和vb没区别
5#
发表于 2010-3-21 20:31:31 | 只看该作者
是直接把报表或窗体数据输出到打印机,还是一句一句的输入?

我把你给的语句输入后,打印机打印出了“VB Printer on LPT1”,每次打印一行。

我的理解是不是要把打印的数据一句一句的写?

能否给个access实例啊,在此感谢tz-CHF
6#
 楼主| 发表于 2010-3-21 23:04:27 | 只看该作者
本帖最后由 tz-chf 于 2010-3-21 23:08 编辑

当然是一句句写,因为小票的输出要格式化,排整齐。循环记录集。
贴的是厂家的示例,并不需要这样,只是每一行print #1, "你的一行内容",而且并不一定是lpt1,现在的主板大都没有并口,外接的并口是lpt3,可用变量。
7#
发表于 2010-3-25 21:07:49 | 只看该作者
本帖最后由 wufeng980114 于 2010-3-25 21:09 编辑


如何完成下图所示的打印?中间的主体内容可能有一项也可能多项,采用直接输出如何编写?
能否给个代码,例子参见附件,谢谢了!!

本帖子中包含更多资源

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

x
8#
发表于 2010-3-26 20:13:42 | 只看该作者
tz-chf

这位老大能不能做个实例出来,说来说去就那几句,不过瘾啊
9#
 楼主| 发表于 2010-3-26 20:50:55 | 只看该作者
要说的都说完了。无话可说。
10#
发表于 2010-3-27 21:08:32 | 只看该作者
转载自网站http://topic.csdn.net/t/20030909/16/2241131.html 的一篇文章
我觉得不错,还没有来得及细看,不知是否适合ACCESS编程,应该有所帮助,现贴出来,供大家一起分享学习。

//   向LPT口打印一个文本文件   
  procedure   TPosFrm.PrintFile(AFileToPrint:   string);   
  var   
    Port,   FileToPrint:   TextFile;   
    ALine:   string;   
  begin   
    AssignFile(FileToPrint,   AFileToPrint);   
    Reset(FileToprint);   
    AssignFile(Port,   'LPT1');   
    Rewrite(Port);   
    while   not   Eof(FileToPrint)   do   
    begin   
        Readln(FileToPrint,   ALine);   
        Writeln(Port,   ALine);   
    end;   
    CloseFile(Port);   
    CloseFile(FileToPrint);   
  end;   
   
   
        //   打印小单   
        //   输出到文本,稍后再输出到LPT1端口;   
        OutFile:=ExtractFilePath(Application.ExeName)+'output.txt';   
        AssignFile(F,   OutFile);   
        Rewrite(F);   
        CompanyTitle:=SysParms.CompanyTitle+'购物清单';   
        CompanyTitle:=StringOfChar('   ',   (32-Length(CompanyTitle))   div   2)+CompanyTitle;   
        Writeln(F,   CompanyTitle);   
        Writeln(F,'--------------------------------');   
  //         Writeln(F,'收银机:'+EdPosID.Text+'           单号:'+EdSaleID.Text);   
  //         Writeln(F,'收银员:'+EdOpID.Text+   '           日期:'+EdSaleDate.Text);   
        Write(F,'收银员:',   Format('%-10s',   [STOpID.Caption]));   
        Writeln(F,   '单号:'+STSaleID.Caption);   
        Writeln(F,'日期:'+STSaleDate.Caption+   '     时间:'+FormatDateTime('hh:mm:ss',   Now));   
        Writeln(F,'--------------------------------');   
        //                   12345678901234567890123456789012   
        Writeln(F,'商品名称                   数量   单价     金额');   
   
        ADSSaleList.DisableControls;   
        ADSSaleList.First;   
        while   not   ADSSaleList.Eof   do   
        begin   
            MerName:=ADSSaleList.FieldValues['MerName'];   
            len:=Length(MerName);   
            if   len   <   18   then   
                MerName:=MerName+StringOfChar('   ',   18-len);   
            if   (len   mod   2)   =   0   then   
                Write(F,   Copy(MerName,   1,   18))   
            else   
                Write(F,   (Copy(MerName,   1,   17)+'   '):18);   
            Write(F,   ADSSaleList.FieldValues['Qty']:2);   
            Write(F,   FormatFloat('0.0',   ADSSaleList.FieldValues['Price']):6);   
            Writeln(F,   FormatFloat('0.0',   ADSSaleList.FieldValues['Amount']):6);   
            ADSSaleList.Next;   
        end;   
        ADSSaleList.EnableControls;   
   
        Writeln(F,'--------------------------------');   
        Writeln(F,'合计:',STHj.Caption:8,   '         让利:',   STRl.Caption:8);   
        Writeln(F,'实收:',STSs.Caption:8,   '         金卡:',   
                        FormatCurr('0.00',   CardPayment):8   
                        );   
        Writeln(F,'现金:',   
                        FormatCurr('0.00',   StrToCurr(EdCash.Text)-CardPayment):8,   
                        '         找补:',   STBack.Caption:8   
                        );   
        Writeln(F,'   ');   //空行,添加或减少空行即可控制出纸多少。   
        ...   
        PrintFile(Outfile);   //   输出文件到打印口     
   
   
   
  输出如下例:   
   
          XX化妆品世界购物清单   
  --------------------------------   
  收银员:01                 单号:000000329   
  日期:2003-07-16     时间:17:53:28   
  --------------------------------   
  商品名称                   数量   单价     金额   
  8g华美健强力消痘乳   4     16.0     64.0   
  小口红                           1       5.0       5.0   
  180g隆力奇蛇胆不紧   3     20.8     62.4   
  速效脱毛露                   2       7.5     15.0   
  美容海藻面膜               3     18.0     54.0   
  蕾琪唇彩                       1     12.0     12.0     
  .....   
  --------------------------------   
  合计:   2058.40         让利:         0.00   
  实收:   2058.40         金卡:         0.00   
  现金:   2100.00         找补:       41.60   
   
   
  因宽度只有58mm,故商品名切去部分。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-3 01:41 , Processed in 0.109120 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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