为什么打印的单据数字部分有阴影

dd_2012 2013-02-27 10:27:43
系统:xp VFP6.0
现象:打印的单据中,不知道为什么数字部分会有阴影,请参考下图
...全文
707 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
dd_2012 2013-03-04
  • 打赏
  • 举报
回复
引用 24 楼 apple_8180 的回复:
关于多走纸的问题,注释掉 dy_info.prg 中 Func dy_info1 函数最后的 Ejec 命令。
好的,我会试试的。 相当感谢十豆三兄弟及各位兄弟的帮助,先结贴了,相当开心,哈哈
十豆三 2013-03-02
  • 打赏
  • 举报
回复
关于多走纸的问题,注释掉 dy_info.prg 中 Func dy_info1 函数最后的 Ejec 命令。
dd_2012 2013-03-01
  • 打赏
  • 举报
回复
CKJE+se这个字段的问题也解决了,我也做合计的语句dy_info.prg中 &m_total = &m_total + &m_vare都改为&m_total = &m_total + val(&m_vare) 转换了一下就可以了,感谢十豆三兄弟的大力帮助! 目前就是一个打印后多走纸的头痛问题,还请再多多指教,万分感谢了!
dd_2012 2013-03-01
  • 打赏
  • 举报
回复
日期也可以了,但CKJE+se这个字段估计要对它合计的原因,所以要出错,出错信息如前图 另外就是比较头疼的打印后多走纸的问题,无法连续打印单据。 客户强烈要求从98升级到xp,这些问题就都冒出来, 还好有你们的大力帮助,真心的谢谢你们!
十豆三 2013-03-01
  • 打赏
  • 举报
回复
这样试试,我未测试
日期:
Tab_type 改为 C
Tab_vare 改为 Dtoc(RQ)

CKJE+se:
Tab_type 改为 C
Tab_vare 改为 Str(CKJE+se,12,4)
cd731107 2013-03-01
  • 打赏
  • 举报
回复
CKJE+se这行有一个合计后对应的字段M_CKJE,这个M_CKJE的合计项金额也是会打印显示的
dd_2012 2013-03-01
  • 打赏
  • 举报
回复
所有的字段测试下来,只有RQ和CKJE+se这两个字段的阴影无法设置, 以及一个打印后多走纸的问题,麻烦高手了!
dd_2012 2013-03-01
  • 打赏
  • 举报
回复
请先试试这个字段CKJE+se的设置, 另外,实际客户使用的是针式打印机,纸张大小是A4纸的三分之一大小,所以走纸也比较重要 再次感谢!
dd_2012 2013-03-01
  • 打赏
  • 举报
回复
谢谢

引用 15 楼 apple_8180 的回复:
不用修改代码,只需要把 Data\dy_file.dbf 中的所有 Tab_type 为 'N' 改为 'C',对应 Tab_varc 值改为 Str(原内容,长度,小数位数)如:
原来这样:

改为这样:


原来效果:

修改后效果:

非常感谢,试过了,这个无税单价wsdj确实可以了,但是CKSL,还有CKJE+SE,可能是需要合计的原因,所以
会出错,请参考下图(另外,发现已经在XP的打印机自定义了一个打印格式2400*950,并且设为打印机默认格式,实际发现一张销售清单打印后会多走纸,以致不能连续打印,这也是头疼的一个问题,这实际是另外一个问题了,也请帮忙看看,目前分太少了,结帖时会另外另外发帖感谢的,多谢你们这些热心人的帮忙啊)
十豆三 2013-03-01
  • 打赏
  • 举报
回复
只要有阴影的,你都转成字符型即可。
十豆三 2013-03-01
  • 打赏
  • 举报
回复
不用修改代码,只需要把 Data\dy_file.dbf 中的所有 Tab_type 为 'N' 改为 'C',对应 Tab_varc 值改为 Str(原内容,长度,小数位数)如:
原来这样:

改为这样:


原来效果:

修改后效果:
WWWWA 2013-02-28
  • 打赏
  • 举报
回复
直接上传文件吧,节约时间 上传你的表单、DBF 到www.access911.net/csdn ,用WINRAR压缩
dd_2012 2013-02-28
  • 打赏
  • 举报
回复
[code=text]*** 打印表尾部分
    sele dy_file
    set filt to allt(tab_name) == m_filename .and. tab_title = '3'
    go top
    calc max(tab_xh) to file_max
    
    sele dy_info
    set filt to allt(tab_name) == m_filename .and. tab_title = '3'
    calc max(tab_xh) to info_max    
  
    m_max=max(file_max,info_max)
    rele info_max,file_max
    go top
    FOR m_ii = 0 to m_max
      loca for tab_xh = m_ii
      if !eof()
        m_font=" "
        m_info=''
        for m_kk = 1 to 9
          m_ls = 't_'+allt(str(m_kk))
          m_font1 = &m_ls
          if at('FONT',upper(m_font1)) = 0
             m_info = m_info + m_font1
          else
             *** 设字体
             m_info = m_info + spac(len(m_font1))
             m_font = 'SET PRINT '+ m_font1
             &M_FONT
          endif   
        endfor
        m_info = trim(m_info)  
        @ m_pgjs + m_ii ,0 say m_info
        
        sele dy_file
        scan for tab_xh = m_ii
          m_row  = tab_row
          m_col  = tab_col
          m_vare = allt(tab_vare)
          sele (old_sele)
          @ m_row + m_pgjs ,m_col say &m_vare
          sele dy_file
        endscan        
      endif  
      sele dy_info
    ENDFOR
        
    ejec
    sele (old_sele)
    __pg = __pg + 1
  ENDDO  
   set print font '宋体',9 STYLE 'N'
   set print off
   set devi to scre  &&将@...say 直接输出到屏幕
[/code]
dd_2012 2013-02-28
  • 打赏
  • 举报
回复
*** 打印中间部分
    sele dy_info   &&取线框
    set filt to allt(tab_name) == m_filename .and. tab_title = '2'
    go top
    m_info1=''
    m_info2=''
    m_bz=.t.
    scan
      for m_kk = 1 to 9
        m_ls = 't_'+allt(str(m_kk))
        m_font1 = &m_ls
        if at('FONT',upper(m_font1)) <> 0
           m_font = 'SET PRINT '+ m_font1
           &M_FONT
          if m_bz
            m_info1 = m_info1 + spac(len(m_font1))
          else
            m_info2 = m_info2 + spac(len(m_font1))  
          endif  
        else
          if m_bz
            m_info1 = m_info1 + m_font1
          else
            m_info2 = m_info2 + m_font1
          endif  
        endif  
      endfor
      if m_bz
        m_info1 = trim(m_info1)  
      else
        m_info2 = trim(m_info2)
      endif
      m_bz = .f.
    endscan      
    
    **  取页汇总变量名
    sele dy_file
    set filt to allt(tab_name) == m_filename .and. tab_title = '2' ;
                .and. !empty(tab_total)
    go top
    scan   && 初始化页汇总变量
      m_total  = allt(tab_total)
      &m_total = 0
    endscan              
      
    set filt to allt(tab_name) == m_filename .and. tab_title = '2'
    sele (old_sele)
    m_pgjs = prow()
    m_len = 0
    m_qdxh=qdxh
    do while !eof() .and. m_len < m_repat .and. qdxh=m_qdxh
      sele dy_file
      go top
      m_star=tab_row
      @ m_pgjs + m_star , 0 say m_info1
      scan
        m_row  = tab_row
        m_col  = tab_col
        m_vare = allt(tab_vare)+;
          iif(tab_type='N' and !empty(tab_pict)," pict '"+allt(tab_pict)+"'","")
        m_vare1= allt(tab_vare)
        m_total= allt(tab_total)
        sele (old_sele)
        @ m_row + m_pgjs , m_col say &m_vare 
        if !empty(m_total)  && 计算页汇总
          &m_total = &m_total + &m_vare1
        endif  
        sele dy_file
      endscan
      sele (old_sele)
      skip
      m_pgjs = m_pgjs + 1
      m_len  = m_len  + 1
**      if !eof() .and. m_len < m_repat   
      if m_len < m_repat      &&& 1999.11.19
        @ m_row + m_pgjs , 0 say m_info2
        if m_jamp
          m_pgjs = m_pgjs + 1
          m_len  = m_len  + 1
        endif  
      endif   
    enddo          
    
if .t.  &&& 1999.11.19
    do while m_len < m_repat
      @ m_row + m_pgjs , 0 say m_info1
      m_pgjs = m_pgjs + 1
      m_len  = m_len  + 1
      if m_len <> m_repat
        @ m_row + m_pgjs , 0 say m_info2
        m_pgjs = m_pgjs + 1
        m_len  = m_len  + 1
      endif  
    enddo
endif
dd_2012 2013-02-28
  • 打赏
  • 举报
回复
主要是调用dy_info.prg直接进行打印的,核心语句如下:
*** 打印表头部分
    m_pgjs = prow()
    sele dy_file
    set filt to allt(tab_name) == m_filename .and. tab_title = '1'
    go top
    calc max(tab_xh) to file_max
    
    sele dy_info
    set filt to allt(tab_name) == m_filename .and. tab_title = '1'
	calc max(tab_xh) to info_max    

    m_max=max(file_max,info_max)
    rele info_max,file_max
    go top
    FOR m_ii = 0 to m_max
      loca for tab_xh = m_ii
      if !eof()
        m_font=" "
        m_info=''
        for m_kk = 1 to 9
          m_ls = 't_'+allt(str(m_kk))
          m_font1 = &m_ls
          if at('FONT',upper(m_font1)) = 0
             m_info = m_info + m_font1
          else
             *** 设字体
             m_info = m_info + spac(len(m_font1))
             m_font = 'SET PRINT '+ m_font1
             &M_FONT
          endif   
        endfor
*wait wind m_font        
*        m_info = "say '"+trim(m_info)+"' "+m_font  
*        @ m_pgjs + m_ii ,0 &m_info
        @ m_pgjs + m_ii ,0  say m_info        
        sele dy_file
        scan for tab_row = m_ii
          m_row  = tab_row
          m_col  = tab_col
          m_vare = allt(tab_vare)
          sele (old_sele)
          @ m_row + m_pgjs ,m_col say &m_vare
          sele dy_file
        endscan        
      endif  
      sele dy_info
    ENDFOR
dd_2012 2013-02-28
  • 打赏
  • 举报
回复
这是老程序从win98升级到xp后碰到的一个怪问题,本人对vfp仅限于一知半解,谢谢大家的帮助!
dd_2012 2013-02-28
  • 打赏
  • 举报
回复
已上传,文件名“程序及打印问题.rar” 下载后,请根据视频文件的操作进行设置,谢谢
wwwwb 2013-02-27
  • 打赏
  • 举报
回复
没有看到报表文件,上传你的表单、DBF 报表文件 到www.access911.net/csdn ,用WINRAR压缩
aabiao 2013-02-27
  • 打赏
  • 举报
回复
应该是设置了背景颜色!
dd_2012 2013-02-27
  • 打赏
  • 举报
回复
页面格式都是一直存储在表中,是不会变的,而且用很多不同的打印机试过,情况都是这样,
非常的奇怪,请参考上面的格式
加载更多回复(4)

2,726

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧